我想更改路由器上的一些文件。首先,我可以更改/var 中的所有内容,但我想更改/etc/fstab。当我尝试更改它时,我收到一条错误消息,指出文件系统是只读的。
路由器内的 Busybox,命令有限,所以我已经得到了用于 mips http://www.busybox.net/downloads/binaries/1.19.0/busybox-mips 的busybox 二进制文件,并通过 tftp ( tftp -g -r busybox-mips my.i.p.addr
)上传它,所以现在我可以使用完整的命令 ( /var/tmp/busybox-mips
command)。
路由器(sdram)内部没有rom,或者没有其他分区。它必须与busybox有关。
# /var/tmp/busybox-mips df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 1344 1344 0 100% /
# mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
proc on /proc type proc (rw,nodiratime)
ramfs on /var type ramfs (rw)
#
Model:
Airties 5021
Processor:
BCM6332KFBG
HS1037 P12
994981 N1
Memory:
M12L64164A-7T (SDRAM)
ANM1P02HL 1028
Run Code Online (Sandbox Code Playgroud) 我正在使用 Ubuntu 12.04。我想取消压缩 lzma 图像。我已经做好了
sudo apt-get squashfs-tools
Run Code Online (Sandbox Code Playgroud)
现在,当我做
unsquashfs <squashed_image_filename>
Run Code Online (Sandbox Code Playgroud)
我得到
Filesystem uses lzma compression, this is unsupported by this version
Run Code Online (Sandbox Code Playgroud)
我知道我压扁的图像是 lzma。如何安装对 lzma 的支持?我已经从这里下载了 squashfs 工具:http : //sourceforge.net/projects/squashfs/files/
据我了解,在提取该 tarball 后,我需要通过取消注释该行来cd
进入squashfs4.2/squashfs-tools
和编辑。然后我只需要运行.Makefile
LZMA_XZ_SUPPORT = 1
make
那对我不起作用。我收到错误:
gzip_wrapper.c:23:18: fatal error: zlib.: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我想我需要安装lzma-devel
和xz-devel
. 我已经尝试过这个,并在谷歌上搜索了几个小时,但没有找到任何地方,也没有找到任何显示这应该如何工作的可靠说明。有做过这件事的人能帮帮我吗?我是桌面 Linux 的新手,所以如果你能在你的说明中相当冗长,那将不胜感激。
我喜欢使用 squashfs 进行压缩,因为将它们安装为循环设备来访问内部文件很简单。
我有很多 rar、tgz 和 zip 文件,我想将它们转换为 squashfs。
在这个答案中,我看到在将磁盘映像压缩到squashfs时可以使用伪文件以避免必须使用整个磁盘大小的临时文件。
mkdir empty-dir
mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M'
Run Code Online (Sandbox Code Playgroud)
我想使用伪文件以相同的方式(即时)从 rar、tgz 或 zip 转换为 squashfs,因此我不必首先将整个存档提取到磁盘,然后在单独的操作中压缩到 squashfs 。
其中一些档案包含数千个单独的文件,其中一些文件的文件名中包含空格或其他特殊字符。
我查看了README,我认为我需要使用该-pf <pseudo-file>
选项,但我不确定如何动态创建伪文件(并且也不存在带空格的文件名问题)。我想我需要使用进程替换来从源存档创建文件列表。
理想情况下,我希望有一个命令能够转换任何 rar、tgz 或 zip,而不必为每个存档单独创建伪文件,但如果有人可以告诉我如何使用其中一种存档格式来完成此操作,那么希望我能为其他人解决这个问题。
感谢大家。
情况:我有一个更大(>10GB)的只读小文件集合,其中包含大量重复项,我需要在多台计算机上(甚至在不同的文件系统上)使用这些重复项。我们可以假设 Linux 内核 > 5.3.0。
一种解决方案是将它们放入 squashfs 映像文件中,在创建它时使用重复数据删除和 zstd 压缩,然后安装它。现在,只有当安装并不意味着所有文件都需要适合 RAM 时,这才对我有用。
像这样安装压缩的squashfs 文件系统总是需要完全解压到RAM 吗?
你知道什么initramfs-kernel
意思吗?
我知道squashfs-factory/squashfs-sysupgrade
。
我该怎么做或它是什么?哪个更好?
我只是不明白什么initramfs-kernel
意思。
我有Linksys 1900ACS v2
and D-Link DL-860l B1
,但我只使用squashfs-factory
and squashfs-sysupgrade
。
这是什么initramfs-kernel
意思?
我什么时候会使用这些?
我什至害怕安装它。
那么,继续,例如lede-17.01.2-ramips-mt7621-dir-860l-b1-initramfs-kernel.bin
,这是什么意思?我可以使用它吗?如果可以,lede-17.01.2-ramips-mt7621-dir-860l-b1-squashfs-factory.bin
(我知道它做什么和如何做)或lede-17.01.2-ramips-mt7621-dir-860l-b1-squashfs-sysupgrade.bin
(我知道它做什么和如何做)之间有什么区别。
我需要将我的 linux 文件系统从 ro 重新挂载到 rw。但什么都行不通。如果有人帮助我,我将不胜感激。
# mount
/dev/mtdblock3 on / type squashfs (ro)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
devpts on /dev/pts type devpts (rw)
none on /tmp/netslink type ramfs (rw)
# cat /proc/mounts
rootfs / rootfs rw 0 0
/dev/root / squashfs ro 0 0
proc /proc proc rw 0 0
ramfs /tmp ramfs rw 0 0
devpts /dev/pts devpts rw 0 0
none /tmp/netslink ramfs rw 0 0
Run Code Online (Sandbox Code Playgroud)
我试过这个:
# mount …
Run Code Online (Sandbox Code Playgroud)