问题标签 [squashfs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5041 浏览

squashfs - 读取 SquashFS 存档

(SquashFS 是一个压缩文件系统 - http://en.wikipedia.org/wiki/SquashFS

我正在寻找一种从程序中读取 SquashFS 文件系统的方法。到目前为止,我已经知道它的内核驱动程序,但我确信它的用户空间库必须存在于某个地方。任何语言都可以,但首选 C。

仅安装文件系统并以这种方式使用它在技术上是可行的,但我宁愿避免使用这种方法,因为我正在查看的应用程序将涉及在任何给定时间处理至少几十个档案。

0 投票
1 回答
14686 浏览

extract - 如何 unsquashfs 或挂载固件映像?

我想提取我的路由器固件,并对其进行修改。所以我使用了bitsum的固件模组套件。似乎没有错误。我可以得到 image_parts 目录也有 rootfs.img(squashfs 图像)文件。但问题是我既不能挂载它也不能解压。

这是提取输出:

挂载尝试输出:

unsquashfs 尝试输出:

我搜索了“错误代码-3”,它是 Z_DATA_ERROR(数据已损坏或不完整)。现在我该怎么办?

谢谢

0 投票
2 回答
1171 浏览

compression - 研究 squashfs 压缩比

是否有任何工具可以检查现有的 squashfs 图像并找出每个文件的压缩率?

如果它帮助我可以估计一个巨大的可执行文件中静态链接符号的闪存使用情况,则可以加分。

0 投票
1 回答
262 浏览

filesystems - squashfs 文件系统索引到磁盘块的映射

谁能告诉squashfs如何将磁盘块号映射到文件系统块。基本上我说的是 squashfs 中的 read_blocklist()。

谢谢,卡皮尔

0 投票
2 回答
12037 浏览

squashfs - 如何写入/更改现有的 squashfs 文件系统?

如何写入/更改现有的 squashfs 文件系统?我曾尝试使用 aufs/unionfs,但这些需要极难编译的内核模块。

0 投票
1 回答
4213 浏览

linux - 将文件重定向到标准输出 - 反向 io 重定向

我在 linux 和 unsquashfs 程序下遇到了一些不典型的问题。

通常我们将标准输出重定向到指定的文件,但我想要一些相反的东西。将动态创建的文件重定向到标准输出,而不创建真正的文件。

unsquashfs 可以提取指定的文件,但文件完全重写。这导致不可能使用命名管道。我需要它,因为我想避免创建消耗空间和 IO 的临时大提取文件。我必须在命令管道中使用输出。不幸的是,unsquashfs 没有用于提取文件的“-”选项,类似于“tar”或“zip”命令。如果没有 unsquashfs 修复,我可能想要什么?这是任何预加载模块或包装程序或伪文件,我可以进行反向重定向吗?

0 投票
1 回答
2180 浏览

binary - 尝试使用非标准压缩解压缩固件更新

我正在尝试解包一个清晰的固件更新

我尝试反转的固件可以在供应商的下载页面上找到,我使用 fwtools 解压固件,如本页所述。

完成此操作后,我设法获得了“kernel.bin”和“rootfs.bin”。现在我想在这个调制解调器中包含一个新的/附加的证书,并在这个调制解调器(一个 Wimax 的)内的管理员页面上进行一些编辑。

所以我使用该file工具检查了 rootfs 文件。我得到以下输出:

这对我帮助不大,所以我binwalk试了一下,我得到了这个:

由于这确实让我感到奇怪,所以我没有继续。不知道怎么解压固件。我想我已经尝试了所有我知道你可以手动做的事情,固件 mod fit,fwtools,全部!

有人可以阐明我的问题并告诉我如何继续吗?

还有一个问题,如果我用从另一台设备和另一家公司的固件更新中提取的另一个替换“rootfs.bin”,如果我重新压缩“kernel.bin”和新的“rootfs.bin”并更新使用新更新清除设备?

0 投票
1 回答
17775 浏览

linux - SQUASHFS 错误:无法读取页面,...,大小

我正在使用带有内置 NAND 闪存的嵌入式 ARM 平台。我的屋顶隔断是 squashfs。u-boot 和内核都使用 OMAP_ECC_BCH8_CODE_HW。问题是一些板(不仅仅是一个)在停电后停止工作(它们使用了大约 2 个月)。

引导时可以看到这些错误:

我应该如何调试这个?我还没有擦除闪存,所以仍然可以对其进行一些测试。

到目前为止我所做的:

  1. 我在坏分区上使用了 nanddump(带 -o,读取 oob 数据),我注意到三个 ecc 更正警告。当我将此转储写入另一块板上时,它启动时没有问题。

  2. 当我使用带有附加选项 -n 的 nanddump (--noecc,读取不纠错)并将其写入另一块板(使用 nandwrite -n)时,第二块板无法启动。

在我看来,这些错误是可以恢复的,这就是 nanddump 在第一种情况下纠正它们的原因。我比较了这 2 个转储,它们只有三个差异(nanddump 报告了 3 个 ecc 更正?)

问题是:为什么系统没有自动纠正这些错误?是因为 squashfs 不是“支持 mtd”的文件系统,不应该在 mtd 设备上使用吗?如果是这样,我应该在 UBI 上使用 squashfs 吗?那么内核呢(据我所知,它必须是原始映像才能从 u-boot 启动)?

谢谢你的帮助!

0 投票
1 回答
1463 浏览

android - 为什么我会收到此错误:/system/bin/sh: ./mksquashfs: not executable: magic 7F45?

因为我无法获得适用于 android 的 mksquashfs 工具。我使用交叉编译为arm编译它并构建它,内核和mksquashfs的工具链相同。

我将 mksquashfs 推到/data/ partition of target.

错误信息是:

如果我缺少任何交叉编译工具链等,请告诉我如何获得适用于 android 的 mksquashfs。

0 投票
2 回答
401 浏览

linux - 为 RFS 选择 squashfs

我们的产品具有以下配置,iMx6 处理器,2GB eMMC,512 MB RAM,一对以太网端口和 USART 端口。这将是一个 24/7 365 天工作的设备

我们计划构建一个大约 7 到 10 MB 的最小 Linux 映像(内核 + RFS),将我们的主应用程序和自定义内核驱动程序保存在一个单独的 2 MB 大小的 squashfs 分区中(因为这是我们将在我们希望保持这个分区独立且小的字段)。

另一个 ext4 读/写数据分区来存储我们的持久数据。除了数据分区,我们希望所有其他分区都是只读分区。

我的查询是

由于我们有一个较小的 Linux 操作系统映像(内核+RFS),我们可以将整个 RFS 作为 initramfs 吗?

将 RFS 作为 initramfs 是否有任何含义?(RAM 会消耗更多,我猜最大大约 20 到 30 MB,考虑到我们拥有的 RAM 量,我觉得这应该不是问题)

另一个解决方案是将 RFS 作为 squashfs,这样可以节省空间。与 initramfs 相比,上述内容有什么其他优势吗?

如果我们有 squashfs,那么我们还需要联合挂载来同时挂载只读应用程序分区和读/写数据分区。

如果我们使用 initramfs,那么我想我们不必实施联合挂载。这种理解对吗?

这是我们在 linux 中的第一个项目,因此我想从使用过这种 RFS 的有经验的人那里获得反馈