问题

问题

我正在尝试为 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 文件

用于引导 ISO 文件的 BIOS/UEFI 模板映像

答案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 根文件系统以继续启动。

答案3

在 Ubuntu 20 中执行此操作的一种非常简单的方法是:

右键单击您的 .iso 文件。使用其他应用程序打开。选择 Disk Image Writer 使用磁盘映像写入器打开。

当要求恢复磁盘映像时,选择您的 USB 目标

将 ISO 还原到 USB 单击“开始恢复”。

这就是全部了!!

相关内容