根文件系統的啓動分析

 
根文件系統的啓動分析
 
 
根文件系統的啓動分析
creator
[email protected]

        一般的系統是先啓動/sbin/init,但是也可通過啓動參數指定init=來確定,
如:我的系統就是制定的init=/linuxrc,因爲文件系統是採用busybox的,而linuxrc
也是一個指向busybox的文件,不過不確認它指向具體哪個指令。不過可能是/sbin/init。
init進程的主要任務是按照inittab文件所提供的信息創建進程,由於進行系統初始
化的那些進程都由init創建,所以init進程也稱爲系統初始化進程。
    如我的inittab:
::sysinit:/etc/init.d/rcS
::respawn:-/bin/login
::restart:/sbin/init
tty0::askfirst:-/bin/login
::ctrlaltdel:/bin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a

inittab的格式如下:
id:rstate:action:process
1.id字段是最多4個字符的字符串,用來唯一標誌表項。
2.rstate(run state)字段定義該記錄項被調用時的運行級別,rstate可以由一個或多個運行級別構成,
也可以是空,空則代表運行級別0~6。當請求init改變運行級別時,那些rstate字段中不包括新運行級
別的進程將收到SIGTERM警告信號,並且最後被殺死;只有a、b、c啓動的命令外(a、b、c不是真正的運行級別)
3.action字段定義了該進程應該運行在何種狀態下:
    代碼:
    boot        在系統啓動時運行,忽略runlevel
    bootwait    在系統啓動時運行,init等待進程完成。忽略runlevel
    ctrlaltdel    當Ctrl+Alt+Del三個鍵同時按下時運行,把SIGINT信號發送給init。忽略    runlevel
    initdefault    不要執行這個進程,它用於設置默認runlevel
    kbrequest    當init從鍵盤中收到信號時運行。這裏要求鍵盤組合符合KeyBoardSigral(參見/usr/share/doc/kbd-*關於鍵盤組合的文檔)
    off        禁止進入,因此該進程不運行
    once        每一個runlevel級別運行一次
    ondemand    當系統指定特定的運行級別A、B、C時運行
    powerfail    當init收到SIGPWR信號時運行
    powerokwait    當收到SIGPWD信號且/etc/文件中的電源狀態包含OK時運行
    powerwait    當收到SIGPWD信號,並且init等待進程結束時運行
    respawn        不管何時終止都重新啓動進程
    sysinit        在運行boot或bootwait進程之前運行
    wait        運行進程等待輸入運行模式
    process 字段包含init執行的進程,該進程採用的格式與在命令行下運行該進程的格式一樣,
    因此process字段都以該進程的名字開頭,緊跟着是運行時,緊跟着是運行時要傳遞給該進程的參數。
    比如/sbin/shutdown -t3 -r now,該進程在按下Ctrl+Alt+Del時執行,在命令行下也可以直接輸入
    來重新啓動系統。
4.Process字段中進程可以是任意的守候進程、可執行腳本或程序。
另外:在任何時候,可以在文件inittab中添加新的記錄項,級別Q/q不改變當前的運行級別,
重新檢查inittab文件,可以通過命令init Q或init q使init進程立即重新讀取並處理文件inittab. 

他會先執行/etc/init.d/rcS
#! /bin/sh

/bin/mount -a
mdev -s
而mount -a會執行/etc/fstab
proc        /proc    proc    defaults    0    0
none        /tmp    ramfs    defaults    0    0 
mdev        /dev    ramfs    defaults    0    0
sysfs        /sys    sysfs    defaults    0    0 
掛載一些ramfs。

如果開機不想採用輸入密碼的話,修改inittab如下:
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::restart:/sbin/init
tty0::askfirst:-/bin/sh
::ctrlaltdel:/bin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
發佈了14 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章