有两块硬盘分变装了Windows10和Ubuntu16.04,一块1T的装了Win10系统,不想装ubuntu的时候把win10的引导覆盖了,所以ubuntu装在了另外一块500G的硬盘上。结果用ubuntu引导界面选择'Windows 10 (loader) (on /dev/sda1)'启动失败结合百度来的一些方法改了grub.cfg文件终于引导启动成功。
1.启动ubuntu在查看grub.cfg文件内容
在终端中输入
gedit /boot/grub/grub.cfg
文件开头提示:这是自动生成的文件,不要直接编辑,应该修改/etc/grub.d以及/etc/default/grub下的文件然后运行 grub-mkconfig -o /boot/grub/grub.cfg 重新生成该文件,但是我看了,那两个文件,看不懂。。。
在文件中找到如下内容
### BEGIN /etc/grub.d/30_os-prober ###menuentry 'Windows 10 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-B67A5C027A5BBE35' { insmod ldm insmod ntfs set root='ldm/42290147-b94b-11e6-b3fa-708bcda81db5/Volume1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0 --hint-efi=hd0 --hint-baremetal=ahci0 --hint='ldm/42290147-b94b-11e6-b3fa-708bcda81db5/Volume1' B67A5C027A5BBE35 else search --no-floppy --fs-uuid --set=root B67A5C027A5BBE35 fi drivemap -s (hd0) ${root} chainloader +1}set timeout_style=menuif [ "${timeout}" = 0 ]; then set timeout=10fi### END /etc/grub.d/30_os-prober ###
看起来好像是grub想从ldm分区启动Windows10,先几下这段中加粗部分,Windows启动分区的uuid:B67A5C027A5BBE35
2.查找Windows10启动分区
重新启动ubuntu,在引导界面按e,再根据提示按F2,进入grub,通过ls (hd[01],msdos[123456789])找到与1中uuid对应的磁盘分区‘(hd1,msdos2)’,这是一个500M的分区,看起来像是Windows10安装时自动创建的隐藏分区,几下这个分区后按ESC退出到引导界面
3.编辑grub.cfg文件
重新进入ubuntu系统,打开终端,输入
sudo gedit /boot/grub/grub.cfg
在1中所列的代码后面加入如下代码
menuentry 'Windows 10' { insmod ntfs set root = 'hd1,msdos2' search --no-floppy --fs-uuid --set=root B67A5C027A5BBE35 chainloader +1}
保存,重启后就可以通过‘Windows 10’选项进入Windows系统
tips:网上其他方法说要在编辑完grub.cfg后运行update-grub 或者 grub-mkconfig -o /boot/grub/grub.cfg更新grub.cfg文件,但是实际情况是grub.cfg文件是根据/etc/grub.d以及/etc/default/grub下的文件自动生成的,运行更新之后,grub.cfg文件会回到最初状态。其实问题并没有完美解决,启动时会报错,但能进入Windows系统,而且我并不知道ldm分区是什么鬼,也看不懂/etc/grub.d以及/etc/default/grub的文件。还需继续努力