0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

防止根文件系统破坏,OverlayRootfs 让你的设备更安全

Firefly开源团队 2025-01-08 16:33 次阅读

OverlayRootfs 介绍

OverlayRootfs 是指利用 OverlayFS 威廉希尔官方网站 创建的根文件系统(root filesystem)。OverlayFS 是一种联合文件系统(UnionFS),允许将多个文件系统层合并成一个单一的视图,在 Linux 系统中广泛应用。使用 OverlayRootfs 的设备可以很轻松的实现:根文件系统写保护、恢复出厂设置功能。

根文件系统写保护

使能 OverlayRootfs 的 Firefly 设备 Rootfs 分区会被挂载到 /root-ro只读保护(Lower layer),所有的用户修改都是写入到 Userdata 分区的 /userdata/rootfs_overlay(Upper layer),不会写入到 Rootfs 分区,确保 Rootfs 分区数据只读而不会被破坏。OverlayRootfs 会把 /root-ro 和 /userdata/rootfs_overlay 合并成一个单一的视图,用户在使用上是无感的。

示例说明:

通常 Linux 设备如果频繁的硬件断电重启,可能会造成读写分区的损坏,从而无法正常开机。Firefly 使能 OverlayRootfs 的设备,真实读写是 userdata 分区,即使硬件断电导致 userdata 分区损坏设备依然能以只读的形式启动根文件系统,用户依然可以控制设备做一些分区恢复、数据保存的操作。下面是人为的破坏 userdata 后依然可以以只读的方式开机:

2f4dcfcc-cd9b-11ef-9434-92fbcf53809c.png

可以创建或者删除一个文件来测试 OverlayRootfs,真实数据是写入到了 /userdata/rootfs_overlay 上。

# 创建一个文件,可以在 /userdata/rootfs_overlay/ 下相同目录找到root@firefly:~# touch /usr/local/bin/firefly-testroot@firefly:~# ls /userdata/rootfs_overlay/usr/local/bin/firefly-test/userdata/rootfs_overlay/usr/local/bin/firefly-test
# 删除 /userdata/rootfs_overlay/ 下对应文件,真实文件系统中的相应文件也会被修改root@firefly:~# rm -rf /userdata/rootfs_overlay/usr/local/bin/firefly-testroot@firefly:~# ls /usr/local/bin/disable_ModemManager.sh docker-compose ec200.sh quectel-CM restart_plank.sh

由于 rootfs 分区是只读而且不会被修改的,所以使用 df -h 可以看到 rootfs 分区可用空间不大这是正常的,用户真正写入的是 userdata 分区。

2f6949a0-cd9b-11ef-9434-92fbcf53809c.png

恢复出厂设置

执行“recovery reset”系统会自动擦除 userdata 分区,让设备文件系统恢复到刚刚烧录完成的状态。

# 创建一个文件验证功能,执行 recovery reset 恢复出厂设置。root@firefly:~# touch /home/firefly/testroot@firefly:~# ls /home/firefly/test/home/firefly/testroot@firefly:~# recovery resetcommand: --wipe_allupdate: write command to command file: doneupdate: write command to misc file: doneupdate: reboot!
# 重启之后root@firefly:~# ls /home/firefly/testls: cannot access '/home/firefly/test': No such file or directory

关闭OverlayRootfs功能

部分场景可能需要关闭 OverlayRootfs,如:快速启动、A&B 系统等,可以通过修改 kernel 启动参数来使能/关闭 OverlayRootfs 功能。如 RK3576:

