<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

如何配置只讀屬性的文件系統(Colibri iMX7為例)

星星科技指導員 ? 來源:Toradex胡珊逢 ? 作者:Toradex胡珊逢 ? 2023-12-07 09:31 ? 次閱讀

By Toradex胡珊逢

在先前的文章我們已經介紹在使用eMMC的模塊上配置只讀屬性的文件系統,以及利用squashfs和overlayfs掛載可寫分區。Toradex的產品除了使用eMMC存儲外,還有部分是采用Nand Flash,例如Colibri iMX7和Colibri iMX6ULL。下面將以Colibri iMX7為例介紹如何配置只讀屬性的文件系統。

由于存儲介質不同,Nand Flash上通常采用如jffs2、UBI等格式文件系統。Toradex的Linux系統使用UBI文件系統。

在Colibri iMX7的Nand Flash上會采用以下規劃。Nand Flash總體上劃分為兩個部分。最前面的raw部分不采用任何文件系統,直接存儲模塊硬件信息bcb,u-boot和u-boot環境變量。第二部分則使用UBI,創建5個volume,用于存儲內核文件(kernel)、設備樹文件(dtb)、M4的固件(m4-fw)、Linux文件系統(rootfs)、用戶文件(userdata)。其中rootfs將設置成自讀屬性,而userdata則可以寫入數據。

1657097520324326.png

Toradex Easy Installer可以通過image.json文件方便地修改分區,從而避免使用命令工具。首先從這里下載用于Colibri iMX7S的Linux BSP v5.x安裝文件。解壓后在image.json中添加userdata的相關配置。

-----------------------------------

{

"name": "rootfs",

"content": {

"filesystem_type": "ubifs",

"filename": "Reference-Minimal-Image-colibri-imx7.tar.xz",

"uncompressed_size": 108.1171875

},

"size_kib": 102400

},

{

"name": "userdata",

"content": {

"filesystem_type": "ubifs",

"filename": "app.tar.xz",

"uncompressed_size": 0.1171875

}

}

-----------------------------------

這里name指定ubi volume的名字,filesystem_type用于指定ubifs文件格式,filename里包含了需要燒錄到userdatavolume的文件,這些是用戶應用和配置等,uncompressed_size是指app.tar.xz未壓縮的大小,用于顯示Toradex Easy Installer的安裝進度條。更多關于image.json配置說明請參考這里。

使用Toradex Easy Installer將上面修改的鏡像燒錄到Colibri iMX7S即可。啟動后進入u-boot,使用下面名可以看到所創建的volume。

-----------------------------------

Colibri iMX7 # ubi part ubi

Colibri iMX7 # ubi info layout

Volume information dump:

vol_id 0

......

name kernel

Volume information dump:

vol_id 1

......

skip_check 0

name dtb

Volume information dump:

vol_id 2

......

skip_check 0

name m4firmware

Volume information dump:

vol_id 3

......

skip_check 0

name rootfs

Volume information dump:

vol_id 4

......

skip_check 0

name userdata

-----------------------------------

啟動進入Linux后,userdata并不會被自動掛載,需要將下面內容添加到/etc/fstab文件中?,F在rootfs根目錄還沒有設置成只讀屬性,可以創建/home/root/userdata目錄用于掛載userdata卷。

-----------------------------------

ubi:userdata /home/root/userdata ubifs defaults,noatime,rw 1 1

-----------------------------------

于此同時,還可以進行系統配置。例如添加一個開機啟動應用。該應用write_to_file在運行時會往/home/root/userdata寫入一個文件。在/etc/systemd/system/目錄下創建user-demo.service。

user-demo.service

-----------------------------------

[Unit]

Description=launch user's demo on dedicated partition

ConditionFileIsExecutable=/home/root/userdata/write_to_file

After=multi-user.target

[Service]

WorkingDirectory=/home/root/userdata

Type=simple

ExecStart=/home/root/userdata/write_to_file

[Install]

WantedBy=multi-user.target

