Linux 将文件添加到VFAT映像而不装载

Linux 将文件添加到VFAT映像而不装载,linux,command-line,filesystems,fat32,Linux,Command Line,Filesystems,Fat32,我想创建一个新的VFAT图像并向其中添加一些文件 # Create file of 1MB size: dd if=/dev/zero of=my-image.fat count=1 bs=1M # Format file as VFAT: mkfs.vfat ./my-image.fat 现在我想将文件./abc、./def和./ghi添加到图像中 如果没有挂载-o循环或熔丝挂载,我如何做到这一点? 我只想写一个新的,空的,原始的VFAT图像。 我不需要删除附加或任何“复杂”的操作 我尝试了

我想创建一个新的VFAT图像并向其中添加一些文件

# Create file of 1MB size:
dd if=/dev/zero of=my-image.fat count=1 bs=1M
# Format file as VFAT:
mkfs.vfat ./my-image.fat
现在我想将文件./abc、./def和./ghi添加到图像中

如果没有
挂载-o循环
或熔丝挂载,我如何做到这一点? 我只想写一个新的,空的,原始的VFAT图像。 我不需要删除附加或任何“复杂”的操作


我尝试了
7z-a
,因为7zip可以读取VFAT图像,但它不知道如何对其进行写入。

您想要的基本上是不可能的。您不能只是将一些文件数据“填充”到磁盘映像的末尾,然后让这些文件神奇地“显示”在映像中。可以随意填充数据,但文件系统不仅仅是数据。您必须准确地复制文件系统为您处理的元数据操作,例如更新FAT表


换句话说,您必须在自己的代码中构建整个FAT文件系统处理代码。这完全是荒谬的。只需挂载映像,在挂载的文件系统上使用正常的文件操作,然后再次卸载它。Boom,完成。

我想做与嵌入式系统映像构建完全相同的事情。这真的很烦人,整个构建过程需要3小时,除了最后的步骤需要密码才能安装VFAT映像外,可能完全无人参与。幸运的是,我找到了一套解决问题的工具

您需要GNU提供的
mcopy

Mtools是一组实用程序,用于从GNU和Unix访问MS-DOS磁盘,而无需安装它们

它还支持磁盘映像,例如VFAT映像文件

例如,以下命令将文件
hello.txt
从当前目录复制到
~/images/fat_file.img
中VFAT文件系统的子目录
subdir

mcopy -i ~/images/fat_file.img hello.txt ::subdir/hello.txt
mtools中包含了更多有用的工具,例如
mdir
mtype
,它们非常适合在不安装图像文件的情况下检查图像文件

mdir -i ~/images/fat_file.img ::
mdir -i ~/images/fat_file.img ::subdir
mtype -i ~/imags/fat_file.img ::subdir/hello.txt

安装它有什么异议?@MarkSetchell
mount
需要sudo,
fusermount
需要fuse。我真的需要详细说明吗?我知道文件系统操作涉及到哪些困难。这就是我不想使用mount的原因之一。例如,我不需要日志,不需要权限管理,也不需要任何VFS抽象。脱机编辑图像应该容易得多。我仍然找不到任何工具来回答我的问题。vfat没有日志记录,也没有权限。您需要的工具是安装图像。其他任何东西都需要完全复制文件系统引擎正在做的事情,所以为什么不使用您已经拥有的,而不是到处寻找您找不到的东西呢?我发现fusermount最多只能在一半的情况下工作。挂载需要sudo权限。所以我不喜欢这两种选择。(可能是保险丝在过去几年变得不那么可怕了。如果可以的话,我会远离它。)这太棒了,我会投上一百次票!对于那些使用WSL的人来说,这是一个很好的选择,WSL有一个低于标准的
mount
。还有一个fatcat实用程序,它可以列出fat32.img中的文件。例如,
fatcat my_fat32.img-l/
。请参阅此处的手册