生活随笔
收集整理的這篇文章主要介紹了
linux文件系统启动流程 ---笔记整理
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
下面是一張linux啟動(dòng)流程圖:
在了解啟動(dòng)流程之前,我們應(yīng)該先知道系統(tǒng)的幾個(gè)重要腳本和配置文件,他們對(duì)應(yīng)的路徑為:
1. /sbin/init
2. /etc/inittab
3. /etc/rc.d/rc.sysinit
4. /etc/rc.d/rcN.d //這是幾個(gè)文件夾N代表數(shù)字1,2,3,4..
5. /etc/fstab
1.關(guān)于/sbin/init與/etc/inittab
關(guān)于/sbin/init ,它是一個(gè)二進(jìn)制可執(zhí)行文件,為系統(tǒng)的初始化程序,而/etc/inittab是它的配置文件,我們可以通過/etc/inittab來一睹 它的功能,?里面的內(nèi)容是一種固定的文本格式,id:runlevels:action:process
我們來通過它的內(nèi)容來學(xué)習(xí)它之前,先了解寫運(yùn)行級(jí)別的分類(0-6):
0: 關(guān)機(jī) half
1: 單用戶模式 singel user
2: 多用戶模式 multi user , 不提供nfs服務(wù) without nfs
3: 完全多用戶字符模式 full multiuser text mod
4: 系統(tǒng)預(yù)留 officially undefined
5: 圖形登錄界面 graphical login
6: 重啟 reboot
[html]?view plaincopy
id:3:initdefault:?????????????????????????????????//這里定義linux的啟動(dòng)時(shí)的運(yùn)行級(jí)別,可以看到我的主機(jī)的啟動(dòng)級(jí)別是3?? #?System?initialization.?? si::sysinit:/etc/rc.d/rc.sysinit??????????????????//緊接著,運(yùn)行系統(tǒng)第一個(gè)腳本/etc/rc.d/rc/sysinit?????? ??????????????????????????????????????????????????//它的action:sysyinit指的是定義系統(tǒng)初始化過程?? l0:0:wait:/etc/rc.d/rc?0???????????????????????????? l1:1:wait:/etc/rc.d/rc?1????????????????????????????? l2:2:wait:/etc/rc.d/rc?2?????????????????????????//然后就是加載服務(wù)了,他們被定義在/etc/rc.d/rcN.d?? l3:3:wait:/etc/rc.d/rc?3?????????????????????????//action:waite?這個(gè)進(jìn)程在在對(duì)應(yīng)級(jí)別啟動(dòng)一次,知道它結(jié)束為止,我的系統(tǒng)啟動(dòng)級(jí)別為3,所有執(zhí)行rc?3對(duì)應(yīng)的服務(wù)?? 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????????//這里定義了一個(gè)組合快捷鍵,熟悉吧,沒錯(cuò)就是重啟,你可以把它注釋掉不用????? pf::powerfail:/sbin/shutdown?-f?-h?+2?"Power?Failure;?System?Shutting?Down"??//這里定義了ups電源,powerfail?指的是如果突然斷電,它對(duì)應(yīng)的process命令是,提示用戶系統(tǒng)電源失效,將要關(guān)機(jī),提醒用戶把數(shù)據(jù)都存儲(chǔ)好?? pr:12345:powerokwait:/sbin/shutdown?-c?"Power?Restored;?Shutdown?Cancelled"??//這里的action,powerokwaite,指的是系統(tǒng)恢復(fù)供電,關(guān)機(jī)取消...?? ?? 1:2345:respawn:/sbin/mingetty?tty1???????????//開啟終端,在系統(tǒng)準(zhǔn)備工作做好后,就會(huì)啟動(dòng)出6個(gè)終端,tty1~6?mingetyy就是終端的執(zhí)行命令?? 2:2345:respawn:/sbin/mingetty?tty2???????????//可以看到他們對(duì)應(yīng)的級(jí)別是2345,你也可以注釋掉幾個(gè),這樣啟動(dòng)后,就會(huì)開啟你指定個(gè)數(shù)的終端...??? 3:2345:respawn:/sbin/mingetty?tty3???????????//這里的動(dòng)作respawn意思是如果用戶關(guān)閉,那么這個(gè)進(jìn)程會(huì)立刻再次執(zhí)行??? 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???????//當(dāng)一切準(zhǔn)備完畢,就會(huì)運(yùn)行守護(hù)進(jìn)程,它是不分運(yùn)行級(jí)別的,同樣也是respawn??
2. 關(guān)于etc/rc.d/rc.sysyinit 和 /etc/rc.d/rc.Nd
在inittab文件中,我們了解到rc.sysinit是系統(tǒng)運(yùn)行的第一個(gè)腳本,那么它的作用都有哪些呢?如果有shell腳本基礎(chǔ)的話可以用vim打開這個(gè)文件來看看,它有900多行...是linux里最牛的腳本,總結(jié)下它的作用,有如下幾點(diǎn):(一定要牢記,必要時(shí)我們要重寫它!)
1. 激活udev和selinux
2. 通過讀取/etc/sysct1.conf來設(shè)置內(nèi)核參數(shù)
3. 設(shè)置系統(tǒng)時(shí)鐘
4. 設(shè)置鍵盤映射
5. 啟動(dòng)交換分區(qū)。
6. 設(shè)置主機(jī)名
7. 檢查跟文件系統(tǒng),并且如果沒有錯(cuò)誤,以讀寫的方式來重新掛載文件系統(tǒng) (重要)
8. 激活raid和lvm設(shè)備
9. 啟動(dòng)磁盤限額
10 掛載其他/etc/fstab里定義的尚未被掛載的設(shè)備
11. 清理過時(shí)的文件鎖和PID文件
12. 啟動(dòng)服務(wù)/etc/rc.d/rcN.d
/etc/rc.d/rcN.d 是一個(gè)存放了系統(tǒng)啟動(dòng)是加載的服務(wù)的文件夾,通過inittab,我們知道了,它的編號(hào)對(duì)應(yīng)相應(yīng)的啟動(dòng)運(yùn)行級(jí)別。
需要說明的是,它里面的文件,以我的為例 以K開頭的代表stop,以S開頭的代表啟動(dòng)start,數(shù)字越小,有限級(jí)別越高
[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文件
它定義了系統(tǒng)初始化掛載的設(shè)備,對(duì)系統(tǒng)的啟動(dòng)至關(guān)重要,rc.sysinit通過讀取它來實(shí)現(xiàn)系統(tǒng)分區(qū)的掛載
它的內(nèi)容如何呢?我們一起來看下
要掛載的設(shè)備 掛載點(diǎn) 文件系統(tǒng)類型 掛載選項(xiàng) 轉(zhuǎn)儲(chǔ)頻率 文件自檢次序
[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個(gè)系統(tǒng)啟動(dòng)時(shí)必須掛載的設(shè)備
/ 根文件目錄,由它你才可以進(jìn)入linux的世界,它在/dev/sda2里
/boot 啟動(dòng)目錄,在/下,里面有g(shù)rub,initrd和系統(tǒng)內(nèi)核,它在/dev/sda1
sysfs 一個(gè)虛擬的文件系統(tǒng),產(chǎn)生包含所有硬件層次視圖,和/proc類似
proc 這是一個(gè)虛擬的目錄,它映射內(nèi)存里的信息對(duì)應(yīng)進(jìn)程信息,也就是說它對(duì)應(yīng)的是內(nèi)存而不是硬盤
好了,了解了這些文件和目錄的作用,我們?cè)诨剡^頭來看那張流程圖:
1. linux開機(jī)從POST加電自檢開始,當(dāng)自檢完成,讀取第一個(gè)硬盤的第0個(gè)磁頭里的前446個(gè)字節(jié),運(yùn)行里面的bootloader,linux一般?? 用的是grub。
2. 通過grub傳遞參數(shù)給內(nèi)核,初始化加載內(nèi)核過程,內(nèi)核調(diào)用initrd(小型內(nèi)存文件系統(tǒng),五臟俱全,是一個(gè)微型linux),通過???? initrd,以只讀方式掛載根文件系統(tǒng)
3. 當(dāng)根文件系統(tǒng)被掛載后,就會(huì)讀取并運(yùn)行/sbin/init來進(jìn)行初始化工作。
4. 按次序依次執(zhí)行/rc/sysinit ,這個(gè)時(shí)候會(huì)重新以讀寫的方式掛載根文件系統(tǒng)
5. 讀取/etc/rc.d/rcN.d/來啟動(dòng)以s開頭的服務(wù),停止以k開頭的服務(wù)
6. 當(dāng)一切準(zhǔn)備完畢,打印終端,出現(xiàn)熟悉的Login界面!(當(dāng)然,如果你是以5級(jí)別啟動(dòng)的話,Linux就會(huì)啟動(dòng)圖形界~)
轉(zhuǎn)自:?http://blog.csdn.net/haiwil/article/details/6763673
總結(jié)
以上是生活随笔為你收集整理的linux文件系统启动流程 ---笔记整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。