-----------------------------------

運行下面命令使user-demo.service開機運行。然后重啟系統。

-----------------------------------

~# systemctl enable user-demo.service

~#reboot

-----------------------------------

此時,使用mount命令查看所掛載的卷,其中有ubi:userdata。

-----------------------------------

~# mount -l

tmpfs on /var/volatile type tmpfs (rw,relatime)

ubi:userdata on /home/root/userdata type ubifs (rw,noatime,assert=read-only,ubi=0,vol=4)

-----------------------------------

在/home/root/userdata目錄下也可以看到write_to_file寫入的文件file.txt。

-----------------------------------

~/userdata# ls

file.txt write_to_file

~/userdata# cat file.txt

This is a writing file test

~/userdata# systemctl status user-demo.service

* user-demo.service - launch user's demo on dedicated partition

Loaded: loaded (/etc/systemd/system/user-demo.service; enabled; vendor preset: disabled)

Active: inactive (dead) since Wed 2022-07-06 06:09:44 UTC; 14min ago

Process: 316 ExecStart=/home/root/userdata/write_to_file (code=exited, status=0/SUCCESS)

Main PID: 316 (code=exited, status=0/SUCCESS)

Jul 06 06:09:44 colibri-imx7-02873356 systemd[1]: Started launch user's demo on dedicated partition.

Jul 06 06:09:44 colibri-imx7-02873356 systemd[1]: user-demo.service: Succeeded.

-----------------------------------

最后需要再次修改/etc/fstab將rootfs根目錄設置為只讀屬性,noatime后面添加ro。

-----------------------------------

/dev/root / auto noatime,ro 1 1

-----------------------------------

重啟系統,進入u-boot命令模式,配置下參數。

-----------------------------------

setenv ubiargs "ubi.mtd=ubi root=ubi0:rootfs ro rootfstype=ubifs ubi.fm_autoconvert=1"

saveenv

reset

-----------------------------------

重啟進入Linux系統。根目錄/已經是只讀狀態,無法創建文件。而/home/root/userdata目錄下的應用仍可以正常執行并寫入文件。

-----------------------------------

:~# mount -l

ubi0:rootfs on / type ubifs (ro,noatime,assert=read-only,ubi=0,vol=3)

~# mkdir test

mkdir: can't create directory 'test': Read-only file system

-----------------------------------

總結

通過將Linux的系統文件設置為只讀狀態,可以降低因文件系統損壞導致無法啟動的概率。對于更高要求的應用,甚至可以使用外部存儲作為備份,用于恢復文件。

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11017

    瀏覽量

    206957
  • Nand flash
    +關注

    關注

    6

    文章

    236

    瀏覽量

    39531
  • emmc
    +關注

    關注

    6

    文章

    184

    瀏覽量

    52079
  • UBI
    UBI
    +關注

    關注

    0

    文章

    9

    瀏覽量

    4094
  • rootfs
    +關注

    關注

    0

    文章

    19

    瀏覽量

    4637
