(一):首先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下載到開發板上面去了