如何创建一个可用作可启动 ubuntu.iso 的多分区 USB 驱动器?

如何创建一个可用作可启动 ubuntu.iso 的多分区 USB 驱动器?

这个老问题听起来就像我想要的:将 ubuntu.iso 复制到具有两个分区的 USB 驱动器

它被标记为重复:如何将 Ubuntu 安装到 USB 密钥?(不使用启动盘创建器)

但所有答案都回答了一个不同的问题,如何创建具有多个分区的可启动 USB。

我不想要一个可以简单启动的东西;我想要一个可用于安装Ubuntu(如果我过去只是dd复制 iso,我就会得到这个),但是 USB 应该除了 iso 中的内容之外,还有一个或多个可写分区。

答案1

另一个可能的解决方案是使用文图伊。直接从工具描述来看:

Ventoy 是一个开源工具,用于为 ISO/WIM/IMG/VHD(x)/EFI 文件创建可启动的 USB 驱动器。使用 ventoy,您无需反复格式化磁盘,只需将映像文件复制到 USB 驱动器并启动它即可。您可以一次复制多个 iso 文件,ventoy 将为您提供启动菜单以供选择。传统 BIOS 和 UEFI 均以相同的方式受支持。MBR 和 GPT 分区样式均以相同的方式受支持。

我创建了一个可启动的 USB,只需通过复制/粘贴过程即可将我的 Ubuntu ISO 文件复制到其中,这样当 USB 用作可启动驱动器时,它们就会显示在菜单中。同时,我还可以使用此 USB 来存储我的个人数据(它们不会出现在 Ventoy 菜单中)。

这意味着当我将此 USB 驱动器用作可启动驱动器时,我有一个这样的菜单(屏幕截图取自官方网站):

ventoy 菜单

当我通过 Nautilus 打开它时,它就像一个普通的 USB 棒,你可以在其中放置文件(屏幕截图取自我的 Ubuntu 20.04):

鹦鹉螺

Ventoy 没有 deb 格式,也没有安装脚本,所以你需要从发布页面。如果您下载了.tar.gz版本(在下面的例子中我将引用版本 1.0.61),则可以通过在终端中发出以下命令来提取它:

sudo tar xzf ventoy-1.0.61-linux.tar.gz -C /opt

考虑到/opt 文件夹的含义,我认为/opt就目标文件夹而言这是最好的选择。

现在,您需要至少授予Ventoy2Disk.sh和权限VentoyGUI.x86_64

sudo chmod +x /opt/ventoy-1.0.61/Ventoy2Disk.sh /opt/ventoy-1.0.61/VentoyGUI.x86_64

现在您就可以使用它了。要创建一个映射为/dev/usb(始终使用lsblk以正确识别您的 USB 磁盘!)的可启动 USB,并使用 GPT 分区,您可以运行

sudo bash /opt/ventoy-1.0.61/Ventoy2Disk.sh -I -g /dev/sdb

以下是提供的参数列表Ventoy2Disk.sh

Ventoy2Disk.sh CMD [ OPTION ] /dev/sdX
  CMD:
    -i   install ventoy to sdX (fail if disk already installed with ventoy)
    -I   force install ventoy to sdX (no matter installed or not)
    -u   update ventoy in sdX
    
  OPTION: (optional)
   -r SIZE_MB  preserve some space at the bottom of the disk (only for install)
   -s          enable secure boot support (default is disabled)
   -g          use GPT partition style, default is MBR style (only for install)

否则,你可以使用图形界面运行 Ventoy:

sudo /opt/ventoy-1.0.61/VentoyGUI.x86_64

更多详细信息请参阅Ventoy 安装

另一个有趣的来源是这篇文章RedHat.com:创建多启动 Linux 桌面系统

答案2

  1. 按照您的需要对 U 盘进行分区,在 FAT 分区(第一个分区)中为 ISO 映像提供空间。

  2. 运行lsblk以识别哪个设备是您的 pendrive,即/dev/sdb第一个分区是 FAT 分区,即/dev/sdb1。挂载它,即/media/user/PENDRIVE

  3. 将此分区标记为可启动,您可以从磁盘实用程序执行此操作。

  4. 运行以下命令:

    警告!前方有危险命令,可能会破坏您的系统!建议:在虚拟机中执行此操作,或者,如果您有备用 U 盘,则在实时环境中执行此操作(更简单)。

    sudo apt install grub-efi-amd64
    
    dirs=(dev bin sbin etc sys usr proc lib lib64)
    
    for dir in "${dirs[@]}"; do
      mkdir -p /media/user/PENDRIVE/$dir
      sudo mount --bind /$dir /media/user/PENDRIVE/$dir
    done
    
    sudo chroot /media/user/PENDRIVE/ grub-install --force --removable --target=x86_64-efi --efi-directory=/ /dev/sdb1
    
    sudo chroot /media/user/PENDRIVE/ grub-install --force --removable --target=i386-pc --boot-directory=/ /dev/sdb
    

    等到命令完成。

  5. 卸载绑定的目录并将其删除:

    for dir in "${dirs[@]}"; do
      sudo umount /media/user/PENDRIVE/$dir
      rm -r /media/user/PENDRIVE/$dir
    done
    
  6. grub.cfg在下面创建一个文件/media/user/PENDRIVE/grub/,内容如下:

    set root='(hd0,1)'
    configfile /boot/grub/grub.cfg
    
  7. 挂载 Ubuntu ISO 并将grub.cfg文件复制到/media/user/PENDRIVE/boot/grub/

  8. 修改文件¹,在本例中为ubuntu-20.04.1-desktop-amd64.iso

设置根='(hd0,1)'
设置 iso_path=/ubuntu-20.04.1-desktop-amd64.iso
环回循环 $iso_path

菜单项“Ubuntu”{
    设置 gfxpayload=保持
    Linux的   (环形)/casper/vmlinuziso-scan/文件名=$iso_path文件=/cdrom/preseed/ubuntu.seed 也许是无处不在的安静飞溅---
    初始化文件  (环形)/casper/initrd
}
  1. 将 ISO 映像复制到分区中(第一个 FAT)。

准备好了,您现在有一个带有您创建的分区的 EFI/i386 可启动 U 盘。


¹ 您可以更改所有条目,而其余条目保持不变,在我的示例中,我正在简化。

答案3

简单手工制作的持久 USB

如果您喜欢学习体验,您可以创建一个多分区、持久的 USB,从头开始安装 Ubuntu。

  • 启动已安装的 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,在“Try Ubuntu ...”行后添加 set root=(hd0,3)。
  • 在---后添加一个空格和单词“persistent”。

grub配置文件

  • 安装 grub,如果处于 BIOS 模式或从 Live USB 驱动器启动,请运行:

      sudo mount /dev/sdx2 /mnt
    
      sudo grub-install --boot-directory=/mnt/boot /dev/sdx
    
  • 如果已安装系统处于 UEFI 模式,则启动到目标驱动器并运行上述命令。

*基于 sudodus 的 mkusb 进行引导

相关内容