1. 程式人生 > >openWRT相關檔案系統簡介

openWRT相關檔案系統簡介

  openWRT作為嵌入式系統,使用到了多種檔案系統來實現特定的功能。其常使用的檔案系統有SquashFS、JFFS2和overlayfs等,每個檔案系統都具有各自的特性,openWRT也正是據此來使用不同檔案系統來實現各種功能需求。下面將對openWRT常用到的檔案系統進行簡單的介紹,並根據具體產品所使用的檔案系統與空間佈局關聯性出發,進一步分析各種檔案系統在openWRT中所扮演的角色。

1、openWRT主要使用的檔案系統

         以下逐一簡單介紹這些檔案系統的主要特性,部分特性也是openWRT選擇的依據。

(1)SquahFS檔案系統簡介

    SquashFS是基於GPL協議開發的只讀壓縮檔案系統。 早期版本使用gzip演算法進行壓縮,由於改進後的LZMA演算法具有高壓縮比、解壓縮時僅需少量記憶體、解壓和壓縮速度快以及支援多執行緒等特點,使得該演算法非常適合於嵌入式系統中。openWRT中使用了LZMA演算法的SquashFS檔案系統,其具有如下特點:

1)  佔用更少的空間(據統計較之JFFS2檔案系統可以節省20~30%的空間);

2)  可以支援FailSafe功能,即系統出現問題可以恢復出廠配置;

3)  只讀檔案系統;

4)空間浪費,當該檔案系統中的某一檔案被修改時,該檔案會被拷貝到另一個分割槽(如JFFS2)中;

該檔案系統在openWRT中主要是用於儲存一些基礎檔案,如busybox、dropbear和iptables等,作為openWRT的只讀部分以支援FailSafe模式。 

(2)JFFS2簡介

JFFS2是一種可寫的日誌結構檔案系統,其可以使用LZMA演算法進行壓縮。具備如下的特點:

1)  可寫,是日誌結構型別檔案系統,且具有損耗平衡;

2)  可壓縮所以程式使用更少空間;

3)  讀是以頁(頁大小512位元組)為單位進行,而擦寫是以擦寫塊((NOR:64~128KB, NAND:8~32KB))為單位操作。該系統維護了幾個連結串列來管理擦寫塊,根據擦寫塊上的內容,擦寫塊可能會在不同的連結串列上。

該檔案系統在openWRT中主要是用於儲存可以更改的配置檔案,以及安裝的軟體包等,作為openWRT的可寫部分提供了更新升級軟體不需要整體刷機的功能。 

(3)overlayfs簡介

overlayfs檔案系統是由Miklos Szeredi所開發,主要目的是虛擬化系統建立在共同的基礎檔案系統上。其主要的特性:疊合兩種不同的檔案系統,一個可寫,另一個只讀。這樣的特性對使用者是透明的,可使得系統能支援恢復出廠配置等功能。目前該檔案系統暫未合入到linux核心原始碼中,下文將詳細介紹該系統的原理及相關特性。該檔案系統在openWRT中主要是提供一種粘合機制,這樣提高了openWRT所能採用不同檔案系統實現不同功能的靈活性。 

2、openWRT檔案系統與Flash佈局

由於嵌入式系統的特性限制,以及相關功能的需求導致了openWRT如果使用單一的檔案系統將難以實現。所以目前openWRT根據所要實現的功能選擇不同的檔案系統進行組合實現,常用的檔案系統以SquahFS、JFFS2和overlayfs等為主。

在大多數路由系統中使用Flash來儲存程式和資料,根據Flash和處理晶片的連線方式可以分為兩種:Raw Flash,即Flash和處理晶片直接連線;FTL Flash,通過在Flash和處理晶片之間加入附加控制晶片(Flash Translation Layer)進行連線。openWRT目前採用Raw Flash方式。

檔案系統和Flash的佈局具有較強的關聯性,以下將根據某款路由產品所使用的檔案系統及Flash的佈局進行介紹。系統啟動之後可以根據串列埠輸出的列印和檔案系統/proc綜合分析得出具體產品的Flash佈局和檔案系統的使用情況。如下是一次正常啟動的輸出:

[0.680000] Creating 5MTD partitions on "spi0.0":

[0.690000]0x000000000000-0x000000020000 :  "u-boot"

[0.690000]0x000000020000-0x00000011da50 :  "kernel"

[0.710000]0x00000011da50-0x0000007f0000 :  "rootfs"

[0.740000]0x0000003d0000-0x0000007f0000 :  "rootfs_data"

[0.750000]0x0000007f0000-0x000000800000 :  "art"

