1. 程式人生 > >關於使用Initramfs來掛載根檔案系統的一些理解

關於使用Initramfs來掛載根檔案系統的一些理解

關於使用Initramfs和ramdisk來掛載根檔案系統的一些理解

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

轉載請註明出處

CSDN作者:Andoubi

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Initramfs和ramdisk檔案系統都是基於記憶體的檔案系統。若要選擇這兩種方式來掛載根檔案系統,則在一開始配置核心是就應該設定好。通常在虛擬機器上製作好根檔案系統,然後配置核心,支援Initramfs

和ramdisk:

General setup------------------->

[*] Initial RAM filesystem and ARM disk( initramfs/initrd)support

然後在下面一個條目輸入製作好的根檔案系統的路徑全名。最終如下所示:(假設製作好的根檔案路徑是/home/rootfs)

General setup------------------->

[*] Initial RAM filesystem and ARM disk( initramfs/initrd)support

(/home/rootfs)Initramfs source file(s)

配置好之後,編譯核心,然後將核心下載到開發板。執行核心之後,就能在開發板上看到你製作的根檔案系統。

糾錯:

        下面說的都是Initramfs檔案系統,ramdisk檔案系統時不一樣的,它可以單獨編譯成映象。

注意:這兩種檔案系統都是基於記憶體的,執行在RAM裡,所以一斷電就會消失,無法儲存資料。所以,當你重啟開發板時,你會發現,板子上的根檔案系統裡的內容沒有任何的改變,之前建立的一些檔案或者新增的資料全都消失了,之前刪除的東西全都回來了。如果你想往板子上的linux系統新增一些檔案,你必須回到虛擬機器上製作好的根檔案系統中,在這裡新增你想新增的檔案。然後重新編譯核心,重新將核心下載到板子上,

核心跑起來後,你會發現開發板出現了你剛才新增的檔案。

這部分了解的不多,我的理解是:若用這兩種方式掛載根檔案系統,編譯核心的時候,會將我們製作好的根檔案系統整合到核心中,它們形成一個不可分離的整體。這個整體會被下載到nandflash中,執行系統時,根檔案系統會在記憶體中跑起來,於是它出現在我們眼前。但是,它只在記憶體中跑著,不會跟nandflash同步資料,所以,我們往檔案系統中所做的一切改動都僅僅在記憶體中,這些改動並不會同步回nandflash。因此,重啟板子後,nandflash裡面的檔案系統還是那個檔案系統,沒有任何改動,原模原樣。如果你想往板子上的系統新增檔案,只能在你製作的根檔案系統裡新增,然後重新編譯核心。這只是個人的理解,不知道對不對,還請知道的朋友在評論區介紹一下。