有兩塊硬盤分變裝了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的文件。還需繼續努力