[0.760000]0x000000020000-0x0000007f0000 :  "firmware"

         根據上述的輸出,以及在串列埠中使用命令“cat /proc/mtd”和“mount”可以綜合得出表1。

Flash Layout

Layer0

u-boot (mtd0)

firmware 8000KB(mtd5)

art (mtd4)

Layer1

kernel (mtd1)

rootfs 6985KB(mtd2)

mountpoint

/

filesystem

overlayfs

Layer2

rootfs_data (mtd3)

Size in KB

128KB

1014KB

2561KB

4424KB

64KB

mountpoint

/rom

/overlayfs

filesystem

SquashFS

JFFS2

                                      表1  Flash佈局和檔案系統

         OpenWRT使用MTD(Memory TechnologyDevice)來標記Flash的每個分割槽,這樣可以方便的使用名稱來操作相關分割槽。從表中可以看出各個分割槽所使用的檔案系統及其掛載點,如果相關項為空說明沒有使用相關檔案系統及掛載使用。每個分割槽所包含的主要內容有:

1)u-boot(mtd0),該分割槽存放載入程式bootloader。

2)kernel(mtd1),該分割槽存放Linux核心。

3)rootfs(mtd2),該分割槽分成兩部分,一部分以檔案系統SquashFS的形式掛載到/rom為只讀部分,該部分包括一些基礎的檔案,如busybox、dropbear和iptables等。也包含一些預設的配置檔案可以用以openWRT的FailSafe模式。另一部分為mtd3。

4)rootfs_data (mtd3),該分割槽使用檔案系統JFFS2成為可寫部分,包含有可以更改的配置檔案,以及安裝的軟體包等。

5)art (mtd4),該分割槽用於儲存wifi的校準資料(art:Atheros Radio Test)。

6)firmware (mtd5),該分割槽包含分割槽mtd1和mtd2。

其中分割槽/rom和/overlayfs是通過overlayfs檔案系統掛載到目錄“/”下給使用者操作,底層的處理對使用者是完全透明的。在系統升級過程中常使用命令“mtd –r write xxx.bin firmware”來完成,需要更新整個分割槽的資訊。否則如果使用命令“mtd –r write xxx.bin kernel”來升級的話,需要手動調整後面的檔案系統相關資訊,這可能會導致很多資訊不一致的情況出現。

相關推薦

openWRT相關檔案系統簡介

  openWRT作為嵌入式系統,使用到了多種檔案系統來實現特定的功能。其常使用的檔案系統有SquashFS、JFFS2和overlayfs等,每個檔案系統都具有各自的特性,openWRT也正是據此來使用不同檔案系統來實現各種功能需求。下面將對openWRT常用到的檔案系統

ubuntu的檔案系統簡介

特點: 1.windows中常見的磁碟格式有FAT32/ntfs,windows是封閉式系統,無法開啟ext3或mac日誌。 ubuntu檔案系統廣泛使用ext4格式,從而將整個硬碟寫入動作完整記錄。而且ubuntu檔案系統可以掛載wi

【FastDFS】分散式檔案系統簡介

一、前言 在前一段工作的時間中,小編接觸了檔案系統——FastDFS,它是一個用C語言編寫的開源的分散式檔案系統。下面就對他進行簡單的介紹 二、什麼是FastDFS? FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、

VxFS(Veritas File System)檔案系統簡介