收藏 人收藏

    評論

    相關推薦

    嵌入式文件系統構建

    的,都是采用目錄樹的結構。在嵌入式系統中常見的文件系統有cramfs、romfs、jffs、yaffs等,這里就以制作cramfs文件系統
    發表于 09-02 14:25

    適用于iMX7處理器的的小巧高效完整電源解決方案

    描述適用于 NXP? IMX7 系列應用處理器的高效靈活的小尺寸電源參考設計展示了適用于 iMX7 處理器的完整電源解決方案。這個簡單的解決方案僅使用 5 個直流/直流轉換器和一個序列發生器 IC
    發表于 12-28 11:50

    一文搞懂定制Ubuntu文件系統-基于迅imx6開發板

    啟動。2.編譯Ubuntu文件系統。3.TF卡燒寫。實驗環境開發環境:Ubuntu14開發板:迅imx6q工業級(迅imx6系列開發板均
    發表于 06-28 15:52

    基于iMX7示例了雙路以太網的設計和配置思路

    接口,本文就基于Toradex基于NXP iMX7 Dual SoC的ARM核心板模塊Colibri iMX7D示例擴展兩路以太網。
    發表于 12-28 06:45

    基于iMX7 M4 SPI Slave模式的驅動供參考

    的arm平臺同樣來自于Toradex 基于NXP iMX7 ARM處理器的Colibri iMX7 ARM嵌入式平臺。
    發表于 01-05 07:52

    基于NXP iMX7 arm處理器展示鋰電池的應用方案

    本文將使用基于NXP iMX7 arm處理器的來自Toradex Colibri iMX7的低功耗演示板來展示鋰電池的應用方案。
    發表于 01-13 07:24

    移植的openharmony系統燒錄到開發板文件系統只讀

    可以正常敲命令,但文件系統只讀,求助各位大佬
    發表于 04-27 16:16

    imx8qxp-mek將文件推送到“/vendor/etc”目錄時出現只讀文件系統錯誤是怎么回事?

    “/vendor/lib64/hw”和“/vendor/etc”目錄。由于默認文件系統只讀的,因此我通過以下鏈接重新安裝文件系統。我可以推送 gps.default.so 文件,但在
    發表于 04-11 08:17

    uClinux 下JFFS2 文件系統的實現

    uClinu x默認的根文件系統ROMFS是一個只讀文件系統, 不支持動態擦寫保存。雖然對于需要系統動態保存的數據可以采用虛擬RAM盤的方法,但系統
    發表于 05-16 13:21 ?9次下載

    嵌入式Linux上JFFS文件系統的實現方法

    我們使用的uClinux系統采用ROMFS作為根文件系統,它相對于一般的EXT2文件系統,具有節約空間的優勢。但是ROMFS是一種只讀文件系統
    發表于 05-14 10:35 ?1211次閱讀
    嵌入式Linux上JFFS<b class='flag-5'>文件系統</b>的實現方法

    基于Cramfs的根文件系統配置

    文件系統是構建一個Linux 嵌入式系統的重要組成部分,目前嵌入式系統可以選擇的根文件系統有:Romfs、Cramfs、Ramfs、Jffs2、Ext2 等,而目前廣泛使用的Cram
    發表于 05-25 17:07 ?23次下載

    Linux嵌入式文件系統如何構建

    的,都是采用目錄樹的結構。在嵌入式系統中常見的文件系統有cramfs、romfs、jffs、yaffs等,這里就以制作cramfs文件系統為例進行講解。cramfs文件系統是一種經過壓
    發表于 06-18 09:23 ?892次閱讀

    Red Hat工程師開發新的Linux文件系統

    紅帽工程師 Alexander Larsso 與 Giuseppe Scrivano 宣布開發一個新的 Linux 內核文件系統 “Composefs” ,Composefs 是一個新的機會共享(opportunistically-sharing)和可驗證的只讀
    發表于 11-30 10:13 ?150次閱讀

    只讀壓縮文件系統EROFS的設計與實現

    EROFS是一個針對移動設備的只讀壓縮文件系統。作者觀察到,當前手機配備的存儲空間不大,而安卓系統系統分區、各種app占用的空間越來越大。導致用戶的實際可支配空間越來越小。如圖所示,
    的頭像 發表于 08-31 15:09 ?1370次閱讀
    <b class='flag-5'>只讀</b>壓縮<b class='flag-5'>文件系統</b>EROFS的設計與實現

    如何使用squashfs只讀文件系統制作Linux系統文件

    Colibri iMX6 的 eMMC 上我們將使用以下分區規劃。BootFS 為 FAT32 格式,該分區上包含 Linux 內核文件,device tree 等啟動文件,如果是
    發表于 01-09 11:43 ?704次閱讀
    如何使用squashfs<b class='flag-5'>只讀</b><b class='flag-5'>文件系統</b>制作Linux<b class='flag-5'>系統</b><b class='flag-5'>文件</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>