歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 構建根文件系統

構建根文件系統

日期:2017/2/28 13:47:14   编辑:Linux教程

busybox

wget http://www.busybox.net/downloads/busybox-1.20.2.tar.bz2 
make defconfig
make CROSS_COMPILE=arm-linux-gnueabi-
make install 

編譯完install後會默認安裝在busybox源碼目錄下_install目錄內,但是此文件系統並不完整,只有四個目錄

  root-># ls
bin  linuxrc  sbin  usr

雖然可以直接用這個簡易的文件系統啟動內核,但是功能在以後的使用過程中會很受限制。

構建/etc目錄及幾個關鍵文件

/etc/inittab文件

::sysinit:/etc/init.d/rcS 
ttySAC0::askfirst:-/bin/sh 
::ctrlaltdel:/sbin/reboot 
::shutdown:/bin/umount -a -r

格式:<id>:<runlevels>:<action>:<process>例如上邊

id:表示輸出的終端,省略的話表示輸出到init終端 
runlevels:運行等級,busybox中沒有意義,省略 
action:如下 
process:要執行的程序,“-”開頭表示這個程序是交互的。
action名稱執行條件說明 sysinit 系統啟動後最先執行 只執行一次,init進程等待它執行結束後才執行其他進程 wait 系統執行完sysinit進程後 同上 once 系統執行完wait進程後 只執行一次,但不等待它結束 respawn 系統執行完once進程後 init進程檢測,發現子進程退出後,重新啟用它 askfirst 系統執行完respawn進程後 與respawn類似,但是先輸出“Please press Enter to active this console”,等用戶鍵入回車後才啟動 shutdown 系統關機時 重啟,關機命令執行時 restart Busybox中配置CONFIG_FEATURE_USE_INITTAB,並且init進程接收到SIGHUP信號時 先重新讀取、解析/etc/inittab文件再執行restart ctrlaltdel 按下ctrl+alt+del組合鍵時

創建/etc/ini.d/rcS文件

#!/bin/sh 
ifconfig eth0 192.168.1.222 
mount -a #這個命令會自動讀取/etc/fstab文件並按要求掛載制定的文件系統 
mkdir /dev/pts 
mount -t devpts devpts /dev/pts //用來支持外部網連接(telnet) 
echo /sbin/mdev > /proc/sys/kernel/hotplug  #最後的兩行是為了mdev能夠以守護進程的形式運行,當驅動程序插入內核的時候能夠自動創建設備文件節點。
mdev -s 

此外還要修改此文件的權限,使它能夠運行。

創建/etc/fstab文件

#device mount-point type options dump fsck order 
proc /proc proc defaults 0 0 
tmpfs /tmp tmpfs defaults 0 0 
sysfs /sys sysfs defaults 0 0 //mdev需要 
tmpfs /dev tmpfs defaults 0 0 //mdev需要 

這裡把/dev目錄掛載上tmpfs文件系統,是為了mdev(pc機上是udev)程序能夠動態的創建刪除設備文件。

oprions的參數如下,當同時滿足多個時,用逗號分隔

參數名說明默認值 auto\noauto 執行”mount -a”時是否自動掛載 auto user\nouser 允許普通用戶掛載還是只能root掛載 nouser exec\noexec 是否允許執行所掛載設備上的程序 execc ro 以只讀方式掛載文件系統 rw 以讀寫方式掛載文件系統 sync\async sync:修改文件時會同步寫入設備 sync defaults rw,suid,,dev,exec,auto,nouser,async的組合

dump是一個用來備份文件的程序,fsck是一個用來檢查磁盤的程序
dump根據dump字段的值決定是否需要備份此文件系統,如果沒有這個字段或者這個字段為0,則dump忽略此文件系統
fsck程序根據fsck order字段決定檢查磁盤的順序,一般將根文件系統設置為1,其他文件系統設置為2,如果為0,則fsck程序忽略這個文件系統。

總結

先解析/etc/inittab文件,然後執行/etc/init.d/rcS腳本,並根據/etc/fatab文件掛載其他文件系統。

補全其他幾個目錄

mkdir -p lib lib/modules dev proc tmp sys

Copyright © Linux教程網 All Rights Reserved