昨天花了我幾個小時的時間,最後終於把那個根檔案系統製作好了~
(一):首先linux根檔案系統的製作需要的開發環境。
1:移植Linux核心版本: linux-3.0.1 (只要能用就行)
2:交叉編譯工具:arm-linux-gcc 4.3.2(任選)
3:檔案系統製作工具:Busybox-1.13.3(任選)
4:etc.tar.gz
(二):交叉編譯環境的搭建(這一步我在我的部落格其他文章裡面有 詳細的搭建過程,很簡單滴~)
(三):建立根檔案系統的目錄
1:在主目錄下面建立一個檔案夾rootfs
[root@localhost fs]# ls
[root@localhost fs]# mkdir rootfs
[root@localhost fs]# cd rootfs/
[root@localhost rootfs]# mkdir bin dev etc lib proc sbin sys usr mnt tmp var
[root@localhost rootfs]#
mkdir usr/bin usr/lib usr/sbin lib/modules
說明:
根檔案系統是Linux啟動的時候使用的第一個檔案系統,沒有他系統將無法正常的啟動
然而在這個根檔案系統中又包含了一系列的目錄,接下來對這些目錄做一個簡單的介紹。其實這個大家都很懂的
bin
存放所有使用者都可以使用的、基本的命令。
sbin
存放的是基本的系統命令,它們用於啟動系統、修複系統等。
sys
一些匯流排啊裝置啊驅動啊。等等都在這裡。好像都是動態產生的吧
usr
裡面存放的是共用、唯讀程式和資料。
proc
這是個空目錄,常作為proc檔案系統的掛載點。
dev
該目錄存放裝置檔案和其它特殊檔案。
etc
存放系統設定檔,包括開機檔案。
lib
存放共用庫和可載入塊(即驅動程式),共用庫用於啟動系統、運行根檔案系統中的可執行程式。
mnt
用於臨時掛接某個檔案系統的掛接點,通常是空目錄。也可以在裡面建立空的子目錄。
boot
引導載入程式使用的靜態檔案
home
使用者主目錄,包括供服務帳號鎖使用的主目錄,如FTP
opt
給主機額外安裝軟體所擺放的目錄。
root
root使用者的主目錄
tmp
存放臨時檔案,通常是空目錄。
var
存放可變的資料。
2:建立裝置檔案
[root@localhost rootfs]#cd dev/
[root@localhost dev]#
mknod -m 666 console c 5 1
[root@localhost dev]#
mknod -m 666 null c 1 3
說明:mknod -m 666 console c 5 1
console 為裝置檔案名稱,自己可以隨便取,c代表是字元型裝置(可選b,塊裝置)
5是主裝置號 /dev/devices裡面記錄現有的裝置
1是次裝置號當你要給兩個同樣的裝置上一個驅動的時候就要分了,從0開始,1就是第二個了 ,對於字元裝置,次裝置號就表示同類型裝置的不同裝置。666代表訪問的許可權
3:配置/etc/
這裡有兩種方法
1:可以把系統上面的/etc/下面一些比較重要的檔案拷貝過來
2:也可以直接在網上下載一個etc.tar.gz
#tar -zxvf etc.tar.gz
將解壓出來的檔案etc下面的東西全部拷貝到上面建立的根目錄下面/rootfs/etc/下面
etc/inittab
etc/profile
etc/fstab
etc/init.d/
etc/init.d/rcS
4:編譯核心模組
首先進入核心目錄下面(核心目錄和根檔案系統目錄不是在同一個目錄下面的)
# cd linux-3.0.1
#make modules ARCH=arm CROSS_COMPILE=arm-linux-
說明:在這一步出現一些問題,發現怎麼編譯也不行,後來由下載了一個核心,編譯通過
5:安裝核心模組
#make modules_install ARCH=arm INSTALL_MOD_PATH=/home/xiongyao/rootfs
說明:將核心裡面編譯好的模組放在根檔案系統目錄下面(其實就是把模組拷貝到目錄下面的過程)
6:配置busybox
說明:關於busybox:(百度百科)
busybox是一個整合了一百多個最長用linux命令和工具的軟體。BusyBox 包含了一些簡單的工具,例如ls、cat
和echo等等,還包含了一些更大、更複雜的工具,例如grep、find、mount
以及telnet。有些人將 BusyBox 稱為 Linux 工具裡的瑞士軍刀。簡單的說BusyBox就好像是個大工具箱,它整合壓縮了
Linux 的許多工具和命令,也包含了 Android 系統的內建的shell。
# tar -xvzf busybox-1.13.3.tar.gz
# cd busybox-1.13.3
#make menuconfig
說明:這一步是要配置busybox的圖形介面,使之生效,運行這個命令可能會出錯,原因是因為你沒有
安裝那個映像介面的依賴庫,在終端裡面輸入apt-get install libncurses5-dev 就ok了~
Busybox Settings-----> build Options----->
選中Build BusyBox as a static binary(no shared libs)
Busybox Settings-----> InstallationOptions ------------>
選中 “don't use /usr” 選中此項可以避免busybox被安裝到宿主系統的/usr目錄下,破壞宿主系統
Busybox Installation Prefix(/home/fs/myrootfs) 這裡要輸入busybox安裝的絕對路徑
7:編譯安裝busybox
#make ARCH=arm CROSS_COMPILE=arm-linux-
#make install
到現在為止,根檔案系統就完全做好了,你可以把這個根檔案系統製作成ramdisk系統
8:、將根檔案系統製作 成ramdisk
#genext2fs -b 8192 -d /home/fs/myrootfs/ ramdisk
說明:這一步出現問題,後來發現是這個分配的空間太小,於是將8192改為120400
#genext2fs -b /home/xiongyao/rootfs/ ramdisk
#gzip -9 -f ramdisk
這樣就可以將ramdisk.gz下載到開發板上面去了
在製作的過程中可能會遇到各種各樣的問題,遇到問題沒事,我一般直接上百度,裡面有各種解決方案,只要用心去理解,相信肯定能製作成功!