VxFS(Veritas File System)檔案系統通常被應用於分散式叢集、雙機、異地容災等高可靠解決方案中,它主要是和VCS/VVR/GCO/VxVM這些軟體配套使用。從我使用VxFS的經驗來看,該檔案系統的一大優勢是——由於HA的主、備節點上可以同時線上看到相同的磁碟組(Diskgroup

ZFS檔案系統簡介

ZFS熟悉Solaris的兄弟一定不會陌生,它就是Solaris10上推出的檔案系統,有著諸如平滑擴容,秒級回滾等諸多優點,而且結合Solaris的zone堪稱完美。 ZFS(Zettabyte File System)是由SUN公司的Jeff Bonwick領導設計的一種基於Solaris的檔案系

Linux檔案系統簡介和軟連結和硬連結的區別

Linux有著極其豐富的檔案系統,大體可分為如下幾類: 網路檔案系統:如nfs、cifs等; 磁碟檔案系統:如ext3、ext4等; 特殊檔案系統:如prco、sysfs、ramfs、tmpfs等; 一、Linux系統中一切皆檔案(除程序以外) Linux系統的頂層目錄結構如下 1 /

核心proc檔案系統簡介

/proc檔案系統是一個特殊的由核心建立的檔案系統,她僅存在於記憶體之中而不在外存(硬碟、flash)上。核心用她來向用戶空間程序輸出訊息,可以說是核心向用戶空間開啟的一扇窗戶。 最初開發/proc檔案系統是為提供一種核心及其模組向程序 (proc

各種分散式檔案系統簡介及適用場景

常見的分散式檔案系統有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自適用於不同的領域。它們都不是系統級的分散式檔案系統,而是應用級的分散式檔案儲存服務。 Google學術論文,這是眾多分散式

hadoop 檔案系統簡介

       本來是個輕鬆的週末,卻被一天半的講座填的滿滿的,除了抱怨之外其實自己所收穫的東西著實也有不少。之前一段時間學東西總是有些著急了,是時候靜下來慢下來思考和整理一下自己的思維了。       關於hadoop,之前瞭解著實有些少,hadoop其實就是一種分散式系統

學習Hadoop——HDFS 檔案系統簡介

HDFS (Hadoop分散式檔案系統)採用master/slave 架構。一個HDFS叢集由一個Namenode和一定數目的Datanodes 組成。 Namenode 是一箇中心伺服器,負責管理檔案系統的名稱(namespace) 以及客戶端對檔案的訪問。叢集的Datanode 一般是

各種分散式檔案系統簡介

  常見的分散式檔案系統有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自適用於不同的領域。它們都不是系統級的分散式檔案系統,而是應用級的分散式檔案儲存服務。 Google學術論文,這是眾多分散式檔案系

檔案系統】FAT12檔案系統簡介

1.FAT12檔案系統扇區分配 FAT12檔案系統由引導區、FAT表、根目錄項表和檔案資料區組成,其中引導區程式佔用扇區[0],FAT表1佔用扇區[1]~[9],FAT表2佔用扇區[10]~[18],根目錄項表儲存於扇區[19]~[32],使用者儲存的檔案或者子目錄位於扇區

EXT2檔案系統簡介

一、EXT2檔案系統檔案組織形式 EXT2檔案系統是Linux系統中廣泛使用的檔案系統,該檔案系統是一種索引式檔案系統,它將分割槽分為inode和block,它會給每個檔案分配一個inode,inod

02.linux的檔案系統簡介、檢視目錄ls命令、切換目錄cd命令、建立目錄mkdir、刪除目錄rm、移動重新命名mv、建立檔案touch、拷貝cp

整個檔案系統有一個頂層目錄:/ bin:存放一些可執行的程式(命令); boot:存放系統啟動所需要的一些檔案; dev:系統中的硬體(硬體在Linux中通過裝置檔案來標識); etc:存放配置檔案的地方; home:使用者目錄的總目錄; lib

UBIFS檔案系統簡介 與 利用mkfs.ubifs和ubinize兩個工具製作UBI映象

UBI檔案系統簡介在linux-2.6.27以前,談到Flash檔案系統,大家很多時候多會想到cramfs、jffs2、yaffs2等檔案系統。它們也都是基於檔案系 統+mtd+flash裝置的架構。linux-2.6.27後,核心加入了一種新型的flash檔案系統UBI(

HDFS分散式檔案系統簡介

HDFS(Hadoop Distributed File System)Hadoop 分散式檔案系統 基於流資料模式訪問 就是可以位元組序列化的資料,java.io.Serializable介面 分散式檔案系統處理的資料必須是流資料,可以寫IO

linux基礎3-磁碟和檔案系統相關 LINUX支援哪些檔案系統 linux下磁碟分割槽詳解 圖文(fdisk;mkfs)

一 dumpe2fs :    在Linux使用過程中,我們如果要了解檔案系統的配置情況,可以使用dumpe2fs檢視ext2/ext3/ext4格式的檔案系統資訊。 命令格式: dumpe2fs [選項] 裝置 常用選項: -h  僅列出超級塊中的資訊

Node.js中fs檔案系統-與檔案file相關

1.首先引入fs檔案模組; //讀取檔案; fs.readFile(path[, options], callback)  path:檔名; options:檔案讀取方式; callback:回撥函式;回撥函式有兩個引數err data  其中data是檔案的

Node.js中的fs檔案系統--目錄相關方法;

檔案系統:Linux/Unix (一切皆檔案)file 檔案dir 目錄unknown 未知檔案block 塊狀裝置檔案char 字元型裝置link 連結fifo 管道Windowsfile 檔案dir 目錄unknown 未知檔案 一、與目錄相關的; 1. 首先引入fs檔案模組; va

Linux系統使用者管理相關檔案

Linux系統使用者管理相關檔案(/etc/skel、/etc/default/useradd、etc/login.defs) /etc/skel 目錄/etc/skel目錄一般是存放使用者啟動檔案的目錄,這個目錄是由root許可權控制,當新增使用者時,這個目錄下的檔案自動複製到新新