如何使只读文件系统在 BusyBox 上可写?

如何使只读文件系统在 BusyBox 上可写?

我想更改路由器上的某些文件。首先,我可以更改 中的所有内容/var,但我想更改/etc/fstab。当我尝试更改它时,我收到一条错误消息,提示文件系统是只读的。

路由器内的 BusyBox 有有限的命令,所以我得到了一个适用于 MIP 的 BusyBox 二进制文件,并通过tftp上传:

tftp -g -r busybox-mips my.i.p.addr

我现在可以使用完整命令(/var/tmp/busybox-mips 命令)。

路由器内部没有ROM(SDRAM),也没有其他分区。应该和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

答案1

Squashfs 是不可变的。要更改 /etc/fstab,您需要在 Linux 机器上为您的路由器制作一个新的 FS 映像。要在路由器上获取该映像,您需要执行“固件升级”。

您还可以查看 /proc/mounts 以检查是否mount在欺骗您,因为它只读取/etc/mtab。但后者在大多数发行版中都是符号链接。

答案2

您可能能够使该内容在当前会话中可写,但更改不会持久:一旦重新启动,更改就会丢失。为此,您需要在某处安装一个 tempfs,将 的内容复制/etc到其中,然后mount --move将其复制到/etc

如果您需要持久更改,则必须重新创建 squashfs。其他答案已经对此进行了更详细的说明。

相关内容