问题是这样的,一开始装了一个固态硬盘,然后就把Linux装在机械硬盘里了。
但是之后问题是没有出现引导界面,直接就是进入了Windows10.
十分悲催啊。
然后网上各种搜,改BIOS设置的启动。
修改之后是:
launch CSM Enable
launch PXE OpROM Enable
但是开机之后发现引导是有了,(但是发现进不了Windows了,引导里就只有Linux)
也就是Linux的引导好了,但是Windows的引导又崩了。
于是又是一波百度,最终找到了一个比较靠普的解决方案,方案如下:
首先打开shell 进入bash 输入命令 sudo update - grub
你会发现有这么一句话Found Windows 8 (loader) on /dev/sda6,但是此时候还是不要高兴的太早。
重启计算机。如果出现了Windows的引导,那么你就成功了,但是如果没有出来,不急,请看下面。
- 如果有童鞋跟作者一样
不走运的话,会遇到即使update-grub
成功识别了你分区中的windows loader而且重启计算机后在grub列表里也确实有windows选项,但点进去后仍然不
会引导windows系统,而只是黑屏一个光标不停地闪。这就很尴尬了。。。 - 但同志们不要怕!作者已经帮你们趟出一条路了!那就是:修改
grub.cfg
- 作者猜想,可能经过PE的修复,grub已经可以识别出windows的引导器了,然而由于是人工修复的windows引导,所有默认生成的
grub.cfg
中的代码并不能使grub准确找到windows loader,所以当我们选中grub列表中的windows选项后才仍然不能引导系统。 - 我们只需进入已经可以引导的ubuntu系统,唤出终端,输入
sudo su
回车,获取ROOT权限。 - 之后输入
gedit /boot/grub/grub.cfg
回车,以打开grub.cfg。作者用的是gedit编辑器,如果读者平时都是用vim那么就输入vim /boot/grub/grub.cfg
,使用什么编辑器都可以,然后我们找到cfg文件中关于windows的部分,作者的看起来像这样:
menuentry 'Windows 8 (loader) (on /dev/sda6)' --class windows --class os $menuentry_id_option 'osprober-chain-9C28EFB228EF899A' {
insmod part-msdos
insmod ntfs
set root='hd0,msdos6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos6 --hint-efi=hd0,msdos6 --hint-baremetal=ahci0,msdos6 9C28EFB228EF899A
else
search --no-floppy --fs-uuid --set=root 9C28EFB228EF899A
fi
parttool ${root} hidden-
drivemap -s (hd0) ${root}
chainloader +1
}
这一大坨是个什么玩意?反正这么写引导不了,那就改!
好在grub是个十分强大的工具,最后作者决定使用search命令修改以上片段。
如下:
menuentry 'Windows 8 (loader) (on /dev/sda6)' --class windows --class os $menuentry_id_option 'osprober-chain-9C28EFB228EF899A' {
insmod ntfs
insmod ntldr
set root='hd0,msdos6'
search --set -f /bootmgr
ntldr /bootmgr
}
建议在此之前将文件备份一下,以防万一。