我不是在问如何从 USB 启动 LiveCD。
我有 2 个 Ubuntu 安装,一个在我计算机的内部硬盘驱动器上,另一个在 USB 驱动器上。
有没有办法添加一个 GRUB2 菜单条目(到我内部硬盘驱动器上的 GRUB)来启动我安装到 USB 闪存驱动器的 Ubuntu 操作系统,并且在我升级 Linux 内核后,这个相同的菜单条目仍然有效在USB安装?
old*_*red 36
每次在外部升级内核时,您都可以运行它来更新内部驱动器上 grub 中的引导节。
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
但是您也可以在 grub2 的 40_custom 中添加一个引导节来引导分区,而不是特定的内核。Ubuntu 在 / (root) 中安装链接以启动最近的安装。如有必要,请根据您的驱动器和分区调整以下示例。使用 grub 的引导驱动器始终为 hd0,但其他驱动器的 BIOS 报告顺序可能会有所不同。
编辑:
gksudo gedit /etc/grub.d/40_custom
Run Code Online (Sandbox Code Playgroud)
然后加:
menuentry "Install on sdb1" {
set root=(hd1,1)
linux /vmlinuz root=/dev/sdb1 ro quiet splash
initrd /initrd.img
}
Run Code Online (Sandbox Code Playgroud)
虽然上述工作正常,但我发现插入闪存驱动器或任何其他 USB 设备时驱动器可能会发生变化。所以我正在转换为使用标签。
menuentry "Cosmic 18.10 on sdb12 test" {
search --set=root --label cosmic_b --hint hd2,gpt12
configfile /boot/grub/grub.cfg
}
Run Code Online (Sandbox Code Playgroud)
kir*_*iri 13
我发现了如何使用驱动器的 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
}
Run Code Online (Sandbox Code Playgroud)
要从 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
}
Run Code Online (Sandbox Code Playgroud)
要应用更改,请运行:
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
138572 次 |
| 最近记录: |