这个老问题听起来就像我想要的:将 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 驱动器用作可启动驱动器时,我有一个这样的菜单(屏幕截图取自官方网站):
当我通过 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
按照您的需要对 U 盘进行分区,在 FAT 分区(第一个分区)中为 ISO 映像提供空间。
运行
lsblk
以识别哪个设备是您的 pendrive,即/dev/sdb
第一个分区是 FAT 分区,即/dev/sdb1
。挂载它,即/media/user/PENDRIVE
将此分区标记为可启动,您可以从磁盘实用程序执行此操作。
运行以下命令:
警告!前方有危险命令,可能会破坏您的系统!建议:在虚拟机中执行此操作,或者,如果您有备用 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
等到命令完成。
卸载绑定的目录并将其删除:
for dir in "${dirs[@]}"; do sudo umount /media/user/PENDRIVE/$dir rm -r /media/user/PENDRIVE/$dir done
grub.cfg
在下面创建一个文件/media/user/PENDRIVE/grub/
,内容如下:set root='(hd0,1)' configfile /boot/grub/grub.cfg
挂载 Ubuntu ISO 并将
grub.cfg
文件复制到/media/user/PENDRIVE/boot/grub/
修改文件¹,在本例中为
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 }
- 将 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,如果处于 BIOS 模式或从 Live USB 驱动器启动,请运行:
sudo mount /dev/sdx2 /mnt sudo grub-install --boot-directory=/mnt/boot /dev/sdx
如果已安装系统处于 UEFI 模式,则启动到目标驱动器并运行上述命令。
*基于 sudodus 的 mkusb 进行引导