Ubuntu构建只读文件系统

2024-09-07 12:36

本文主要是介绍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构建只读文件系统。

这篇关于Ubuntu构建只读文件系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145074

相关文章

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。