Ubuntu构建只读文件系统

本文介绍Ubuntu构建只读文件系统。

嵌入式系统使用过程中,有时会涉及到非法关机(比如直接关机,或意外断电),这可能造成文件系统损坏,为了提高系统的可靠性,通常将根文件系统设置为只读,将其他需要读写的数据放置在另外开辟的一个磁盘分区,本文针对嵌入式系统常用的Ubuntu操作系统构建只读文件系统。

1.基本原理

1)OverlayFS简介

OverlayFS(Overlay File System)是一种联合文件系统,它通过叠加多个目录形成一个单一的文件系统试图,其结构如下图。

其中,

a)lowerdir:下层目录,此目录为只读的。

b)upperdir:上层目录,此目录为可读写的。

c)merged:合并目录,此目录为合并上层目录和下层目录叠加形成的统一视图。

2)Overlayroot操作原理

Overlayroot是软件安装包,它使用了上述OverlayFS,它将根文件系统当作OverlayFS的下层目录,换句话说,下层目录是根文件系统的只读挂载,但是系统在运行过程中,有些文件又想要读写,就将他们挂载在上层目录,比如tmpfs,sysfs(驱动操作)及另外划分出来的磁盘分区。

系统允许用户在根文件系统(也就是下层目录)上做写操作,用户也看的见这些更改,但这些更改是临时的,不会实际写入磁盘,重启后更改全部丢失,不会影响到根文件系统。而挂载到上层目录,对他们进行更改操作,这些更改可能会在重新启动后持续存在,如对另外划分出来的磁盘分区进行写操作,重启后更改仍然存在,而对tmpfs进行写操作,重启后会丢失。

2.操作方法

1)安装Overlayroot

输入如下命令:

bash 复制代码
sudo apt-get install overlayroot

2)配置Overlayroot

作为对比,配置前,我们可以查看下系统挂载情况,输入如下命令:

bash 复制代码
mount

结果如下:

可以看出"/dev/sda1"为可读写的。

编辑"/etc/overlayroot.conf",输入如下命令:

bash 复制代码
sudo gedit /etc/overlayroot.conf

可以看出,默认配置为:

bash 复制代码
overlayroot="";

修改为:

bash 复制代码
overlayroot="tmpfs:swap=0,recurse=0"

重启后,查看挂载情况:

可以看出"/dev/sda1"已经变为只读了。

3)修改超时时间

重启时,系统会进入GRUB界面,如下图。

默认等待时间为30s,若需要修改时间,可修改"/boot/grub/grub.cfg"将"timeout"修改为想要的值(需要暂时禁用Overlayroot)。如下图。

4)挂载读写分区

若系统需要保存数据,如日志或数据库等,可重新划分一个磁盘分区,将此分区挂载为可读写的,并修改"/etc/fstab"进行自动挂载,在此不再赘述。

5)禁止Overlayroot

若需要修改根文件系统相关文件,需要禁止Overlayroot,可在GRUB界面,按"e"键,修改传递内核参数,添加"overlayroot=disable",如下图。

注意以上操作只是临时禁止Overlayroot,重启后失效。

若想永久禁止Overlayroot,按上述操作进入系统后,重新编辑"/etc/overlayroot.conf",修改为默认配置:

bash 复制代码
overlayroot="";

总结,本文介绍了Ubuntu构建只读文件系统。

相关推荐
Moshow郑锴3 小时前
Ubuntu 26.04 中文输入法 : fcitx5+Rime中州韵引擎
linux·运维·ubuntu
Moshow郑锴6 小时前
Ubuntu 26.04 更换阿里云源镜像
linux·运维·ubuntu
梦想的颜色10 小时前
从零入门:Docker在Ubuntu上的安装、使用与主流镜像仓库实战(Java/Go/MySQL/PostgreSQL/MongoDB/Nginx
java·ubuntu·docker
行智科技12 小时前
FAST-LIVO2 源码精读(二):环境搭建与编译避坑
算法·ubuntu·自动驾驶·slam
Qres82113 小时前
docker & WSL & Ubuntu安装记录
ubuntu·docker·容器·wsl
祭曦念16 小时前
【共创季稿事节】鸿蒙原生 ArkTS 布局:NavRouter + NavDestination 导航布局实战
ubuntu·华为·harmonyos
黑白园16 小时前
【环境搭建】虚拟机及Ubuntu安装所需的电脑硬件资源
linux·ubuntu
syc78901231 天前
中文语境下AI编码工具实战对比:从迭代体验看日常开发选择
linux·人工智能·ubuntu
vsropy1 天前
Ubuntu网络图标消失问题/有网络问号
linux·运维·ubuntu
coderwu1 天前
Ubuntu 24.04 终端输入 openclaw config 提示未找到命令解决办法
linux·运维·ubuntu