如何在Windows中处理squashfs

5

我需要更新一个squashfs映像文件中的一些文件。我在Linux中找到了一个工具,但是在Windows中没有。

有人能提供帮助吗?

2个回答

10

7-Zip 能够打开 squashfs 镜像并提取其中的文件。我在 Windows 10 上使用 7-Zip 版本 15.14 [64 位] 进行测试,对一个使用 xz 压缩的 squashfs 镜像进行了测试。

创建归档时,7-Zip 似乎没有列出 squashfs 作为归档格式之一,因此如果您想生成具有修改文件的 squashfs 镜像,则需要寻找其他方法。关于 squashfs 的维基百科页面指出,mksquashfs 和 unsquashfs 已经移植到某些版本的 Windows 上(它还提到了 7-Zip)。

André's answer建议使用Cygwin来编译和运行squashfs-tools命令。Windows子系统 for Linux提供了另一种运行mksquashfsunsquashfs的方式。在我的Windows 10系统中,通过WSL运行Ubuntu 14.04.4,执行以下命令安装了squashfs-tools,之后可以使用mksquashfsunsquashfs

sudo apt install squashfs-tools

无论是使用 Cygwin 还是 WSL 来使用 squashfs-tools,都不需要使用 7-Zip 来更新 squashfs 镜像中的文件。

1
Squashfs-tools可以本地使用:https://github.com/AgentD/squashfs-tools-ng - mirh

9
Eirik的答案解决了“unzip”的部分。我将提供整个Windows下的squashfs-tools,这样您就可以同时使用“unzip” (unsquashfs.exe)和“zip”(mksquashfs.exe)。
  1. 如果您没有Cygwin,请获取Cygwin
  2. 安装以下Cygwin软件包:
    • 如果您正在运行32位系统:
      • gcc-core
      • cygwin64-gcc-core
    • 如果您正在运行64位系统:
      • gcc-core
      • cygwin32-gcc-core
    • xz
    • liblzma5 (不确定是否需要)
    • liblzma-devel
  3. 获取最新版的squashfs源代码
  4. squashfs-tools/Makefile中取消注释以下行:
    • XZ_SUPPORT = 1
    • LZMA_XZ_SUPPORT = 1
  5. 在Cygwin控制台中,进入squashfs-tools目录并编译:

复制粘贴以下内容

make EXTRA_CFLAGS="-Dlinux -DFNM_EXTMATCH='(1<<5)' -D'sigtimedwait(a,b,c)=sigwaitinfo(a,b)'"

使用经典的 make install 安装。
现在,您可以像在 Linux 中一样,在 Cygwin 命令行中使用 squashfs 工具。如上所述,这些工具是 unsquashfs.exe 和 mksquashfs.exe
来源和致谢:http://domoticx.com/bestandssysteem-squashfs-tools-software/(荷兰语,我使用了 Google 翻译)。

对于64位系统,不应该是cygwin64-gcc-core吗?反之亦然? 更新:在apt-cyg上好像不存在cygwin64-gcc-core - ArraysStartAt1
Squashfs-Tools的构建失败了:/ - ArraysStartAt1
对我来说,从SourceForge下载的源代码版本无法编译,出现了编译错误。但是从GitHub这里下载的版本使用相同的步骤成功编译了。 - Arty
@ArraysStartAt1 请查看 https://dev59.com/NWAg5IYBdhLWcg3wG30K#33203075 了解为什么我写的包名是正确的。 - André Chalella
您还需要从cygwin安装“make”包,以使其正常工作。 - Mr. T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接