歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 安裝 Ubuntu 後 Grub 開機選項中的 Fedora 不見了

安裝 Ubuntu 後 Grub 開機選項中的 Fedora 不見了

日期:2017/2/28 15:46:05   编辑:Linux教程

原本因為工作的關系, 裝了 Fedora 17 測試, 想說干脆試用看看, 不過使用了一段時間後, 還是不習慣, 所以又安裝了 Ubuntu 12.04 版, 沒想到安裝完後怎麼原本 Grub2 開機選項中的 Fedora 不見了?即使在 Ubuntu 中利用 update-grub 重新產生了 /boot/grub/grub.cfg, 仍然就是沒有看到 Fedora 出現。

為了一探究竟, 把安裝 Fedora 的分區掛載起來看了一下, 奇怪, 怎麼 /boot/grub 下沒有 grub.cfg 檔?又注意到了 /boot 下有另一個 grub2 目錄, 裡頭有 grub.cfg 文件, 難不成就是這個原因?沒辦法, 死馬當活馬醫, 既然這裡有 grub.cfg 檔, 我就在 Ubuntu 下幫 Grub2 新增一個項目, 從這個 grub.cfg 文件復制 Fedora 開機內容試看看了。

以下是 Fedora 下 /boot/grub2/grub.cfg 中有關第一個選項 (預設就是啟動 Fedora) 的內容:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Fedora Linux' --class fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-33f4c026-0cb9-4b61-bf8d-17b4b8779488' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos8'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos8 --hint-efi=hd0,msdos8 --hint-baremetal=ahci0,msdos8 --hint='hd0,msdos8' 33f4c026-0cb9-4b61-bf8d-17b4b8779488
else
search --no-floppy --fs-uuid --set=root 33f4c026-0cb9-4b61-bf8d-17b4b8779488
fi
echo 'Loading Linux 3.3.4-5.fc17.x86_64 ...'
linux /boot/vmlinuz-3.3.4-5.fc17.x86_64 root=UUID=33f4c026-0cb9-4b61-bf8d-17b4b8779488 ro rd.md=0 rd.lvm=0 rd.dm=0 SYSFONT=True KEYTABLE=us rd.luks=0 LANG=en_US.UTF-8 rhgb quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-3.3.4-5.fc17.x86_64.img
}
只要把這一段復制下來, 貼到 /etc/grub.d/ 下預設提供給我們當范本的 40_custom 檔案中即可 (用貼的最方便, 不然還得研究 Grub2 的指令, 也容易出錯):

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry 'Fedora Linux' --class fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-33f4c026-0cb9-4b61-bf8d-17b4b8779488' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos8'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos8 --hint-efi=hd0,msdos8 --hint-baremetal=ahci0,msdos8 --hint='hd0,msdos8' 33f4c026-0cb9-4b61-bf8d-17b4b8779488
else
search --no-floppy --fs-uuid --set=root 33f4c026-0cb9-4b61-bf8d-17b4b8779488
fi
echo 'Loading Linux 3.3.4-5.fc17.x86_64 ...'
linux /boot/vmlinuz-3.3.4-5.fc17.x86_64 root=UUID=33f4c026-0cb9-4b61-bf8d-17b4b8779488 ro rd.md=0 rd.lvm=0 rd.dm=0 SYSFONT=True KEYTABLE=us rd.luks=0 LANG=en_US.UTF-8 rhgb quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-3.3.4-5.fc17.x86_64.img
}
要特別注意前兩行不能改, 只要把剛剛復制的內容貼到 # 開頭的註解行之後即可, 接著再使用 update-grub 指令, 就可以看到這次居然自動找到 Fedora 了:

www.linuxidc.com @ www.linuxidc.com:~$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-26-generic
Found initrd image: /boot/initrd.img-3.2.0-26-generic
Found linux image: /boot/vmlinuz-3.2.0-23-generic
Found initrd image: /boot/initrd.img-3.2.0-23-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 8 (loader) on /dev/sda1
Found Fedora release 17 (Beefy Miracle) on /dev/sda8
done
接著只要重新開機, 就可以看到開機選單上反而出現了兩個 Fedora 17 的選項, 一個是剛剛我自己加上去, 由 40_custom 自訂的選項, 另一個就是剛剛經由 update-grub 指令, 透過 OS-Prober 自動找到的。雖然兩個選項都可以啟動 Fedora, 不過過程的顯示內容不大一樣, OS-Prober 自動找到的選項啟動過程多是文字, 最後才進入繪圖模式, 從原本 Fedora 的設定檔復制過來的選項開機過程很早就進入繪圖模式, 比較美觀。

後來發現, 其實只要把安裝 Fedora 17 的分區掛載起來, OS-Prober 的動作就可以自動找到 Fedora 了。另外, 我不知道為甚麼 Fedora 要改將 grub.cfg 放到 /boot/grub2 下, 但根據 Fedora 的文件, 的確是特意如此。

GNU Grub2 的官方文件在這裡, 提供參考 (不過比較難閱讀)。

Copyright © Linux教程網 All Rights Reserved