Liv*_*eBT 9 grub2 external-hdd uefi
看起来UEFI 无法将 Ubuntu 安装到外部硬盘驱动器,而与 MBR 一样,外部和内部之间没有太大区别。这是真的还是有可能?
甚至可以结合两种启动方法吗?
Liv*_*eBT 14
这实际上是可能的。
在我继续之前,这些说明适用于空白 EFI 系统分区 (ESP),并且可能会覆盖现有文件,或者无法按预期工作。至少做好备份!
平台:传统 PC、基于 UEFI 的 Windows 计算机、Apple 计算机
您需要按照其他安装或实时媒体中的这些说明进行操作。
安装grub-efi-amd64-bin
软件包。这只会安装所需的资源。它不会将您现有的 MBR 样式安装切换到 UEFI 并将事情颠倒过来。
在GParted 中缩小 Ubuntu 分区,为 ESP 腾出空间。ESP 的推荐大小范围为 100 MB 到 500 MB,但按照此处的这些说明创建的文件不需要超过 2 到 5 MB。
注意:ESP 在磁盘上的位置无关紧要,将 Ubuntu 分区从最后缩小几兆应该是快速且安全的。一开始缩水是不安全的。但需要注意的是,您的 ESP 应该是主分区,而不是扩展分区或逻辑卷的一部分,从 1 到 4 的分区号很好,上面的数字表示 MBR 分区表上的扩展分区。
选择 FAT32 作为文件系统并设置引导标志。
挂载您刚刚创建的 ESP 和您缩小的根文件系统:
mkdir -p /mnt/esp
mount $esp_device /mnt/esp
mkdir -p /mnt/rootfs
mount $root_device /mnt/rootfs
Run Code Online (Sandbox Code Playgroud)
注意:用适当的设备替换
$esp_device
和$root_device
,例如和。该挂载点,并有选择工作,这个答案的其余部分只是一个例子。/dev/sdb2
/dev/sdb1
/mnt/esp
/mnt/rootfs
使用以下命令安装 GRUB 的 EFI 映像和最小配置文件:
grub-install --efi-directory /mnt/esp --boot-directory /mnt/rootfs/boot --target x86_64-efi --removable $device
Run Code Online (Sandbox Code Playgroud)
请注意,这
$device
是整个设备,例如/dev/sdb
,不是分区。
就是这样,我们已经完成了,但让我尝试解释一些事情。
该参数--target x86_64-efi
将确保 UEFI 映像和模块将安装到给定的路径。--removable
将 UEFI 映像安装到\EFI\BOOT\BOOT{arch}.EFI
可移动媒体的硬编码路径,而不是分发特定路径。您的grub.cfg
in/boot/grub/
应该可以使用这两种引导方法,并且x86_64-efi
现在应该在i386-pc
.
为完整起见,这是用于写入并依赖平台中 NVRAM 条目的不可移动媒体的命令:
grub-install --efi-directory /mnt/esp --boot-directory /mnt/rootfs/boot --target x86_64-efi --bootloader-id "Ubuntu" $device
Run Code Online (Sandbox Code Playgroud)
正确的 UEFI 安装包括类似于下面 中的一行/etc/fstab
,但设置可以正常运行,并且 UEFI 映像(类似于 MBR 引导加载程序)通常仅在操作系统安装期间写入/更新。
UUID=1234-567F /boot/efi vfat defaults 0 1
Run Code Online (Sandbox Code Playgroud)将ESP添加到 GPT 分区驱动器上的旧安装与上述非常相似:
grub-efi-amd64-bin
软件包。boot
标志,创建一个具有 FAT32 文件系统的分区,类似于上述说明。grub-install
从上面运行包含--removable
参数的命令。如果您只想在另一台计算机上启动现有的 UEFI 安装,这也适用。
为 GRUB创建BIOS 可引导分区(BBP) 有点不同:
安装grub-pc-bin
软件包。
通过调整根分区的大小并设置bios_grub
标志,创建一个类似于上述说明的分区。不选择文件系统并保持未格式化。
/etc/default/grub
使用管理权限编辑配置文件并添加GRUB_DEVICE=/dev/sdb6
到最后。替换/dev/sdb6
为您 BBP 的实际设备名称。您可以使用命令行编辑器nano使事情变得简单。
使用以下命令将 GRUB MBR 映像安装到 BBP:
grub-install --boot-directory /mnt/test/boot/ --target i386-pc $device
Run Code Online (Sandbox Code Playgroud)
您可能希望删除或注释掉该行/etc/default/grub
并将其添加到实际安装中。
我发现我正在测试的全新 Mac(Mac Mini A1347 EMC 2840)可以从标准的 FAT32 ESP 启动,甚至可以从 MBR 启动!无论如何,我们开始:
安装grub-efi-amd64-bin
,hfsprogs
,mactel-boot
和mactel-boot-logo
(可选)封装。您需要启用Universe存储库(如何从命令行启用“Universe”存储库?)并添加当前的Mactel 支持 PPA(有关更多详细信息,请参阅Mactel 支持社区团队)以安装所有这些存储库。
通过调整根分区的大小,创建一个具有 HFS+ 文件系统的分区,类似于上述说明。这次我们需要多出几兆字节的空间,因此如果您之前只有 5 兆字节或更少的空间,请将 ESP 的大小加倍。不需要标志。
挂载分区:
mkdir -p /mnt/esp-mac
mount $esp-mac_device /mnt/esp-mac
mkdir -p /mnt/rootfs
mount $root_device /mnt/rootfs
Run Code Online (Sandbox Code Playgroud)
注意:我选择了
$esp-mac_device
和/mnt/esp-mac
以避免冲突。
运行grub-install
包含--removable
参数的命令:
grub-install --efi-directory /mnt/esp-mac --boot-directory /mnt/rootfs/boot --target x86_64-efi --removable $device
Run Code Online (Sandbox Code Playgroud)
最后按照 Mac 期望的方式设置分区:
sudo hfs-bless /mnt/esp-mac/EFI/BOOT/bootx64.efi
sudo cp -v /mnt/esp-mac/EFI/BOOT/bootx64.efi /mnt/esp-mac/System/Library/CoreServices/boot.efi
sudo cp -v /mnt/esp-mac/EFI/BOOT/grub.cfg /mnt/esp-mac/System/Library/CoreServices/grub.cfg
sudo cp -v /usr/share/mactel-boot/SystemVersion.plist /mnt/esp-mac/System/Library/CoreServices/SystemVersion.plist
sudo cp -v /usr/share/mactel-boot-logo/ubuntu.icns /mnt/esp-mac/.VolumeIcon.icns
echo "Dummy kernel for booting" | sudo tee /mnt/esp-mac/mach_kernel
Run Code Online (Sandbox Code Playgroud)
要在 Mac 上从外部媒体启动 Ubuntu,您现在只需要按选项键 ?或Alt在 Windows 键盘上选择正确的磁盘。
为了尽可能准确,引导标志对 GRUB 并不重要,默认情况下 GRUB 搜索 UUID 以找到正确的文件系统来引导。在 GParted 中设置引导标志或 bios_grub 标志通常会为分区设置类型 (MBR) 或 GUID (GPT)。
设置正确的类型或 GUID 的好处是,除了具有正常工作的设置之外,这些分区将隐藏在文件管理器中。检查和更改类型和 GUID 的最简单方法是通过磁盘( gnome-disks
)。
或者,您可以使用 parted 或 gdisk:
parted
根据手册中的命令行等效项是parted $device set partition esp on
和parted $device set partition bios_grub on
。
归档时间: |
|
查看次数: |
16042 次 |
最近记录: |