当前位置: 首页 > news >正文

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

输入如下命令:

sudo apt-get install overlayroot

2)配置Overlayroot

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

mount

结果如下:

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

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

sudo gedit /etc/overlayroot.conf

可以看出,默认配置为:

overlayroot="";

修改为:

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",修改为默认配置:

overlayroot="";

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Python】数据可视化之分类图
  • 图像处理基础篇-镜像仿射透视
  • jmeter 梯度测试 如何查看TPS、RT指标
  • 基于单片机的多功能电子钟设计
  • 一个进程的情况下,例如 tomcat 只启动一个项目,cpu 很高,倒是内存很低,是什么原因呢?
  • Kotlin 流 Flow
  • 安装win7鼠标键盘不能动原因分析及解决办法
  • Unity3D在2D游戏中获取触屏物体的方法
  • Spring Boot-自定义banner
  • ASP.NET Core 入门教学十七 GraphQL入门指南
  • 触想内嵌式工业一体机应用于智能检票机改善旅游体验
  • How can I provide a RGBA png file to OpenAI PHP library
  • 【LeetCode】07.整数反转
  • 系统架构师考试学习笔记第三篇——架构设计高级知识(18)面向服务架构设计理论与实践
  • DFS算法专题(一)——二叉树中的深搜【回溯与剪枝的初步注入】
  • 【面试系列】之二:关于js原型
  • CSS相对定位
  • Cumulo 的 ClojureScript 模块已经成型
  • Laravel Telescope:优雅的应用调试工具
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Node项目之评分系统(二)- 数据库设计
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Transformer-XL: Unleashing the Potential of Attention Models
  • use Google search engine
  • Web设计流程优化:网页效果图设计新思路
  • 编写高质量JavaScript代码之并发
  • 给初学者:JavaScript 中数组操作注意点
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 使用Gradle第一次构建Java程序
  • 推荐一个React的管理后台框架
  • 因为阿里,他们成了“杭漂”
  • 怎样选择前端框架
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​卜东波研究员:高观点下的少儿计算思维
  • # 透过事物看本质的能力怎么培养?
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (libusb) usb口自动刷新
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (九)信息融合方式简介
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (十八)三元表达式和列表解析
  • (算法)N皇后问题
  • (算法)求1到1亿间的质数或素数
  • (一) storm的集群安装与配置
  • (一)kafka实战——kafka源码编译启动
  • (轉)JSON.stringify 语法实例讲解
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Framework 3.5安装教程
  • .NET Micro Framework 4.2 beta 源码探析