如何在 UEFI 计算机上的外部驱动器(GPT)上制作便携式 Kubuntu?

如何在 UEFI 计算机上的外部驱动器(GPT)上制作便携式 Kubuntu?

问题:在外部 SSD 上安装 Kubuntu 后(创见 ESD400 512Gb) 在 UEFI 电脑上无法在另一台电脑上使用它。我尝试了几次,但都失败了。

我的电脑:UEFI、Core i7 - 4 核、Windows 7 Ultimate 64 位、2 个带 GPT 的内置驱动器、带 GPT 的外部 SSD。

Kubuntu 发行版:LiveUSB,使用 Universal USB Installer 1.9.5.4、Kubuntu 14.04 LTS 创建

外部 SSD 使用 GParted 进行分区,分区已对齐。

每次安装后,SSD 都会被格式化并重新分区。检查 GRUB:版本 2.02,EFI(不是 grub-pc)。


尝试 1:插入内部驱动器。

我从 LiveUSB 启动。执行常规安装。我的分区表:

512Mb - EFI - fat32
30Gb - / - ext4
100Gb - /home - ext4
50Gb - /usr - ext4
50Gb - /opt - ext4

引导加载程序安装在外部 SSD (/dev/sdc) 上。重启后,我ubuntu在 UEFI 中发现了 2 个启动项。如果我的外部 SSD 已插入,并且我选择了这 2 个条目中的每一个 - 一切都运行正常:Kubuntu 启动并运行。如果外部 SSD 已关闭 - 则会出现黑屏Minimal BASH-like line editing is supported。如果我选​​择UEFI TS512...(带有外部 SSD 标签的启动项),则下一个条目似乎有效(Windows Boot Manager)。

尝试2:拔下内部驱动器。

安装过程相同。重启后系统启动并运行。但插入内部驱动器后,从外部启动(ubuntuUEFI TS512...条目)时,会出现黑屏,文本光标闪烁,无法启动。如果我选​​择Windows Boot ManagerWindows,启动正常。

尝试3:尝试修改efi文件。

grubx64.efi从复制/dev/sda1dev/sdc1并重命名为bootx64.efi。没什么新内容 - 它会沿着条目列表向下直到Windows Boot Manager

尝试4:尝试修改grub.cfgfstab

在 中将/boot/grub/grub.cfg所有 替换hd2hd0。并且在fstab我更改了 EFI 分区的 UUID:之前它指向/dev/sda1,现在它指向/dev/sdc1


那么,如何在外部 SSD 上制作一个便携式系统,使其可以在每台 UEFI 计算机上启动,而不仅仅是在我的计算机上启动?

答案1

您的问题是 EFI 引导过程将数据存储在 NVRAM 中的引导加载程序位置,因此当您在一台计算机上安装然后将磁盘移动到另一台计算机时,第二台计算机不知道在哪里查找引导加载程序。解决此问题的通常方法是使用EFI/BOOT/bootx64.efiEFI 系统分区(ESP;即您的 FAT32 分区)上的默认/后备引导加载程序文件名。固件会在可移动磁盘上查找此文件名。最大的警告是您可能需要使用固件的内置引导管理器来选择该磁盘,并且如何访问该引导管理器的详细信息因计算机而异。

您可以手动将引导加载程序复制到该位置。对于正常运行的 Ubuntu 安装,最有可能奏效的方法是:

cd /boot/efi/EFI
sudo mkdir -p BOOT
sudo cp ubuntu/shimx64.efi BOOT/bootx64.efi
sudo cp ubuntu/grubx64.efi BOOT/grubx64.efi

请注意,这些命令将覆盖任何现有的EFI/BOOT/bootx64.efi引导加载程序。你现在的外部磁盘上可能没有引导加载程序,但你可能需要仔细检查一下。此外,这假设外部的磁盘安装在/boot/efi。在继续操作之前,您一定要仔细检查一下df。您不想覆盖您计算机上的引导加载程序内部的磁盘意外!

如果您确定要在禁用安全启动的情况下进行启动,则可以复制EFI/ubuntu/grubx64.efiEFI/BOOT/bootx64.efi,但如果目标计算机已启用安全启动,则此方法将不起作用。

相关内容