创建和填充 FAT32 文件系统而不挂载它

Mal*_*ous 25 filesystems utilities fat

有没有办法创建一个包含一组文件的 FAT32 文件系统,而无需挂载它或具有 root 访问权限?

我正在为旧操作系统开发一个软件应用程序作为一种爱好,作为构建过程的一部分,我想将一些源文件打包到一个 FAT32 磁盘映像中,然后启动 QEMU 以启动该映像并在其中运行一个旧编译器它。之后我想从 FAT32 磁盘映像中提取编译后的文件。

我可以使用 来创建文件系统mkfs.vfat,但是我所知道的将文件放入和取出图像的唯一方法是挂载它,这通常需要 root 访问权限并且不利于嵌入到构建过程中。

理想情况下,我追求的是zipunzip实用程序,而不是创建/提取 .zip 文件,它会以 FAT16 或 FAT32 格式创建和提取磁盘映像。

这样的东西存在吗?我唯一能在网上找到的东西都涉及安装磁盘映像。

Mal*_*ous 43

当然,尽管我所有的搜索都没有成功,但我终于在发布有关它的问题后不久找到了答案。

所以mtools包可以这样做:

# Create a 2 MB file
dd if=/dev/zero of=disk.img bs=1M count=2

# Put a FAT filesystem on it (use -F for FAT32, otherwise it's automatic)
mformat -i disk.img ::

# Add a file to it
mcopy -i disk.img example.txt ::

# List files
mdir -i disk.img ::

# Extract a file
mcopy -i disk.img ::/example.txt extracted.txt
Run Code Online (Sandbox Code Playgroud)

mtools通过指定驱动器号(如C:)来工作,特殊:驱动器(指定为::)指的是命令行上给出的带有-i选项的图像。

  • 如果您在 _before_ 发布问题之前找到答案也没关系:D。说真的,Stack Exchange 网站可以在您经过大量搜索后找到答案时发布自我回答的问答。 (7认同)
  • 作为旁注,F2FS 有一个类似的工具叫做 `sload.f2fs` (2认同)