ubuntu和win10双系统,用ubuntu引导win10启动

旧时模样 提交于 2020-05-08 06:27:41

有两块硬盘分变装了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=menu
if [ "${timeout}" = 0 ]; then
  set timeout=10
fi
### 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的文件。还需继续努力

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!