沒有根文件系統是啓動不了linux,會出錯,見3.1中的演示。linux
什麼是文件系統?編輯器
文件系統包含兩個層次的含義:工具
1. 按照固定格式組織的目錄與文件(看得見)ui
2. 在特定的存儲介質上管理這些目錄和文件須要的數據(看不見).net
如何製做嵌入式linux所需的文件系統?get
1. 建立目錄和文件it
2. 爲建立好的目錄和文件創建管理數據io
1. 建立目錄和文件console
mkdir rootfs編譯
cd rootfs
mkdir bin dev etc lib proc sbin sys usr mnt tmp var
mkdir usr/bin usr/lib usr/sbin lib/modules
2. 建立設備文件
cd dev/
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3
cd ..
3. 安裝/etc(etc目錄下的是配置文件,是通用的,因此是直接從別的地方拷貝過來)
tar xvzf etc.tar.gz -C /xxx/rootfs
4. 編譯內核模塊
進入linux內核目錄(linux 2.6.36)
在3.1中作的是內核的編譯,而沒有作內核模塊的編譯。這裏是模塊的編譯,而且要安裝到文件系統中去。是安裝在lib/modules/下面,此時這個目錄下仍是空的。
make modules ARCH=arm CROSS_COMPILE=arm-linux-
...
5. 安裝內核模塊
make modules_install ARCH=arm INSTALL_MOD_PATH=/xxx/rootfs
INSTALL_MOD_PATH是指定安裝的路徑。
查看是否是將上面編譯生成的模塊拷貝到了rootfs/lib/modules下面:
6. 配置busybox(安裝linux命令工具)
咱們這裏使用的是busybox-1.17.2,首先解壓:
tar zxvf busybox-1.17.2.tgz
進入busybox目錄中執行:make menuconfig
注意:這裏的控制檯窗口必須拉大一點,不然出錯:
對於哪些功能要,哪些不要,這個是根據本身的須要來的。可是有些是必須的,好比說靜態連接等。
a. 配置
進入Busybox Setting -->
build options -->
<1> 選中"Build busybox as a static binary",靜態連接
<2> Cross Compiler prefix(arm-linux-)
指明使用到的交叉工具鏈的前綴,也能夠在make命令中使用"CROSS_COMPILE=arm-linux-"來指明
Installation Options -->
<1> 選中"Don't use /usr",選中該項能夠避免busybox被安裝到宿主機系統的/usr目錄下,破壞宿主機
<2> Busybox Installation Prefix(/xxx/rootfs)
該選項代表編譯後的busybox的安裝位置。
能夠在editors裏面去掉vi編輯器,由於在嵌入式裏面不須要這個工具,awk,cmp,diff,sed等這些命令都不須要:
find,grep,xargs命令也不須要:
b. 編譯busybox
make
c. 安裝busybox
在安裝以前,rootfs/bin/下面是空的:
make install
再查看下rootfs/bin/下面是不是空(固然其餘目錄下也會有東西加進去,好比sbin):
裏面多了好多的東西,這都是安裝進去的命令工具。並且他們都是一些軟鏈接,鏈接到busybox的應用程序上
因此咱們執行的命令都是busybox提供的。它根據命令的名稱來分辨是哪一個命令。