我有一台运行 Oracle Solaris 和 Gentoo Linux 的笔记本电脑。
首先我安装了 Gentoo Linux。我使用GPT分区方案。为了启动 Gentoo Linux,我有 GRUB 2。
然后我安装了Solaris 11.1。现在 Solaris 的 GRUB 覆盖了 Gentoo Linux 的 GRUB,并且它没有检测到它,所以目前我的引导菜单中只有 Solaris。
我想做的是修改 Solaris 的 GRUB 配置,以便通过链式加载进行双引导,因为 Solaris 的 GRUB 不支持 ext2 文件系统。
不幸的是,有关 GRUB 的 Solaris 文档是这里,没有给出有关 Linux 的示例 - 仅提供 Windows。
所以我创建了/rpool/boot/grub/custom.cfg
:
root@solaris:/rpool/boot/grub# cat custom.cfg
menuitem "Gentoo" {
insmod gpt_part
insmod chain
set root=(hd0,ext2)
chainload --force +1
}
然后重新启动。
当 GRUB 启动时,我只看到 Solaris 菜单。
我是否需要在 Gentoo Linux 上运行一些额外的命令才能使 GRUB 配置生效?
在 Solaris 上,我在文档中没有看到类似的内容。
我缺少什么?至少菜单项“Gentoo”应该在 GRUB 中可见。
GRUB配置/rpool/boot/grub/grub.cfg
:
igor@solaris:~/Broadcom$ cat /rpool/boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /usr/lib/grub2/bios/etc/grub.d and settings from /usr/lib/grub2/bios/etc/default/grub
#
### BEGIN /usr/lib/grub2/bios/etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
insmod vbe
}
if loadfont "/@/boot/grub/unicode.pf2" ; then
set gfxmode="1024x768x32;1024x768x16;800x600x16;640x480x16;640x480x15;640x480x32"
load_video
insmod gfxterm
set locale_dir=($root)${prefix}/locale
set lang=en_US
insmod gettext
fi
terminal_output gfxterm
insmod part_gpt
insmod zfs
set root=''
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root e71191bc1127be5c
else
search --no-floppy --fs-uuid --set=root e71191bc1127be5c
fi
insmod gfxmenu
loadfont ($root)//@/boot/grub/themes/solaris/liber18.pf2
loadfont ($root)//@/boot/grub/themes/solaris/univers16.pf2
loadfont ($root)//@/boot/grub/themes/solaris/univers20.pf2
insmod jpeg
insmod png
set theme=($root)//@/boot/grub/themes/solaris/theme.txt
set timeout=30
### END /usr/lib/grub2/bios/etc/grub.d/00_header ###
### BEGIN /usr/lib/grub2/bios/etc/grub.d/10_solaris ###
menuentry "Oracle Solaris 11.1" {
insmod part_msdos
insmod part_sunpc
insmod part_gpt
insmod zfs
search --no-floppy --fs-uuid --set=root e71191bc1127be5c
zfs-bootfs /ROOT/solaris/@/ zfs_bootfs
set kern=/platform/i86pc/kernel/amd64/unix
echo -n "Loading ${root}/ROOT/solaris/@$kern: "
$multiboot /ROOT/solaris/@/$kern $kern -B console=graphics -B $zfs_bootfs
set gfxpayload="1024x768x32;1024x768x16;800x600x16;640x480x16;640x480x15;640x480x32"
insmod gzio
echo -n "Loading ${root}/ROOT/solaris/@/platform/i86pc/amd64/boot_archive: "
$module /ROOT/solaris/@/platform/i86pc/amd64/boot_archive
}
if [ "$target" = "i386_pc" ]; then
search --no-floppy --fs-uuid --set=root_rpool e71191bc1127be5c
if [ -s "($root_rpool)/@/boot/grub/menu.lst" ]; then
submenu "Legacy GRUB Menu (from root pool rpool)" "($root_rpool)/@/boot/grub/menu.lst" {
extract_legacy_entries_source "$2"
}
fi
fi
### END /usr/lib/grub2/bios/etc/grub.d/10_solaris ###
### BEGIN /usr/lib/grub2/bios/etc/grub.d/41_custom ###
if [ -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /usr/lib/grub2/bios/etc/grub.d/41_custom ###