linux 根目录read only,linux – 使readonly / etc可写

我正在处理运行Linux的嵌入式设备.此设备的制造商已将其设置为以只读方式加载根文件系统.

来自/ etc / mtab:

rootfs / rootfs rw 0 0

/dev/root / squashfs ro,relatime 0 0

这意味着我无法修改/ etc中的任何文件,例如添加新用户.

我试过重新安装根目录:

mount -o remount,rw -t squashfs /dev/root /

但我只是得到一个错误

mount: cannot remount block device /dev/root read-write, is write-protected

我查了一下这个错误,人们说要使用blockdev.系统没有安装blockdev,所以我交叉编译并复制它.然后我跑了

blockdev --setrw rootfs

但我又得到一个错误:

blockdev: cannot open rootfs: No such file or directory

是否有可能使/ etc可写如果还没有?我有对系统的root访问权限,但是我无法“脱机”访问文件系统,所有更改都必须通过Bash命令完成.

解决方法:

squashfs是一个只读的压缩文件系统.它没有规定在创建后对其进行修改.因此,即使底层块设备可以写入,也无法写入.您需要使用您的修改创建整个文件系统的新squashfs映像,并将其刻录到存储该文件系统的存储设备,这将从实时系统中产生问题.

另一种选择是在/ etc上安装不同的文件系统.如果内核支持,它可以通过联合安装,通常将两个文件系统合并在一起,一个文件系统仅记录对基本只读文件系统的更改.

检查内核配置中对AUFS_FS或OVERLAY_FS的支持.

例如,在/ tmp中联合安装一个目录(如果系统没有永久可写存储,那么在你的情况下,希望可写在内存中的tmpfs可能是可写的(因此在重启时不会持久))

mkdir -p /tmp/etc/work /tmp/etc/upper

mount -t overlay \

-o lowerdir=/etc,upperdir=/tmp/etc/upper,workdir=/tmp/etc/work \

overlay /etc

然后/ etc将是可写的,你对它做的修改实际上将存储在/ tmp / etc / upper中.

或者,如果您只想修改几个文件,则可以从存储在可写文件系统中的版本绑定它们(是的,您可以在任何文件上安装,而不仅仅是目录):

cp /etc/passwd /tmp

mount --bind /tmp/passwd /etc/passwd

然后/ etc / passwd是可写的.当然你也可以为整个/ etc做这件事. (cp -a / etc / tmp&& mount –bind / tmp / etc / etc).

标签:linux,embedded,readonly,mount

来源: https://codeday.me/bug/20190809/1629396.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值