Linux下Ramdisk根檔案系統製作過程解析

2021-10-05 17:53:31 字數 2780 閱讀 1161

一、在乙個已建好的檔案系統上進行修改

設已建立好的檔案系統壓縮檔案為ramdisk.gz

1、解壓

#cd ramdisk.gz所在目錄

#gunzip ramdisk.gz

在解壓後,得到檔案系統鏡象檔案ramdisk, 覆蓋了原來的壓縮檔案

2、鏡象檔案掛載

鏡象檔案必須經過掛載後才能看到檔案系統中的各個目錄和詳細內容

#mkdir /mnt/loop /* /mnt/loop 是檔案系統要掛載到的目錄

#mount –o loop ramdisk /mnt/loop

在掛載目錄/mnt/loop下對檔案系統進行操作

#cd /mnt/loop

#do_whatever_you_want_to_do /*根據需要增加、刪減或是修改檔案系統的內容

4、卸裝檔案系統

跳到/mnt/loop目錄外,否則無法卸裝,提示busy

#cd ramdisk所在目錄

#umount /mnt/loop

5、壓縮檔案系統

#gzip –v9 ramdisk /*生成ramdisk.gz壓縮檔案

二、自己建立根檔案系統

1、建立loop裝置的臨時掛載點

#mkdir /mnt/loop

2、建立乙個大小為15m的臨時檔案

#dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=15360

注意可根據自己的需要建立大小合適的檔案系統,更改count大小即可。

此處以dd命令建立乙個了乙個15360kb檔案系統映象,存於/tmp/loop/tmp,並以.dev/zero對它進行初始化。用這種方式對檔案系統進行初始化,稍後當我們使用gzip命令壓縮整個映象時,將讓檔案系統中未使用的部分獲得最大壓縮比。

3、將裝置檔案與臨時檔案聯絡起來

#losetup /dev/loop0 /tmp/loop_tmp

把裝置檔案/dev/loop0與臨時鏡象檔案/tmp/loop_tmp聯絡起來,/dev/loop0是個塊裝置

如果出現「ioctl:loop_set_fd:裝置或資源忙」,說明/dev/loop0裝置還和一檔案聯絡,可用losetup /dev/loop0檢視地,並可用-d 刪除。

4、將/dev/loop0格式化為ext2檔案系統

#mke2fs –m 0 /dev/loop0

-m 0指出不必在檔案系統上為「超級使用者」保留任何區塊。

linux核心識別兩種可以直接考貝的到ramdisk的檔案系統,它們是minix和ext2,minix是linux早期版本所用的檔案系統,從minix作業系統而來,ext2效能更好。

5、把虛擬盤掛在節點/mnt/loop上

#mount –t ext2 /dev/loop0 /mnt/loop

6、用cp –af命令將所需要檔案拷貝到虛擬盤上

cp –help檢視cp 用法。cp –arf … -r表示拷貝目錄

/bin, /dev, /etc, /lib, proc, /sbin, /usr都是不可或缺的目錄,建議保留/tmp,/var,不過可以為空。而為多使用者提供可擴充套件環境的所有目錄(例如/home、/mnt、/opt、/root)都應該省略。

用cp複製檔案時,建議把已建立好的檔案系統中的內容全部拷貝過來,這樣比較簡單,不需要再去編譯安裝busybox等。當然自己也可以那樣去做。

7、解除安裝檔案系統,得到的/tmp/loop_tmp就是檔案系統映象。

#cd /mnt/loop以外的目錄 (否則會提示無法解除安裝,裝置busy)

#umount /mnt/loop

8、壓縮檔案系統映象

#gzip –v9 /tmp/loop_tmp >/tftpboot/ramdisk.gz

在/tftpboot下生成了ramdisk.gz,這樣乙個記憶體檔案鏡象生成了。

或只是#gzip –v9 /tmp/loop_tmp,則就是在/tmp下生成loop_tmp.gz檔案,一樣的。

三、自己建立根檔案系統(與二中不同)

1、建立loop裝置的臨時掛載點

#mkdir /mnt/loop

2、建立檔案系統映象

#dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=15360

以上2條同二中是一樣

3、mke2fs –f –v –m 0 /tmp/loop_tmp

此處-f選項將可迫使mkefs2在檔案上執行。否則mke2fs會抱怨 /tmp/loop_tmp不是個塊裝置(在上面說了,我的理解是/tmp/loop_tmp檔案映象必須是塊裝置檔案,前面的做法是用塊裝置檔案 /dev/loop0與之相關聯)。-v 選項指出mke2fs應該以verbose模式執行,-m 0指出不必在檔案系統上為「超級使用者」保留任何區塊,因為在嵌入式系統中通常是單使用者系統,為「超級使用者」保留區塊沒有意義。

4、掛載映象檔案

#munt –o loop /tmp/loop_tmp /mnt/loop

掛載後,在/mnt/loop下就可以對檔案系統的內容進行操作。

5、cp操作,同二中的第6條

6、解除安裝映象檔案

#umount /mnt/loop

7、壓縮映象檔案

#gzip –v9 /tmp/loop_tmp

第三中的做法與第二中的做法不同,在第二中,把塊裝置檔案/dev/loop0與映象檔案/tmp/loop_tmp相關聯,然後對/dev/loop0及虛擬盤進行操作,就作用在/ltmp/loop_tmp上。

而第三中,是直接對映象檔案/tmp/loop_tmp進行操作,用mke2fs –f …將其當作塊裝置檔案進行操作。

Ramdisk根檔案系統

ramdisk根檔案系統生成在 可以參考一下linux usr makefile,會呼叫scripts gen initramfs list.sh根據變數config initramfs source指定 定義為.root 呼叫usr gen init cpio工具,來生成cpio格式的壓縮的根檔案...

uboot中ramdisk啟動linux的兩種方法

首先要確保核心支援ramdisk啟動 the configuration of the kernel is as follow 1 general setup initial ram filesystem and ram disk initramfs initrd support support i...

linux 減小根分割槽大小 減小linux下根分割槽

減小linux下根分割槽 2011 02 25 xingfuxiaozi 減小linux 根分割槽 紅帽企業版linux安裝程式預設的分割槽結構是,劃分 boot 分割槽和 swap 分割槽,然後將剩下的空間分給乙個邏輯卷,並且使用該邏輯卷 作為根 分割槽。將所有的資料檔案和系統檔案都存放在乙個系統...