我并不是问如何从 USB 启动 LiveCD。
我有 2 个 Ubuntu 安装,一个在我电脑的内置硬盘上,另一个在 USB 驱动器上。
有没有办法添加 GRUB2 菜单项(到我内置硬盘上的 GRUB)来启动我已安装到 USB 闪存驱动器的 Ubuntu 操作系统和在 USB 安装上升级 Linux 内核后,这个相同的菜单项是否仍然有效?
答案1
每次在外部升级内核时,您都可以运行此程序来更新内部驱动器上 grub 中的启动节。
sudo update-grub
但是您也可以向 grub2 的 40_custom 添加一个启动节,用于启动分区,而不是特定内核。Ubuntu 在 /(根)中安装链接以启动最新安装。如有必要,请根据您的驱动器和分区调整下面的示例。使用 grub 启动的驱动器始终是 hd0,但其他驱动器按 BIOS 报告的顺序排列,可能会有所不同。
編輯:
sudoedit /etc/grub.d/40_custom
然后加:
menuentry "Install on sdb1" {
set root=(hd1,1)
linux /boot/vmlinuz root=/dev/sdb1 ro quiet splash
initrd /boot/initrd.img
}
更新:较旧的安装将链接放在 / 中,但较新的安装现在使用 /boot。已将示例更改为显示 /boot
虽然上述方法有效,但我发现插入闪存驱动器或任何其他 USB 设备时驱动器可能会发生变化。因此,我改用标签。
menuentry "Cosmic 18.10 on sdb12 test" {
search --set=root --label cosmic_b --hint hd2,gpt12
configfile /boot/grub/grub.cfg
}
另一个使用配置文件在 sda10 上安装时加载 grub 的示例:
menuentry "Ubuntu 22.04 jammy /dev/sda10)" {
search --set=root --label jammy_a
#search.label jammy_b root -hint hd1,gpt10
configfile /boot/grub/grub.cfg
}
答案2
我找到了如何使用驱动器的 UUID,如果在启动时插入了多个驱动器,这将非常有用。感谢 oldfred 提供的有关/vmlinux
和/initrd.img
符号链接的注释。
将其添加到文件中/etc/grub.d/40_custom
,替换UUID=XXXX-YYYY
为分区 UUID(使用命令获取 UUID blkid
)
menuentry "Boot from USB Drive" {
set root=UUID=XXXX-YYYY
linux /vmlinuz root=UUID=XXXX-YYYY ro quiet splash
initrd /initrd.img
}
答案3
要从 Ubuntu Live USB 菜单项启动,/etc/grub.d/40_custom
应该看起来像这样(替换DRIVE_UUID
为你的分区的 uuid):
menuentry "Boot from LIVE USB Drive" {
search --set=root --fs-uuid DRIVE_UUID
linux ($root)/casper/vmlinuz boot=casper quiet splash --
initrd ($root)/casper/initrd.lz
}
要应用更改,请运行:
sudo update-grub