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


23

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

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

有没有一种方法可以添加GRUB2菜单项(到内部硬盘驱动器上的GRUB)来引导已安装到USB闪存驱动器的Ubuntu OS,并且在升级Linux内核之后,该菜单项仍然可以使用在USB安装上?

Answers:


33

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

sudo update-grub

但是,您也可以在grub2的40_custom中添加引导节,以引导分区而不是特定内核。Ubuntu在/(根)中安装链接以引导最新的安装。如有必要,请对驱动器和分区调整以下示例。带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 
}

1
有没有办法使用分区的UUID而不是/dev/sdb1
kiri 2013年

sudo update-grub很棒,谢谢!
Sergiy Migdalskiy 2014年

2
您应该如何确定应代替(hd1,1)?您从何处获取这些数字以使其适合?我可能需要用它来解决一个不同的问题:askubuntu.com/questions/573502/…–
matt

4
第一个数字是BIOS报告的驱动器。但是启动驱动器始终为hd0,因此驱动器顺序可以更改。然后第二个数字是分区号。如果从sda驱动器引导,则sda3为hd0,3。但是,如果从sdb引导,则可能是hd1,3。有时,您只需要试验。
oldfred 2015年

sudo update-grub也可用于添加Windows条目
superl2

9

我发现了如何使用驱动器的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
}

8
这绝对不是以上问题的答案。您应该已经接受oldfred的回复。
Demis Palma a2015年

1
@kiri:复制他人的答案并为此赞誉是一种不良做法。是的,即使您添加了UUID部分。
Lennart Rolland '18

2

从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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.