生活随笔
收集整理的這篇文章主要介紹了
linux文件系统启动流程 ---笔记整理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下面是一張linux啟動流程圖:
在了解啟動流程之前,我們應該先知道系統的幾個重要腳本和配置文件,他們對應的路徑為:
1. /sbin/init
2. /etc/inittab
3. /etc/rc.d/rc.sysinit
4. /etc/rc.d/rcN.d //這是幾個文件夾N代表數字1,2,3,4..
5. /etc/fstab
1.關于/sbin/init與/etc/inittab
關于/sbin/init ,它是一個二進制可執行文件,為系統的初始化程序,而/etc/inittab是它的配置文件,我們可以通過/etc/inittab來一睹 它的功能,?里面的內容是一種固定的文本格式,id:runlevels:action:process
我們來通過它的內容來學習它之前,先了解寫運行級別的分類(0-6):
0: 關機 half
1: 單用戶模式 singel user
2: 多用戶模式 multi user , 不提供nfs服務 without nfs
3: 完全多用戶字符模式 full multiuser text mod
4: 系統預留 officially undefined
5: 圖形登錄界面 graphical login
6: 重啟 reboot
[html]?view plaincopy
id:3:initdefault:?????????????????????????????????//這里定義linux的啟動時的運行級別,可以看到我的主機的啟動級別是3?? #?System?initialization.?? si::sysinit:/etc/rc.d/rc.sysinit??????????????????//緊接著,運行系統第一個腳本/etc/rc.d/rc/sysinit?????? ??????????????????????????????????????????????????//它的action:sysyinit指的是定義系統初始化過程?? l0:0:wait:/etc/rc.d/rc?0???????????????????????????? l1:1:wait:/etc/rc.d/rc?1????????????????????????????? l2:2:wait:/etc/rc.d/rc?2?????????????????????????//然后就是加載服務了,他們被定義在/etc/rc.d/rcN.d?? l3:3:wait:/etc/rc.d/rc?3?????????????????????????//action:waite?這個進程在在對應級別啟動一次,知道它結束為止,我的系統啟動級別為3,所有執行rc?3對應的服務?? l4:4:wait:/etc/rc.d/rc?4?? l5:5:wait:/etc/rc.d/rc?5?? l6:6:wait:/etc/rc.d/rc?6?? ???????????????????????????? ca::ctrlaltdel:/sbin/shutdown?-t3?-r?now????????//這里定義了一個組合快捷鍵,熟悉吧,沒錯就是重啟,你可以把它注釋掉不用????? pf::powerfail:/sbin/shutdown?-f?-h?+2?"Power?Failure;?System?Shutting?Down"??//這里定義了ups電源,powerfail?指的是如果突然斷電,它對應的process命令是,提示用戶系統電源失效,將要關機,提醒用戶把數據都存儲好?? pr:12345:powerokwait:/sbin/shutdown?-c?"Power?Restored;?Shutdown?Cancelled"??//這里的action,powerokwaite,指的是系統恢復供電,關機取消...?? ?? 1:2345:respawn:/sbin/mingetty?tty1???????????//開啟終端,在系統準備工作做好后,就會啟動出6個終端,tty1~6?mingetyy就是終端的執行命令?? 2:2345:respawn:/sbin/mingetty?tty2???????????//可以看到他們對應的級別是2345,你也可以注釋掉幾個,這樣啟動后,就會開啟你指定個數的終端...??? 3:2345:respawn:/sbin/mingetty?tty3???????????//這里的動作respawn意思是如果用戶關閉,那么這個進程會立刻再次執行??? 4:2345:respawn:/sbin/mingetty?tty4?? 5:2345:respawn:/sbin/mingetty?tty5?? 6:2345:respawn:/sbin/mingetty?tty6?? x:5:respawn:/etc/X11/prefdm?-nodaemon???????//當一切準備完畢,就會運行守護進程,它是不分運行級別的,同樣也是respawn??
2. 關于etc/rc.d/rc.sysyinit 和 /etc/rc.d/rc.Nd
在inittab文件中,我們了解到rc.sysinit是系統運行的第一個腳本,那么它的作用都有哪些呢?如果有shell腳本基礎的話可以用vim打開這個文件來看看,它有900多行...是linux里最牛的腳本,總結下它的作用,有如下幾點:(一定要牢記,必要時我們要重寫它!)
1. 激活udev和selinux
2. 通過讀取/etc/sysct1.conf來設置內核參數
3. 設置系統時鐘
4. 設置鍵盤映射
5. 啟動交換分區。
6. 設置主機名
7. 檢查跟文件系統,并且如果沒有錯誤,以讀寫的方式來重新掛載文件系統 (重要)
8. 激活raid和lvm設備
9. 啟動磁盤限額
10 掛載其他/etc/fstab里定義的尚未被掛載的設備
11. 清理過時的文件鎖和PID文件
12. 啟動服務/etc/rc.d/rcN.d
/etc/rc.d/rcN.d 是一個存放了系統啟動是加載的服務的文件夾,通過inittab,我們知道了,它的編號對應相應的啟動運行級別。
需要說明的是,它里面的文件,以我的為例 以K開頭的代表stop,以S開頭的代表啟動start,數字越小,有限級別越高
[html]?view plaincopy
[root@server69?rc.d]#?cd?rc3.d?? [root@server69?rc3.d]#?ls?? K01dnsmasq?????????K74nscd?????????????S08ip6tables????S25bluetooth???S85gpm?? K02avahi-dnsconfd??K85mdmpd????????????S08iptables?????S25netfs???????S90crond?? K02NetworkManager??K87multipathd???????S08mcstrans?????S25pcscd???????S90xfs?? K05conman??????????K88wpa_supplicant???S10network??????S26acpid???????S95anacron?? K05saslauthd???????K89dund?????????????S11auditd???????S26apmd????????S95atd?? K10psacct??????????K89netplugd?????????S12restorecond??S26haldaemon???S97rhnsd?? K20nfs?????????????K89pand?????????????S12syslog???????S26hidd????????S97yum-updatesd?? K24irda????????????K89rdisc????????????S13irqbalance???S28autofs??????S98avahi-daemon?? K35vncserver???????K99readahead_later??S13portmap??????S50hplip???????S99firstboot?? K35winbind?????????S00microcode_ctl????S14nfslock??????S55sshd????????S99local?? K50ibmasm??????????S02lvm2-monitor?????S15mdmonitor????S56cups????????S99smartd?? K50netconsole??????S04readahead_early??S18rpcidmapd????S56rawdevices?? K69rpcsvcgssd??????S05kudzu????????????S19rpcgssd??????S58ntpd?? K73ypbind??????????S06cpuspeed?????????S22messagebus???S80sendmail??
3./etc/fstab文件
它定義了系統初始化掛載的設備,對系統的啟動至關重要,rc.sysinit通過讀取它來實現系統分區的掛載
它的內容如何呢?我們一起來看下
要掛載的設備 掛載點 文件系統類型 掛載選項 轉儲頻率 文件自檢次序
[html]?view plaincopy
/dev/sda2???????????????/???????????????????????ext3????defaults????????0?0?? /dev/sda1???????????????/boot???????????????????ext3????defaults????????0?0?? sysfs???????????????????/sys????????????????????sysfs???defaults????????0?0?? proc????????????????????/proc???????????????????proc????defaults????????0?0??
我截取了4個系統啟動時必須掛載的設備
/ 根文件目錄,由它你才可以進入linux的世界,它在/dev/sda2里
/boot 啟動目錄,在/下,里面有grub,initrd和系統內核,它在/dev/sda1
sysfs 一個虛擬的文件系統,產生包含所有硬件層次視圖,和/proc類似
proc 這是一個虛擬的目錄,它映射內存里的信息對應進程信息,也就是說它對應的是內存而不是硬盤
好了,了解了這些文件和目錄的作用,我們在回過頭來看那張流程圖:
1. linux開機從POST加電自檢開始,當自檢完成,讀取第一個硬盤的第0個磁頭里的前446個字節,運行里面的bootloader,linux一般?? 用的是grub。
2. 通過grub傳遞參數給內核,初始化加載內核過程,內核調用initrd(小型內存文件系統,五臟俱全,是一個微型linux),通過???? initrd,以只讀方式掛載根文件系統
3. 當根文件系統被掛載后,就會讀取并運行/sbin/init來進行初始化工作。
4. 按次序依次執行/rc/sysinit ,這個時候會重新以讀寫的方式掛載根文件系統
5. 讀取/etc/rc.d/rcN.d/來啟動以s開頭的服務,停止以k開頭的服務
6. 當一切準備完畢,打印終端,出現熟悉的Login界面!(當然,如果你是以5級別啟動的話,Linux就會啟動圖形界~)
轉自:?http://blog.csdn.net/haiwil/article/details/6763673
總結
以上是生活随笔為你收集整理的linux文件系统启动流程 ---笔记整理的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。