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

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

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

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

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

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 /vmlinuz root=/dev/sdb1 ro quiet splash initrd /initrd.img } 

虽然上面的工作,我发现插入闪存驱动器或任何其他USB设备时驱动器可能会更改。 所以我转换为使用标签。

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

我发现了如何使用驱动器的UUID,如果在启动时插入了多个驱动器,则非常有用。 关于/vmlinux/initrd.img符号链接的注释,为oldfred致记。

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

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