在Windows下使用mkxfs格式化镜像时遭遇文件系统溢出错误
这个错误我熟,本质上就是你要创建的QNX6文件系统内容,超出了目标镜像文件build.img的可用存储空间,或者说镜像的预设大小不足以容纳所有文件加文件系统自身的元数据(比如inode、目录结构这些隐藏的系统数据)。
下面给你拆解几个最常见的原因和对应的解决方法:
镜像预设空间太小
默认情况下mkxfs创建的镜像大小可能比较保守,如果你要打包的fs目录里文件总容量加上文件系统元数据的空间,超过了镜像的默认大小,就会触发这个错误。解决起来很简单:用-s参数手动指定足够大的镜像容量,比如你的文件总大小是1.5G,就给个2G的余量:mkxfs.exe -t qnx6fsimg -s 2G buildfile fs build.img单位支持K(千字节)、M(兆字节)、G(吉字节),记得留足10%-20%的空间给元数据,别卡得太死。
源目录/ buildfile内容超标
先检查下你要打包的fs目录里是不是藏了超大文件,或者buildfile里不小心引用了重复的文件、无效的挂载配置,导致计算所需空间时出错。建议先清理fs目录里的冗余文件,再核对buildfile的每一项配置,确保没有无效的文件引用或者循环挂载的设置。旧镜像文件干扰
如果build.img已经存在,而且是固定大小的文件,mkxfs没办法自动扩展它的空间来容纳新的内容。这种情况直接删掉旧的build.img,再重新运行命令就行,或者用-s指定比旧镜像更大的大小重新生成。参数顺序或用法有误
再核对下你的命令参数:mkxfs.exe -t qnx6fsimg buildfile fs build.img里,fs应该是你要打包的源目录对吧?如果这个目录的实际内容远大于你预期,那肯定会触发空间不足的错误。可以先手动算一下fs目录的总大小,再对应设置镜像的-s参数。
内容的提问来源于stack exchange,提问作者Coder

