问题:在外部 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:拔下内部驱动器。
安装过程相同。重启后系统启动并运行。但插入内部驱动器后,从外部启动(ubuntu
和UEFI TS512...
条目)时,会出现黑屏,文本光标闪烁,无法启动。如果我选择Windows Boot Manager
Windows,启动正常。
尝试3:尝试修改efi文件。
grubx64.efi
从复制/dev/sda1
到dev/sdc1
并重命名为bootx64.efi
。没什么新内容 - 它会沿着条目列表向下直到Windows Boot Manager
。
尝试4:尝试修改grub.cfg
和fstab
。
在 中将/boot/grub/grub.cfg
所有 替换hd2
为hd0
。并且在fstab
我更改了 EFI 分区的 UUID:之前它指向/dev/sda1
,现在它指向/dev/sdc1
。
那么,如何在外部 SSD 上制作一个便携式系统,使其可以在每台 UEFI 计算机上启动,而不仅仅是在我的计算机上启动?
答案1
您的问题是 EFI 引导过程将数据存储在 NVRAM 中的引导加载程序位置,因此当您在一台计算机上安装然后将磁盘移动到另一台计算机时,第二台计算机不知道在哪里查找引导加载程序。解决此问题的通常方法是使用EFI/BOOT/bootx64.efi
EFI 系统分区(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.efi
到EFI/BOOT/bootx64.efi
,但如果目标计算机已启用安全启动,则此方法将不起作用。