我正在使用嵌入式 Linux(使用 LTIB 构建)。
我无法更改/etc
目录。基本上我想添加一个启动脚本到/etc/rc.d/init.d
/etc/
似乎被安装为 rwfs
输出df -h
:
Filesystem Size Used Available Use% Mounted on
/dev/root 3.0G 376.9M 2.4G 13% /
tmpfs 424.2M 36.0K 424.1M 0% /dev
shm 424.2M 0 424.2M 0% /dev/shm
rwfs 376.0M 5.1M 370.9M 1% /mnt/rwfs
rwfs 376.0M 5.1M 370.9M 1% /tmp
rwfs 376.0M 5.1M 370.9M 1% /var
rwfs 376.0M 5.1M 370.9M 1% /etc
我努力了 :
umount /etc/
touch /etc/dummy --> just for the sake of checking
reboot
(after boot-up)
ls -lth /etc/dummy ---> file is missing
这是我从 SD 卡启动的映像。在其中一张 SD 卡上,我执行了上述操作umount /etc
,然后放置了一个如上所述的虚拟文件,下次启动时,它/etc
会按预期重新挂载,tmpfs
但虚拟文件可用。但在另一张 SD 卡上,当我尝试相同操作时,虚拟文件不可用。
有什么建议么?
输出mount
(使用之前umount /etc/
):
root@freescale /etc$ mount
rootfs on / type rootfs (rw)
/dev/root on / type ext2 (rw,relatime,errors=continue)
proc on /proc type proc (rw,relatime)
sys on /sys type sysfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
shm on /dev/shm type tmpfs (rw,relatime)
rwfs on /mnt/rwfs type tmpfs (rw,relatime,size=385024k)
rwfs on /tmp type tmpfs (rw,relatime,size=385024k)
rwfs on /var type tmpfs (rw,relatime,size=385024k)
rwfs on /etc type tmpfs (rw,relatime,size=385024k)
安装的输出(之后umount /etc
):
rootfs on / type rootfs (rw)
/dev/root on / type ext2 (rw,relatime,errors=continue)
proc on /proc type proc (rw,relatime)
sys on /sys type sysfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
shm on /dev/shm type tmpfs (rw,relatime)
rwfs on /mnt/rwfs type tmpfs (rw,relatime,size=385024k)
rwfs on /tmp type tmpfs (rw,relatime,size=385024k)
rwfs on /var type tmpfs (rw,relatime,size=385024k)
答案1
这行来自mount
rwfs on /etc type tmpfs (rw,relatime,size=385024k)
说的/etc
是事实上tmpfs
。现在从维基百科:
tmpfs
是许多类 Unix 操作系统上临时文件存储设施的通用名称。它旨在显示为已安装的文件系统,但存储在易失性存储器中,而不是持久存储设备中。
和
存储在中的所有内容
tmpfs
都是临时的,因为不会在硬盘上创建任何文件;但是,交换空间可在内存不足的情况下用作后备存储。重新启动后,存储在中的所有内容都tmpfs
将丢失。
这正是您遇到的情况。
嵌入式系统使用tmpfs
for/etc
和一些其他目录,使它们可供任何需要它的程序写入,但同时
- 避免在写入过程中以及拔掉插头关闭设备时文件系统损坏;
- 以避免在控制台中执行错误操作时导致操作系统损坏。
可以通过从 USB 启动、运行等方式来拯救“大型”系统。fsck
此时,强烈建议仅使用经过验证的配置重新启动。
一般来说,操作系统可能会提供一种方法来提交更改,将它们写入非易失性存储器,下次重新启动时它们将从那里恢复。或者它可能根本不提供方法,也不提供这样的恢复过程。