假设我下载了某个 Linux 发行版的可启动 ISO,因为我想稍后安装 Linux。我可以将该 ISO 刻录到我的 USB 闪存驱动器上。但是设备将保留iso9660文件系统,因此它将不可写入。我可以安装 Linux,但我无法用我的 USB 闪存驱动器做任何其他事情。

那么,是否可以将 ISO 转换为“正常”ext4文件系统,同时仍保持 USB 可启动?

3

  • 您始终可以在刻录之前修改 ISO 以包含更多文件,但是使用什么应用程序来创建媒体?


    – 

  • 1
    我还没有研究它是如何实现的,但我发现当openSUSE-Leap-15.5-GNOME-Live-x86_64-Build13.195-Media.iso复制到 USB 记忆棒时,。 openSUSE Leap live ISO 的创建方式似乎使用 USB 记忆棒上未使用的空间来提供持久存储,作为某种覆盖文件。


    – 

  • 2
    “我可以将该 ISO 刻录到我的 USB 记忆棒上” – 请参阅以获得见解。


    – 


最佳答案
4

iso9660并不是使它可启动的原因——而是 CD/DVD 使用的文件系统,如果您从实际 CD启动此映像,您的固件确实会寻找特殊的 ISO9660 标头字段,但从任何其他类型的磁盘启动时,这些字段就完全无关紧要了。USB 棒可启动只是因为该映像是一个“混合 ISO”,具有传统的 MBR 引导扇区和/或 EFI 系统分区,与ISO9660 数据一起写入。

因此是的,可以创建一个常规的 ext4 文件系统(甚至是 FAT32,因为大多数“实时 CD”在 SquashFS 映像中都有实际的 Linux 根文件系统),将 ISO9660 的内容提取到其中,然后将引导加载程序安装到 USB 记忆棒的 MBR 中 – 大多数此类 CD 都使用 isolinux,因此您可以将常规 syslinux/extlinux 安装到 USB 记忆棒上,并希望它会选择现有的 syslinux.cfg。

和类似工具通常能够将 Linux ISO 的内容提取到更常规的文件系统中并使其可启动。(它并不总是 100% 有效,因为此类工具在一定程度上依赖于识别 Linux ISO 映像的特定内容并对其进行调整,但它在大多数情况下仍然有效。)

1

  • 1
    我以为 Rufus 是一个解决方案,只是不知道已经在使用什么。


    – 

将 Ubuntu live ISO(安装媒体)写入 USB 存储器。

如果您启动一次(在“尝试 Ubuntu”模式下),

您将获得一个“可写”分区,该分区覆盖了记忆棒内存的“可用”部分

(即 ISO 映像未被占用的部分)

遗憾的是,这不能用于数据传输,例如gparted任何操作系统(除了从棒启动的操作系统!)都没有看到用于安装的“可写” – 它很可能在 ISO 映像“内部”。

但这确实有效:

在第一次启动之前;使用任何分区工具并创建至少一个第二个分区

以下是@DavidAnderson 评论的详细信息:
我使用fdisk --wipe never命令创建了第 4 个分区。此命令自动将辅助(备份)分区表和标头移动到闪存驱动器的末尾。我使用命令mkfs.fat -F 32在新分区中创建 FAT 32 格式的卷

4

  • 我测试了您的答案,发现标记为“可写”的 ext4 卷分区未出现在 中gparted。此外/var/log,和 也/var/crash安装到此卷的不同文件夹中。


    – 

  • 这表明我记错了…上面添加了想法。


    – 


  • 您的更新答案适用于 Ubuntu Desktop 24.04.1。我能够将具有 FAT32 格式卷的第 4 个分区添加到 GPT 中已经存在的三个分区。我使用该fdisk --wipe never命令创建了第 4 个分区。此命令自动将辅助(备份)分区表和标头移动到闪存驱动器的末尾。我使用该mkfs.fat -F 32命令在新分区中创建了 FAT 32 格式的卷。


    – 

  • 好吧,我尝试对其进行相应的编辑;根据您的评论,我需要使用这个“功能”来获得正确的细节。


    – 


是一个工具,它将创建一个可启动的 USB 设备,其中包含一个 HPFS/NTFS/exFAT 类型的分区,您可以在其中复制粘贴.iso文件。然后从 Ventoy 启动时,它将显示可用 ISO 的列表。但您也可以在此分区上存储任何文件。

如果愿意,您还可以来创建 EXT4 分区。

我自己找到了另一个答案。我希望这可以帮助其他人。(使用 Linux)

  • 我将 USB 闪存盘格式化为ext4
  • 我将 ISO 文件挂载为本地磁盘
  • 我将所有文件从 ISO 复制到 USB 闪存驱动器
  • 我在 USB 密钥上安装了 grub:sudo grub-install --target=i386-pc /dev/sdc

1

  • 既然您找到了自己的解决方案,您能否发布您正在使用的 Linux 发行版?


    –