只读文件系统 - 注意事项和功能损失

只读文件系统 - 注意事项和功能损失

我正在使用 Buildroot 创建一个嵌入式系统。目前,我的 Buildroot 配置可确保 rootfs 在启动期间重新挂载为读/写。但是我想删除此功能并将我的 rootfs 保留为只读。

对此我有几个问题:


如何更改用户的密码?这需要更改 /etc/passwd 和 /etc/shadow。

如何更改时区?这需要更改 /etc/localtime。

如何为 sshd 创建 ssh 密钥? ssh-keygen 在 /etc/ssh/ 中创建密钥

根据文件系统层次结构标准,Linux 系统需要使用只读 /etc/ 目录来运行,但我似乎发现了如上所述的明显功能损失。


其次,在我的 Buildroot 配置中指定 rootfs 保持只读后,它选择将 /var/ 挂载为 tmpfs(在 RAM 中,因此是可写的)

但是,这是不稳定的,如何确保运行时文件(我需要保存)不会在重新启动或意外断电时丢失?

我在我的嵌入式系统中使用 UBIFS。我是否需要创建一个读/写 UBI 卷来用作持久存储?这是嵌入式系统的标准吗?


最后,我是否应该重新评估我的想法以使用只读 rootfs?鉴于我正在使用 UBI,并且由于磨损均衡是在所有 UBI 卷上实现的(当然,它们存在于同一设备上),因此将我的 rootfs 设为只读会带来什么好处吗?

答案1

将文件系统保持为只读安装可确保不会以意外方式修改任何内容。

为了允许某些操作,需要使用特定的文件系统分区: - 系统分区:只读 - 用户分区:可写

丢失用户分区可能只会将嵌入式设备恢复到默认状态,但可能不会导致设备永久无法访问。

允许某些操作 i. E.更改密码,需要将特定文件符号链接到用户分区。 - /etc/passwd -> /mnt/user/passwd - /etc/ssh -> /mnt/user/ssh - /etc/localtime -> /mnt/user/localtime

为了使密码访问更加可靠,最好将 passwd 重定向到 tmpfs,然后在启动期间从用户分区获取密码。

该方法可能会导致有关时区的问题。如果双重链接导致错误,可能需要修补 tzdata 以直接使用 /mnt/user/localtime: /etc/localtime -> /mnt/user/localtime -> /usr/share/zoneinfo ...

相关内容