0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

防止根文件系統(tǒng)破壞,OverlayRootfs 讓你的設(shè)備更安全

Firefly開源團隊 ? 2025-01-08 16:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

OverlayRootfs 介紹

OverlayRootfs 是指利用 OverlayFS 技術(shù)創(chuàng)建的根文件系統(tǒng)(root filesystem)。OverlayFS 是一種聯(lián)合文件系統(tǒng)(UnionFS),允許將多個文件系統(tǒng)層合并成一個單一的視圖,在 Linux 系統(tǒng)中廣泛應(yīng)用。使用 OverlayRootfs 的設(shè)備可以很輕松的實現(xiàn):根文件系統(tǒng)寫保護、恢復(fù)出廠設(shè)置功能。

根文件系統(tǒng)寫保護

使能 OverlayRootfs 的 Firefly 設(shè)備 Rootfs 分區(qū)會被掛載到 /root-ro只讀保護(Lower layer),所有的用戶修改都是寫入到 Userdata 分區(qū)的 /userdata/rootfs_overlay(Upper layer),不會寫入到 Rootfs 分區(qū),確保 Rootfs 分區(qū)數(shù)據(jù)只讀而不會被破壞。OverlayRootfs 會把 /root-ro 和 /userdata/rootfs_overlay 合并成一個單一的視圖,用戶在使用上是無感的。

示例說明:

通常 Linux 設(shè)備如果頻繁的硬件斷電重啟,可能會造成讀寫分區(qū)的損壞,從而無法正常開機。Firefly 使能 OverlayRootfs 的設(shè)備,真實讀寫是 userdata 分區(qū),即使硬件斷電導(dǎo)致 userdata 分區(qū)損壞設(shè)備依然能以只讀的形式啟動根文件系統(tǒng),用戶依然可以控制設(shè)備做一些分區(qū)恢復(fù)、數(shù)據(jù)保存的操作。下面是人為的破壞 userdata 后依然可以以只讀的方式開機:

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

可以創(chuàng)建或者刪除一個文件來測試 OverlayRootfs,真實數(shù)據(jù)是寫入到了 /userdata/rootfs_overlay 上。

# 創(chuàng)建一個文件,可以在 /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/ 下對應(yīng)文件,真實文件系統(tǒng)中的相應(yīng)文件也會被修改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 分區(qū)是只讀而且不會被修改的,所以使用 df -h 可以看到 rootfs 分區(qū)可用空間不大這是正常的,用戶真正寫入的是 userdata 分區(qū)。

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

恢復(fù)出廠設(shè)置

執(zhí)行“recovery reset”系統(tǒng)會自動擦除 userdata 分區(qū),讓設(shè)備文件系統(tǒng)恢復(fù)到剛剛燒錄完成的狀態(tài)。

# 創(chuàng)建一個文件驗證功能,執(zhí)行 recovery reset 恢復(fù)出廠設(shè)置。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

關(guān)閉OverlayRootfs功能

部分場景可能需要關(guān)閉 OverlayRootfs,如:快速啟動、A&B 系統(tǒng)等,可以通過修改 kernel 啟動參數(shù)來使能/關(guān)閉 OverlayRootfs 功能。如 RK3576:

