我正在尝试为 20.04 创建可启动的 USB 驱动器。如果我下载 20.04 映像,我可以正确启动驱动器。但是,如果我将所有 20.04 内容提取到一个目录,然后重新创建 ISO 并将其 dd 到驱动器,则生成的驱动器将无法启动。我的 zbook 只是发出哔哔声并返回到启动菜单。我从几篇文章中获得了创建 ISO 的命令。但我确信它必须是创建的 ISO 本身。有什么想法吗?
答案1
制作可启动 USB 闪存盘的方法有很多种
以下方法将 ISO 的内容提取到分区
制作使用持久分区的 Grub2 启动程序很容易。*
- 启动已安装的 Ubuntu 或 Live USB。
- 插入目标 USB。
- 启动 GParted。
- 在目标 USB 上创建 GPT 分区表。
- 在左侧创建一个1MB的BIOS启动分区,格式化为未格式化。
- 在其旁边添加一个 300MB FAT32 EFI 启动分区。
- 添加一个足够大的 ext4 根分区以容纳 Ubuntu ISO 的内容(20.04 约为 3GB)。
- 创建标记为 casper-rw 的 ext4 分区
- 如果需要,添加 NTFS 数据分区。
- 应用所有操作。
- 标志分区 1 bios_grub。
- 标记分区 2 启动,特别是
- 关闭 GParted。
以管理员身份打开 ISO 的文件夹,使用档案管理器打开 ISO。
将 ISO 的内容提取到目标的根分区。
将启动和 EFI 文件夹从存档管理器窗口拖放到 EFI 启动分区。
编辑 sdx2/boot/grub/grub.cfg,在第一行以 开头的行后添加 set root=(hd0,3)
menuentry
。在---后添加一个空格和单词“persistent”。
set timeout=5 menuentry "Ubuntu persistent" { set root=(hd0,3) set gfxpayload=keep linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --- persistent initrd /casper/initrd }
安装 grub,如果处于 BIOS 模式或从 USB 驱动器启动,请运行:
sudo mount /dev/sdx2 /mnt sudo grub-install --boot-directory=/mnt/boot /dev/sdx
如果已安装系统处于 UEFI 模式,则启动到目标驱动器并运行上述程序。
*基于 sudodus 的 mkusb 进行引导
制作可启动 USB 的另一种方法是直接启动 ISO 文件
答案2
总结当你从提取的文件重新创建 ISO 时,你没有(正确地)传输 BIOS 启动块,也没有传输 EFI 系统分区,或者ESP,复制到新创建的 USB 驱动器。因此,系统将无法从该磁盘启动。
问题
加载引导加载程序
系统固件不知道如何启动驱动器上的操作系统,而是将这个责任交给一个名为引导加载程序。它存储在磁盘上的指定位置,以便固件可以轻松找到它。引导加载程序的存储位置取决于固件用于引导磁盘的方法。目前在 x86-64 平台上使用两种不同的引导方法,即现代 EFI 和传统 BIOS 引导。
我假设您的 HP Z-Book 足够新,既支持 x86-64,又支持 EFI 启动。您将能够在系统固件的设置实用程序中启用旧版 BIOS 支持,尽管这在其他笔记本电脑上可能有所不同,并且可能会因较新的笔记本电脑而有所变化。
EFI 系统分区 (ESP)
基于 x86-64 EFI 的固件通过在特殊的 FAT32 格式分区上查找名为 的文件/efi/boot/bootx64.efi
(大小写无关紧要)来加载引导加载程序,该分区的类型为0xEF
或 ,EFI System Partition (ESP)
位于所选的启动磁盘上。某些 BIOS 还可以(显然)从 NTFS 文件系统启动。
大多数 Linux 发行版(包括 Ubuntu)现在都分发了符合 El Torrito 标准的磁盘映像。这意味着同一磁盘可以在其各自的启动模式下由旧版 BIOS 或基于 EFI 的现代固件启动。当您提取或安装磁盘时(即从文件管理器 GNOME Files),EFI 分区将作为单独的efi.img
文件保留,但这实际上是不是从此 ISO 文件刻录的 CD/DVD 上的磁盘排列方式。
因此,当文件复制到 USB 驱动器时,系统固件无法将此文件识别为有效的 EFI 系统分区。驱动器被固件拒绝,因为它不相信磁盘可启动。
解决问题
您可以使用 GNOME 磁盘、GParted 或命令行工具(如)创建 EFI 系统分区。gdisk
新分区必须具有 ESP 类型,并且必须格式化为 FAT32。
必须将的内容efi.img
提取到efi
目标磁盘上名为的文件夹中,以便出现在磁盘根目录的bootx64.efi
路径中。/efi/boot/bootx64.efi
ISO 的其余部分可以提取到同一个分区,Rufus 等工具就是这样做的。但是,大多数 Linux 发行版通常需要一个额外的步骤:文件系统标签通常用于识别要从哪个磁盘启动,因此文件系统的标签必须与 ISO 文件中的标签相匹配。否则(例如,对于 Ubuntu),内核将无法找到 SquashFS 根文件系统以继续启动。