我正在 1TB USB 外置硬盘上的 ubuntu 16.04 中编写此内容。它在这台笔记本电脑上运行良好,但当我尝试从任何其他计算机的 UEFI 启动菜单启动时,该驱动器显示为外置 HDD,但选择后,不会启动 Linux,而是启动回计算机上的 Windows 操作系统。我已启用 USB 启动并禁用安全启动以查看是否是该问题,但问题并未解决。
有趣的一点:当我启动没有连接 USB 的笔记本电脑(将运行 Linux)时,由于上次运行的是 Linux,我仍然会看到初始 grub 菜单。也许我的外部驱动器没有正确的启动/grub 信息,无法在另一台计算机上工作?也许这些信息只存储在我的笔记本电脑上?
外部驱动器分区如下:
- 适用于所有 Linux 文件的 ext4 系统(无标志)
- linux-swap 文件系统(无标志,显示 0 使用率)
- ntfs 文件系统,供我用于存储其他文件、Windows 文件等。
我想要做的是能够将我的外部硬盘插入任何计算机并运行 Linux 发行版。有人能帮我让我的发行版可移植吗?
答案1
在尝试任何修复之前,请务必备份您的信息。
您的假设是正确的。当您安装 Ubuntu 时,它会将 grub 安装到内部硬盘的 EFI 分区。为了使外部驱动器可启动,它需要一个安装了 grub 的 EFI 系统分区。通常,此分区是驱动器上的第一个分区。但是,移动根分区可能会导致启动错误。
如果重新安装是一个可行的选择
重新分区外部硬盘。删除 Linux 分区,然后创建一个 500MB 的分区,格式为 FAT32,标记为 ESP(Efi 系统分区)。将剩余空间用于格式化为 Ext4 的 Linux 分区。结果应该是:
- EFI 分区 500MB 格式化为 FAT32 并标记为 ESP
- Linux 分区格式化为 Ext4,无标志
- 交换分区格式化 swap 无标志
- NTFS 分区
然后重新安装 Ubuntu。使用手动分区选项选择预先创建的分区。确保内部驱动器的 EFI 分区设置为“不使用”。
启动外部驱动器需要使用默认媒体路径。启动 LiveCD,并在外部驱动器上安装 EFI 分区(您可能需要暂时删除 ESP 标志才能执行此操作)。复制EFI/ubuntu/shimx64.efi
到EFI/boot
然后重命名bootx64.efi
。卸载 EFI 分区并设置 ESP 标志(如果必须删除它)。
尝试修复当前安装
从 LiveCD 启动,并使用gparted
将 Linux 分区缩小 500MB。使用可用空间创建一个新分区,将其格式化为 FAT32,并将其标记为 ESP。记录新分区的 UUID。
挂载你的 Linux 分区。编辑etc/fstab
。查找类似以下内容的行:
# /boot/efi was on /dev/sda1 during installation
UUID=BB1E-83B5 /boot/efi vfat umask=0077 0 0
将 UUID 替换为新的 EFI 分区的 UUID。
接下来,安装两个驱动器的 EFI 分区(您可能需要暂时删除 ESP 标志)。/efi/ubuntu/shimx64.efi
从内部驱动器复制到/efi/boot/
外部驱动器,然后将其重命名为bootx64.efi
。注意:您必须在外部驱动器上创建文件夹。
修复后
最后,挂载内置驱动器的 EFI 分区。删除文件夹/EFI/ubuntu
。重新启动并在启动时按下相应的功能键打开系统设置。更改启动顺序,使 USB HDD 位于内置驱动器之前。
现在,当外部设备连接时,您应该启动 Linux,当外部设备未连接时,您应该启动 Windows。