歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 用Busybox制作文件系統

用Busybox制作文件系統

日期:2017/2/28 15:42:17   编辑:Linux教程

一、busybox生成的目錄
Busybox編譯安裝後,在rootfs目錄下會得到 /bin, /sbin, /usr/bin三個目錄,就是busybox生成的
可執行程序及快捷方式。
rootfs/_
|___ bin /
|___ sbin /
|___ usr /
|___ linuxrc

這三個目錄有很多快捷方式,都是指向了/bin/busybox。這就是busybox的特點,即可執行程序
只有一個,其他的都是link。例如,當執行/bin/mkdir時,busybox會把文件名當做第一個參數,
從文件名分析出該調用到內部的mkdir()函數。

二、其他目錄
僅僅有上述目錄還不足以構成一個可用的文件系統,必須還要手工加一些其他的目錄及配置
文件、啟動腳本等。

下面是幾個必須有的目錄
|___ etc / 配置文件
|___ dev / 設備節點目錄
|___ lib / 庫
|___ modules / 驅動

下面是最好有的幾個目錄
|___ proc /
|___ sys /
|___ var /
|___ tmp /
|___ root /
|___ opt /
|___ mnt /


2.1 特殊文件系統的目錄
先介紹一下幾個特殊的目錄,這些目錄僅僅充當一個掛載點,目錄裡面是置空的。在linux運行
其他後,被掛載成特列的文件系統,如tmpfs , devfs, proc, sysfs等。這些文件系統有一個共同的
特點,即其內容都是在ram裡,而不是在磁盤上。

/proc : proc文件系統
/sys : sysfs 文件系統
/var : ramfs 文件系統
/tmp : ramfs 文件系統
/dev : ramfs 文件系統 

注:(1) 早期的linux其/dev下的節點是手工創建的,後發展成為udev(mdev)模式。udev大概是根據
sysfs裡的節點來創建相應的dev節點的,所以在創建時/dev下置空。在運行起來之後,由udev/mdev
來自動在/dev下創建節點。如果/dev掛載到磁盤上,速度不及掛載到ram裡。
(2) 似乎這些目錄可以動態的創建和mount?? 還是先創建好吧,在啟動腳本裡只做掛載的動作。

2.2 手動配置的目錄
/etc 目錄
配置文件, 必須有這幾個文件 /etc/fstab, /etc/inittab, /etc/init.d/rcS, /etc/profile
/dev 目錄
設備節點目錄,由於使用mdev來自動創建節點,/dev被掛載成ramfs,所以此目錄置空即可
/lib 目錄
busybox一般采取動態編譯,所以至少需要libc和libld庫
/root 目錄
由於嵌入式系統只有一個root帳戶,所以可以把root的根目錄設為 "/",從而不需要root目錄
/opt 目錄
要部署自己的程序的話,可以都放在/opt目錄下面。當然也可以放在/usr/local裡

三、配置etc
etc目錄裡添加配置文件,是最主要的工作。有這麼幾個文件:
fstab, inittab, profile, init.d/rcS
需要手工添加。

1. /etc/fstab
至少要加上proc文件系統
這個文件是在kernel啟動末尾使用的,有的自定義kernel可能直接把該mount的節點都掛載上了。

2. /etc/inittab
這是系統進程init的啟動腳本

3. /etc/init.d/rcS
在inittab中指定,一般在嵌入式系統中inittab很簡單,就是指定rcS腳本,然後打開一個登錄
終端(甚至不開終端)。所以rcS腳本裡應該加上你想在系統啟動之初想干的事情。

4. /etc/profile
用戶從終端登錄後,運行的腳本。如果系統不加用戶登錄機制,這個腳本就不會被運行了。

配置文件范例
####### /etc/inittab #######
::sysinit:/etc/init.d/rcS
::askfirst:/sbin/getty 115200 console
#tty2::askfirst:/bin/bash

arkfirst表示先提示,當用戶按回車後才打開控制台
/sbin/getty是有身份驗證的,如果用/bin/bash就直接打開一個無身份驗證的shell

為了能以root登錄,需要創建/etc/passwd文件,passwd文件存了系統的帳戶信息。因為我們一般只需要root登錄,所以加一條root信息即可。第二列是空,表示root不需要密碼。

示范
root::0:0:root:/:/bin/sh

四、制作文件系統映像
# mkfs.yaffs2 ./rootfs yaffs.img
其中rootfs是文件系統目錄樹的根

相關閱讀:BusyBox各版本下載 http://www.linuxidc.com/Linux/2011-08/40704.htm

Copyright © Linux教程網 All Rights Reserved