構造根檔案系統三之構建etc dev等剩餘目錄

2021-06-17 21:12:10 字數 3113 閱讀 4565

前面兩節介紹了如何安裝busybox、c庫,建立了 bin/、sbin/、usr/sbin、usr/bin、lib/等目錄,最小根檔案系統的大部分目錄、檔案已經建好。本節介紹剩下的部分,假設開發板的根檔案系統在主機上的目錄為/home/song/nfs_root/fs_mini。

一、構建 etc 目錄

1、進入你的根檔案系統在主機上的目錄,建立乙個 etc目錄,如下

etc 目錄下的內容取決於要執行的程式,本部分只需要建立3個檔案:etc/inittab、etc/init.d/rcs、etc/fstab。

1、建立  etc/inittab 檔案

執行命令:cd etc,進入你剛才建立的etc目錄

執行命令:vim inittab,建立乙個inittab檔案

建立inittab檔案,可以仿照busybox的examples/inittab檔案,本節建立的內容如下

2、建立 etc/init.d/rcs 檔案

執行命令:mkdir init.d,在當前etc目錄下再建立乙個init.d資料夾

執行命令:cd  init.d,進入init.d資料夾

執行命令:vim rcs,建立乙個rcs檔案

第一行表示這是乙個指令碼檔案,執行時使用 /bin/sh解析。

第二行用來配置ip位址。

第三行用來掛接/etc/fstab指定的所有檔案系統。

最後,執行命令:chmod +x rcs,改變它的屬性,使它能夠執行。

3、建立 /etc/fstab 檔案 

執行命令:vim fstabz,建立fstab檔案,該檔案內容如下,表示執行「mount -a」命令後將掛接proc、tmpfs檔案系統。

/etc/fstab 檔案被用來定義檔案系統的「靜態資訊」,這些資訊被用來控制mount命令的行為。檔案中各子段的意義如下。

① device:要掛接的裝置。

比如/dev/hda2、/dev/mtdblock1等裝置檔案;也可以是其它格式,比如對於 proc 檔案系統這個字段沒有意義,可以是任意值;對於nfs檔案系統,這個:。

②  mount-point:掛接點。

③ type:檔案系統型別。

比如 proc、jffs2、yaffs、ext2、nfs等,也可以是auto,表示自動檢測檔案系統型別。

④ options:掛接引數,以逗號隔開。

/etc/fstab的作用不僅僅是用來控制「mount -a」的行為,即使是一般的mount命令也受它控制。

⑤ dump和fsck order:用來決定控制dump、fsck程式的行為。

dump是乙個用來備份檔案的程式。dump程式根據 dump 欄位的值來決定這個檔案系統是否需要備份,如果沒有這個欄位或其值為0,則dump程式忽略這個檔案系統。

fsck是乙個用來檢查磁碟的程式。fsck程式根據fsck order欄位來決定磁碟的檢查順序,一般來說對於根檔案系統這個欄位設為1,其他檔案系統設為2。如果設為0,則fsck程式忽略這個檔案系統。

二、構建 dev 目錄

為了簡單起見,本節使用最原始的方法處理裝置:在 /dev 目錄下建立各種節點(即裝置檔案)。當然還可以用 mdev 建立裝置檔案,這是韋老師書上的,我還不會哈!

5、執行命令:mkdir -p /home/song/nfs_root/fs_mini/dev  ,建立dev目錄

6、執行命令:cd dev,進入dev目錄

7、在dev目錄下先後執行以下命令

從系統啟動過程可知,設計的裝置有:/dev/mtdblock*(mtd塊裝置)、/dev/ttysac*(串列埠裝置)、/dev/console、/dev/null,只需要建立以上裝置就可以啟動系統。

注意:在一般系統中,ttysac0的主裝置號為4,但是在s3c2440、s3c2410所用的linux 2.6.22.6上,它們的串口號裝置為204。

其他裝置檔案可以當系統啟動後,使用 「cat /proc/devices」 命令檢視核心中註冊了哪些裝置,然後一一建立相應的裝置檔案。

三、構建其他目錄

其他目錄可以是空目錄,比如 proc、mnt、tmp、sys、root等。

9、執行命令: mkdir proc mnt tmp sys root  建立其他目錄

現在,咱們這個/..../nfs_root/fs_mini 目錄下就是乙個非常小的根檔案系統。開發板可以將它作為網路根檔案系統直接啟動。

如果要燒入開發板,還要將它製作為乙個檔案,稱為映像檔案。下一節將介紹製作使用 yaffs檔案系統映像檔案,未完,正在寫..........

構建根檔案系統

wget make defconfig make cross compile arm linux gnueabi make install編譯完install後會預設安裝在busybox原始碼目錄下 install目錄內,但是此檔案系統並不完整,只有四個目錄 root ls bin linuxrc ...

構建根檔案系統

wget make defconfig make cross compile arm linux gnueabi make install編譯完install後會預設安裝在busybox原始碼目錄下 install目錄內,但是此檔案系統並不完整,只有四個目錄 root ls bin linuxrc ...

構建根檔案系統

tar xjf busybox 1.7.0.tar.bz2 cd busybox 1.7.0 make menuconfig 編譯busybox 1.7.0出現如下錯誤 busybox 1.7.0 make menuconfig makefile 405 mixed implicit and nor...