# 修改 kernel 的 dts chosen 节点。kernel/arch/arm64/boot/dts/rockchip/rk3576-linux.dtsi
chosen: chosen {// 关闭 OverlayRootfs 功能//bootargs = "earlycon=uart8250,mmio32,0x2ad40000 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rw rootwait rcupdate.rcu_expedited=1 rcu_nocbs=all";// 使能 OverlayRootfs 功能bootargs = "earlycon=uart8250,mmio32,0x2ad40000 console=ttyFIQ0 root=PARTLABEL=rootfs rootfstype=ext4 ro rootwait overlayroot=device:dev=PARTLABEL=userdata,fstype=ext4,mkfs=1 rcupdate.rcu_expedited=1 rcu_nocbs=all net.ifnames=0";

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11320

    浏览量

    209839
  • 根文件系统
    +关注

    关注

    0

    文章

    26

    浏览量

    12000
收藏 人收藏

    评论

    相关推荐

    基于Buildroot的Linux系统构建之文件系统

    基本的Linux文件系统是Unix文件夹目录层次结构,skeleton是构建文件系统的基础。   skeleton配置入口:   S
    发表于 04-01 10:46 2616次阅读

    roofs文件系统简介制作(下)

    文件系统首先是内核启动时所mount的第一个文件系统,内核代码映像文件保存在文件系统中,而
    的头像 发表于 09-18 09:26 1920次阅读
    roofs<b class='flag-5'>根</b><b class='flag-5'>文件系统</b>简介制作(下)

    Linux文件系统的组成及构建方案

    Linux“三巨头”已经完成了 2 个了,就剩最后一个 rootfs(文件系统)了,本章就来学习一下文件系统的组成以及如何构建
    发表于 10-13 14:21 1034次阅读

    文件系统的含义和相关重要概念以及加载代码分析

    简单的来说,文件系统包括虚拟文件系统和真实根文件系统。在Kernel启动的初始阶段,首先去创建虚拟的
    的头像 发表于 01-23 08:54 7976次阅读

    文件系统

    文件系统uClinux中的文件系统可以有多种选择。通常情况下,ROMfs是使用最多的文件系统,它是一种简单、紧凑和只读的文件系统。ROMf
    发表于 06-02 09:29

    文件系统的制作

    在嵌入式Linux操作系统越中文件系统作为操作系统的重要组成部分,用于控制对数据文件设备的存取,提供对
    发表于 04-29 21:32

    Linux文件系统简介

    Linux文件系统简介 什么是文件   文件系统首先是一种
    发表于 04-21 17:01 5113次阅读

    基于Cramfs的文件系统配置

    文件系统是构建一个Linux 嵌入式系统的重要组成部分,目前嵌入式系统可以选择的文件系统有:
    发表于 05-25 17:07 23次下载

    基于zynq的Linux文件系统生成

    Linux中Root Filesystem(文件系统)是必不可少的,常用的是BusyBox,本节就介绍一下使用BusyBox制作Linux文件系统rootfs,主要参考xilinx
    发表于 02-10 15:58 5825次阅读
    基于zynq的Linux<b class='flag-5'>根</b><b class='flag-5'>文件系统</b>生成

    设备文件系统devfs详细解析

    ,典型的 /dev 树包含数百个块特殊文件和字符特殊文件,它们全都在文件系统上。每个特殊文件都可以
    发表于 11-01 15:36 0次下载

    CramFS文件系统的移植解析

    文件系统是构建一个uCLinux嵌入式系统的重要组成部分。目前嵌入式系统可以选择的文件系统
    发表于 11-06 11:21 0次下载

    嵌入式Linux开发-文件系统NFS网络挂载

    文件系统是Linux内核启动之后挂载的第一个文件系统,上篇文章里已经介绍过,如何使用busybox来制作文件系统。这篇文章介绍
    的头像 发表于 08-14 08:57 1911次阅读

    rootfs文件系统制作

    本文记录了文件系统的一些知识点,Busybox 工具的使用和 最小文件系统的制作。
    发表于 10-31 11:56 2次下载

    使用BusyBox构建文件系统

    文件系统的构建,是 Linux移植三大组成部分的最后一步,文件系统构建好后,就构成了一个基础的、可以运行的嵌入式 Linux最小系统
    的头像 发表于 04-19 11:20 1335次阅读
    使用BusyBox构建<b class='flag-5'>根</b><b class='flag-5'>文件系统</b>

    Linux文件系统的挂载过程

    Linux文件系统(rootfs)是Linux系统中所有其他文件系统和目录的起点,它是内核启动时挂载的第一个文件系统
    的头像 发表于 10-05 16:50 444次阅读