3.2 根文件系統製做

3.2 根文件系統製做

沒有根文件系統是啓動不了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

27102974

2. 建立設備文件

cd dev/

mknod -m 666 console c 5 1

mknod -m 666 null c 1 3

cd ..

27342248

3. 安裝/etc(etc目錄下的是配置文件,是通用的,因此是直接從別的地方拷貝過來)

tar xvzf etc.tar.gz -C /xxx/rootfs

27852059

4. 編譯內核模塊

進入linux內核目錄(linux 2.6.36)

在3.1中作的是內核的編譯,而沒有作內核模塊的編譯。這裏是模塊的編譯,而且要安裝到文件系統中去。是安裝在lib/modules/下面,此時這個目錄下仍是空的。

make modules ARCH=arm CROSS_COMPILE=arm-linux-

38317074

...

38342565

5. 安裝內核模塊

make modules_install ARCH=arm INSTALL_MOD_PATH=/xxx/rootfs

INSTALL_MOD_PATH是指定安裝的路徑。

38426649

查看是否是將上面編譯生成的模塊拷貝到了rootfs/lib/modules下面:

38556224

6. 配置busybox(安裝linux命令工具)

咱們這裏使用的是busybox-1.17.2,首先解壓:

tar zxvf busybox-1.17.2.tgz

39403840

進入busybox目錄中執行:make menuconfig

39434088

注意:這裏的控制檯窗口必須拉大一點,不然出錯:

39614769

對於哪些功能要,哪些不要,這個是根據本身的須要來的。可是有些是必須的,好比說靜態連接等。

a. 配置

進入Busybox Setting -->

build options -->

<1> 選中"Build busybox as a static binary",靜態連接

40643876

<2> Cross Compiler prefix(arm-linux-)

指明使用到的交叉工具鏈的前綴,也能夠在make命令中使用"CROSS_COMPILE=arm-linux-"來指明

40621568

Installation Options -->

<1> 選中"Don't use /usr",選中該項能夠避免busybox被安裝到宿主機系統的/usr目錄下,破壞宿主機

40573910

<2> Busybox Installation Prefix(/xxx/rootfs)

該選項代表編譯後的busybox的安裝位置。

40538451

40466550

能夠在editors裏面去掉vi編輯器,由於在嵌入式裏面不須要這個工具,awk,cmp,diff,sed等這些命令都不須要:

40679366

find,grep,xargs命令也不須要:

40716884

b. 編譯busybox

make

41112534

c. 安裝busybox

在安裝以前,rootfs/bin/下面是空的:

41199567

make install

41251547

再查看下rootfs/bin/下面是不是空(固然其餘目錄下也會有東西加進去,好比sbin):

41490743

裏面多了好多的東西,這都是安裝進去的命令工具。並且他們都是一些軟鏈接,鏈接到busybox的應用程序上

41582893

因此咱們執行的命令都是busybox提供的。它根據命令的名稱來分辨是哪一個命令。

相關文章
相關標籤/搜索