我想更改路由器上的某些文件。首先,我可以更改 中的所有内容/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。其他答案已经对此进行了更详细的说明。