2021-05-12 14:32:11
構建根檔案系統
2020-06-16 17:28:56
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的引數如下,當同時滿足多個時,用逗號分隔
引數名 | 說明 | 預設值 |
---|---|---|
autonoauto | 執行”mount -a”時是否自動掛載 | auto |
usernouser | 允許普通使用者掛載還是只能root掛載 | nouser |
execnoexec | 是否允許執行所掛載裝置上的程式 | execc |
ro | 以唯讀方式掛載檔案系統 | |
rw | 以讀寫方式掛載檔案系統 | |
syncasync | 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
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-11/137063.htm
相關文章