# 修改 kernel 的 dts chosen 節(jié)點。kernel/arch/arm64/boot/dts/rockchip/rk3576-linux.dtsi
chosen: chosen {// 關(guān)閉 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";

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11496

    瀏覽量

    213233
  • 根文件系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    12244
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基于Buildroot的Linux系統(tǒng)構(gòu)建之文件系統(tǒng)

    基本的Linux文件系統(tǒng)是Unix文件夾目錄層次結(jié)構(gòu),skeleton是構(gòu)建文件系統(tǒng)的基礎(chǔ)。   skeleton配置入口:   S
    發(fā)表于 04-01 10:46 ?2864次閱讀

    roofs文件系統(tǒng)簡介制作(下)

    文件系統(tǒng)首先是內(nèi)核啟動時所mount的第一個文件系統(tǒng),內(nèi)核代碼映像文件保存在文件系統(tǒng)中,而
    的頭像 發(fā)表于 09-18 09:26 ?2336次閱讀
    roofs<b class='flag-5'>根</b><b class='flag-5'>文件系統(tǒng)</b>簡介制作(下)

    Linux文件系統(tǒng)的組成及構(gòu)建方案

    Linux“三巨頭”已經(jīng)完成了 2 個了,就剩最后一個 rootfs(文件系統(tǒng))了,本章就來學(xué)習(xí)一下文件系統(tǒng)的組成以及如何構(gòu)建
    發(fā)表于 10-13 14:21 ?1259次閱讀

    文件系統(tǒng)的含義和相關(guān)重要概念以及加載代碼分析

    簡單的來說,文件系統(tǒng)包括虛擬文件系統(tǒng)和真實根文件系統(tǒng)。在Kernel啟動的初始階段,首先去創(chuàng)建虛擬的
    的頭像 發(fā)表于 01-23 08:54 ?8373次閱讀

    文件系統(tǒng)

    文件系統(tǒng)uClinux中的文件系統(tǒng)可以有多種選擇。通常情況下,ROMfs是使用最多的文件系統(tǒng),它是一種簡單、緊湊和只讀的文件系統(tǒng)。ROMf
    發(fā)表于 06-02 09:29

    文件系統(tǒng)的制作

    在嵌入式Linux操作系統(tǒng)越中文件系統(tǒng)作為操作系統(tǒng)的重要組成部分,用于控制對數(shù)據(jù)文件設(shè)備的存取,提供對
    發(fā)表于 04-29 21:32

    Linux文件系統(tǒng)簡介

    Linux文件系統(tǒng)簡介 什么是文件   文件系統(tǒng)首先是一種
    發(fā)表于 04-21 17:01 ?5170次閱讀

    基于Cramfs的文件系統(tǒng)配置

    文件系統(tǒng)是構(gòu)建一個Linux 嵌入式系統(tǒng)的重要組成部分,目前嵌入式系統(tǒng)可以選擇的文件系統(tǒng)有:
    發(fā)表于 05-25 17:07 ?23次下載

    基于zynq的Linux文件系統(tǒng)生成

    Linux中Root Filesystem(文件系統(tǒng))是必不可少的,常用的是BusyBox,本節(jié)就介紹一下使用BusyBox制作Linux文件系統(tǒng)rootfs,主要參考xilinx
    發(fā)表于 02-10 15:58 ?6131次閱讀
    基于zynq的Linux<b class='flag-5'>根</b><b class='flag-5'>文件系統(tǒng)</b>生成

    設(shè)備文件系統(tǒng)devfs詳細解析

    ,典型的 /dev 樹包含數(shù)百個塊特殊文件和字符特殊文件,它們?nèi)荚?b class='flag-5'>根文件系統(tǒng)上。每個特殊文件都可以
    發(fā)表于 11-01 15:36 ?0次下載

    CramFS文件系統(tǒng)的移植解析

    文件系統(tǒng)是構(gòu)建一個uCLinux嵌入式系統(tǒng)的重要組成部分。目前嵌入式系統(tǒng)可以選擇的文件系統(tǒng)
    發(fā)表于 11-06 11:21 ?0次下載

    嵌入式Linux開發(fā)-文件系統(tǒng)NFS網(wǎng)絡(luò)掛載

    文件系統(tǒng)是Linux內(nèi)核啟動之后掛載的第一個文件系統(tǒng),上篇文章里已經(jīng)介紹過,如何使用busybox來制作文件系統(tǒng)。這篇文章介紹
    的頭像 發(fā)表于 08-14 08:57 ?2278次閱讀

    rootfs文件系統(tǒng)制作

    本文記錄了文件系統(tǒng)的一些知識點,Busybox 工具的使用和 最小文件系統(tǒng)的制作。
    發(fā)表于 10-31 11:56 ?2次下載

    使用BusyBox構(gòu)建文件系統(tǒng)

    文件系統(tǒng)的構(gòu)建,是 Linux移植三大組成部分的最后一步,文件系統(tǒng)構(gòu)建好后,就構(gòu)成了一個基礎(chǔ)的、可以運行的嵌入式 Linux最小系統(tǒng)
    的頭像 發(fā)表于 04-19 11:20 ?1703次閱讀
    使用BusyBox構(gòu)建<b class='flag-5'>根</b><b class='flag-5'>文件系統(tǒng)</b>

    Linux文件系統(tǒng)的掛載過程

    Linux文件系統(tǒng)(rootfs)是Linux系統(tǒng)中所有其他文件系統(tǒng)和目錄的起點,它是內(nèi)核啟動時掛載的第一個文件系統(tǒng)
    的頭像 發(fā)表于 10-05 16:50 ?905次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品