在嵌入式系统中,为了系统的稳定性,常将文件系统只读挂载,避免在写文件系统的情况出现异常,导致文件系统破坏.但不少程序默认会往/etc目录写入数据,可以采用mount --bind将一个可读写的目录映射到/etc目录下面,这样既保证了rootfs的稳定性,又不用修改程序的默认行为.下面的脚本将/usrdata/etc目录映射到/etc目录下,同时通过flag判断是否已经拷贝了数据.
#move etc to usrdata
MoveEtcToUsrdata() {
mkdir -p /usrdata/etc
if [ ! -f /usrdata/bind_etc_flag ];then
cp -a /etc/* /usrdata/etc
sync
touch /usrdata/bind_etc_flag
sync
fi
mount --bind /usrdata/etc /etc
}
以mount --bind test1 test2为例,当mount --bind命令执行后,Linux将会把被挂载目录的目录项(也就是该目录文件的block,记录了下级目录的信息)屏蔽,即test2的下级路径被隐藏起来了(注意,只是隐藏不是删除,数据都没有改变,只是访问不到了)。同时,内核将挂载目录