mount --bind妙用

为确保嵌入式系统的稳定性,通常将文件系统设置为只读。当程序需要写入/etc目录时,可以通过mount --bind将可读写的目录映射到/etc,以保持rootfs的稳定且无需修改程序行为。本文介绍了一个脚本,它将/usrdata/etc目录映射到/etc,并说明了mount --bind的工作原理:它不改变数据,仅在内存中建立目录映射,重启后映射关系消失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

在嵌入式系统中,为了系统的稳定性,常将文件系统只读挂载,避免在写文件系统的情况出现异常,导致文件系统破坏.但不少程序默认会往/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的下级路径被隐藏起来了(注意,只是隐藏不是删除,数据都没有改变,只是访问不到了)。同时,内核将挂载目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值