基于BusyBox-1.19.2
(以其它作者的作為參考)
1. 下載下傳BusyBox的源碼 http://busybox.net/
2. 解壓#tar xvzf busybox-1.19.2.tgz (指令參數搞忘了,查一下tgz檔案解壓指令)
3. 進入解壓目錄,對BusyBox進行配置
#make menuconfig
Busybox Settings --->
General Configuration --->
[*]Don’t use /usr
BuildOptions --->
[] BuildBusyBox as a static binary (no shared libs)
(此項代表檔案系統是否要共享libs庫函數,如果選上,到最後就可以不用人為地添加libs庫檔案了,但是如果不添加libs庫檔案,以後的應用程式也要靜态編譯了)
[*]Build shared libbusybox
(/usr/local/arm/4.4.3/bin/arm-linux-)Cross Compiler prefix
Installation Options (“make install” behavior) --->
(./_install) Busybox installation prefix (指定busybox的安裝路徑)
Busybox Library Tuning --->
[*] vi-style line editing commands
[*] Fancy shell prompts
(要選擇這個選項:“Fancy shell prompts”,否則挂載檔案系統後,無法正常顯示指令提示符:“[\u@\h \W]#”)
添加mdev(可以實作裝置節點的自動建立和裝置的自動挂載,mdev具體可以檢視
http://blog.chinaunix.net/uid-26806098-id-3140548.html)的支援
Linux System Utilities --->
[*]mdev
[*]Support/etc/mdev.conf
[*]Supportcommand execution at device addition/removal
Linux Module Utilities--->
[ ]simplified modutils
[*]insmod
[*]rmmod
[*]lsmod
[*]modprobe
4. 交叉編譯,生成busybox檔案
#make
5. #make install
生成_install目錄(此目錄也就是根目錄了),裡面有子目錄bin各sbin,還有一個檔案linuxrc; 并且指令還會将上面生成的busybox檔案複制到_install/bin/下
6. 在_install目錄下建立基本的目錄結構
#mkdir etc dev mnt proc tmp usr var tmp sys root lib
bin 存放所有使用者都可以使用的、基本的指令。
sbin 存放的是基本的系統指令,它們用于啟動系統、修複系統等。
usr 裡面存放的是共享、隻讀的程式和資料。
proc 這是個空目錄,常作為proc檔案系統的挂載點。
dev 該目錄存放裝置檔案和其它特殊檔案。
etc 存放系統配置檔案,包括啟動檔案。
lib 存放共享庫和可加載塊(即驅動程式),共享庫用于啟動系統、運作根檔案系統中的可執行程式。
boot 引導加載程式使用的靜态檔案
home 使用者主目錄,包括供服務賬号鎖使用的主目錄,如FTP
mnt 用于臨時挂接某個檔案系統的挂接點,通常是空目錄。也可以在裡面建立空的子目錄。
opt 給主機額外安裝軟體所擺放的目錄。
root root使用者的主目錄
tmp 存放臨時檔案,通常是空目錄。
var 存放可變的資料。
7. (如果在上面選擇了[*]BuildBusyBox as a static binary (no shared libs),此步驟可以省去)
添加庫
lib$cp /usr/local/arm/4.4.3/arm-none-linux-gnueabi/ lib/*so* ./ -a
再在管理者模式對庫瘦身(可以不用做)
8. 在_install/etc/目錄下建立目錄和檔案:inittab, /init.d/rcS, profile, fstab。
(
添加系統啟動檔案
etc$vim inittab
添加如下内容:
|
添加可執行權限
etc#chmod +x inittab
在etc下添加fstab
etc$vim fstab
|
這裡挂載的檔案系統有三個:proc、sysfs和tmpfs,在核心中proc和sysfs預設都支援,而tmpfs是沒有支援的(好像有支援哦),檢查核心有沒有支援tmpfs,如果沒有請如下設定
linux-2.6.35$make menuconfig
File systems --->
Pseudo filesystems --->
[*] Virtual memory file system support(former shm fs)
[*] Tmpfs POSIX Access Control Lists
重新編譯核心
在_install/etc下建立init.d目錄,并在該目錄下建立rcS檔案
etc$mkdir init.d
etc/init.d$vim rcS
|
為rcS添加可執行權限
etc/init.d$chmod +x rcS
在etc下建立profile檔案
etc$vim profile
|
)
9. 在_install/dev目錄(dev目錄呀,看清楚了,我就是這樣出問題的)下建立console節點(這個裝置節點是必須的)
dev# mknod –m 660 console c 5 1
(也做了這步:dev# mknod –m 660 null c 1 3)
10. 在busybox目錄下,利用mkyaffs2image工具建立根檔案系統映像檔案
#mkyaffs2image-128M _install ./root_yaffs2.bin
(如果沒有mkyaffs2image指令就先安裝)
11. 修改root_yaffs2.bin檔案的權限,否則該檔案無法被複制
#chmod 777 root_yaffs2.bin
12. 将上面生成的root_yaffs2.bin映像檔案下載下傳到開發闆中。