如何添加 GRUB2 菜单项以启动 USB 驱动器上安装的 Ubuntu?

如何添加 GRUB2 菜单项以启动 USB 驱动器上安装的 Ubuntu?

我并不是问如何从 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

相关内容