文件系統1-之輪廓綱要

by 20200601
本筆記追求將文件系統或者存儲設備從linux的啓動、加載到運行一路走來浮於面上的大脈絡藍圖,串連成線,梳理出輪廓綱要,形成骨幹鏈條。各個點內的機制與實現,以及點與點之間配合的細節之處,之後再各個點逐一縱向理解。
 
一、分區
整個Flash的剖面如上圖,0地址處是Uboot,隨之是要給到kernel的啓動參數存放區,然後是kernel,最後是文件系統。文件系統根據必備性,放到前面的是rootfs,最後纔是用戶空間的其他文件系統。
 
rootfs之所單列出來,是因爲她是kernel的必要依賴,rootfs裏面都是系統啓動運行必備的程序和庫文件。
上面這個剖面所表示的Flash地址空間就設備uboot的分區表了,這個分區表實質上是人爲約定下每個部分的起止地址而已,這個起止地址是需要告訴程序的,uboot根據bootparams的地址和kernel的地址來啓動kernel並傳遞參數,kernel根據rootfs的地址來加載rootfs。
uboot/include/config/xxx.h 裏面有一個宏定義
#define MTDPARTS_DEFAULT "mtdparts=nandflash0:256k@0(bootloader)," \
                            "128k(params)," \
                            "2m(kernel)," \
                            "-(root)"

上面是整個裸flash分區情況,當進到kernel後,還需要對磁盤(flash)在進行分區,這個分區主要是給文件系統用的,這個分區後,每個分區都指定一種文件系統格式,將一個文件系統格式指定給分區,與分區關聯起來,並指定掛載點的過程叫掛載(mount),注意這裏是有三個要素:分區、文件系統、掛載點。所謂掛載點就是給分區在根目錄樹上找一個訪問路徑。

mount -t ext2 /dev/loop0 /mnt/point1

文件系統的創建

mkfs.ext4 /dev/sda
mkfs.btrfs /dev/sdb

 

 
從上面梳理出分區的內容可知:
sysupgrade升級的是kernel+rootfs,而zgateway 在另外的其他分區,屬於非系統必備的應用程序,所以升級的時候zgateway是不被改動的,這同windows安裝C盤其他盤不被改動是一樣的道理。
 
雙固件就是有兩個kernel區、兩個rootfs區。
 
二、文件系統與根文件系統rootfs的澄清
 
根文件系統與kernel之間的關係,都說文件系統是kernel的子系統,但爲啥kernel與根文件系統是分開獨立的,而不是包含在kernel中?
我認爲這裏是概念上的歧義導致的,雖有都有“文件系統”四個字,但實質不是一個東西。
 
文件系統是一個模塊概念,作用是組織磁盤上的數據,實現代碼與、機制、原理都在kernel中,所以說是kernel的五大巨頭之一。
根文件系統,不是上面哪個文件系統的概念,實際上是核心應用程序的集合,然後用文件系統將這些程序、庫的集合組織在一起,這些應用是系統啓動不可或缺的,必須的,並且內核把這些應用程序放在/根目錄下,所以才叫根文件系統。
 
實際上,從性質上看,根文件系統和其他分區都屬於應用程序,只是重要性不一樣而已,根文件系統的程序不能少,少了系統就不穩定不正常了,這如同貨車的方向輪與後面並排的輪胎相似,都是輪胎,並排的輪胎壞一個暫時沒事,方向輪有問題車就沒法動。
 
三、分區與文件系統的工具
  • mount
  • mtd
  • df
  • mkfs
主要是獲取分區、文件系統格式、掛載點三者的狀態、格式與容量信息
 
/# cat proc/partitions
major minor  #blocks  name

  31        0        512 mtdblock0
  31        1        512 mtdblock1
  31        2        256 mtdblock2
  31        3      32768 mtdblock3
  31        4       1408 mtdblock4
  31        5      31360 mtdblock5
  31        6        512 mtdblock6
  31        7        512 mtdblock7
  31        8        512 mtdblock8
  31        9      16384 mtdblock9
  31       10      32768 mtdblock10
  31       11      45824 mtdblock11
  253       0      62464 zram0

上面的內容今天白天梳理的時候還是沒覺得啥,現在覺得太似曾相識了,這分區啥的同單片機的flash一樣的簡直一個模子的。

 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章