我在我的 x86 机器上安装了 Solaris(占用 500GB 中的 100GB)。现在我已经在系统上安装了Ubuntu(另外100GB)。
我想将主要操作系统设为 Solaris。我知道必须在 中完成设置/boot/grub/menu.lst
,但实际要更新的命令是什么?当我更新菜单文件后重新启动系统时,它仅显示 Solaris 菜单,没有 Ubuntu 选项。
答案1
如果您有普通的 grub(现在开始称为 grub-legacy),更新菜单文件就足够了。每次启动时都会读取菜单,因此不需要运行任何命令。
如果您有 grub2(这是一个完全重写的且不同的野兽),那么我认为您必须运行该update-grub
命令才能使更改生效。您没有说明您使用的是哪个 Ubuntu,但我相信最新版本以 grub2 作为默认引导加载程序。
答案2
引导多个操作系统的最简单方法是使用一个操作系统的引导加载程序直接引导该操作系统并让它加载其他操作系统的引导加载程序。通常这是唯一的选择。在这里,Grub 1(Solaris 引导加载程序)和 Grub 2(Ubuntu 引导加载程序)可以加载彼此的内核,因此这也是一种选择。
要让 Solaris 的 Grub 加载 Ubuntu 的引导加载程序(这是我推荐的):
- 告诉 Ubuntu 将其引导加载程序安装在自己的分区
/dev/sda5
. (安装程序可能会警告您这是一个坏主意,因为它不会使您的系统可引导;告诉它继续,因为您正在使用不同操作系统的引导加载程序来引导您的系统,这是不寻常的。) 在 Solaris 中,为 Ubuntu 添加一个菜单项
menu.lst
文件(通常位于/boot/grub/menu.lst
,但是使用命令bootadm list-menu
查看它在您系统上的位置):title Ubuntu root (hd0,4) chainloader +1
如果您希望 Ubuntu 的引导加载程序加载 Solaris 的引导加载程序(也建议这样做,但这不利于将 Solaris 设为“主操作系统”),请将 Ubuntu 的 Grub 2 安装在引导扇区上,将 Solaris 的 Grub 1 安装在 Solaris 分区的引导扇区上。如果您在安装 Ubuntu 后修改 Solaris 的引导扇区,则在 Ubuntu 上运行sudo update-grub
一次,它将获取 Solaris 条目(可能是通用名称而不是“Solaris”)。如果update-grub
没有选择 Solaris 条目,则通过创建一个名为/etc/grub.d/31_local_solaris
以下内容的文件来手动声明它,然后运行sudo update-grub
:
#!/bin/sh
set -e
prefix=/usr
libdir=${prefix}/lib
. ${libdir}/grub/grub-mkconfig_lib
cat <<'EOF'
menuentry 'Solaris' {
EOF
save_default_entry
prepare_grub_to_access_device /dev/sda1
cat <<'EOF'
chainloader +1
}
EOF
如果您希望 Solaris 的 Grub 直接加载 Ubuntu 内核,请将其安装在引导扇区上,并将条目添加到menu.lst
Solaris 上添加条目(请参阅上文了解该文件所在的位置)。请注意,这是记录工作, 但是这里有据报道,事实并非如此(这可能取决于 Solaris 版本)。
title Ubuntu
root (hd0,4)
kernel /vmlinuz root=/dev/sda5 ro
initrd /initrd.img
title Ubuntu (single-user mode)
root (hd0,4)
kernel /vmlinuz root=/dev/sda5 ro single
initrd /initrd.img
我认为 Grub 2 目前不支持直接加载 Solaris 内核。