当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

我不是在问如何从 USB 启动 LiveCD。

我有 2 个 Ubuntu 安装,一个在我计算机的内部硬盘驱动器上,另一个在 USB 驱动器上。

有没有办法添加一个 GRUB2 菜单项(到我内部硬盘上的 GRUB)来启动我已经安装到 USB 闪存驱动器的 Ubuntu 操作系统,并且在我升级 Linux 内核后这个相同的菜单项仍然有效关于USB安装?

最佳答案

每次在外部升级内核时,都可以运行它来更新内部驱动器上 grub 中的引导节。

sudo update-grub

但是您也可以在 grub2 的 40_custom 中添加一个引导节来引导分区,而不是特定的内核。 Ubuntu 在 /(root) 中安装链接以引导最近的安装。如果需要,请根据您的驱动器和调整以下示例分割。带有 grub 的引导驱动器始终是 hd0,但其他驱动器在 BIOS 报告的顺序中可能会有所不同。

编辑:

gksudo gedit /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。\n更改示例以显示 /boot

虽然上述工作正常,但我发现插入闪存驱动器或任何其他 USB 设备时驱动器可能会发生变化。所以我正在转换为使用标签。

menuentry "Cosmic 18.10 on sdb12 test" {
    search --set=root --label cosmic_b --hint hd2,gpt12
    configfile /boot/grub/grub.cfg 
}

次佳答案

我发现了如何使用驱动器的 UUID,如果您在启动时插入了多个驱动器,这很有用。感谢 oldfred 关于 /vmlinux/initrd.img 符号链接的注释。

将此添加到文件 /etc/grub.d/40_custom 中,将 UUID=XXXX-YYYY 替换为分区 UUID(使用命令 blkid 获取 UUID)

menuentry "Boot from USB Drive" {
    set root=UUID=XXXX-YYYY
    linux /vmlinuz root=UUID=XXXX-YYYY ro quiet splash
    initrd /initrd.img
}

第三种答案

要从 /etc/grub.d/40_custom 中的 Ubuntu Live USB 菜单项启动,应如下所示(将 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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12977.html,未经允许,请勿转载。