站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        Linux 系統(tǒng)啟動過程及原理解析

        【概述】

        Linux 啟動時(shí)會看到許多啟動信息,但 Linux系統(tǒng)的啟動過程并沒有想象中的復(fù)雜,其過程大致可分為7個(gè)階段:

        內(nèi)核的引導(dǎo)運(yùn)行 init系統(tǒng)初始化建立終端?用戶登錄系統(tǒng)圖形模式與文字模式的切換方式
        關(guān)機(jī)

        【內(nèi)核引導(dǎo)】

        當(dāng)計(jì)算機(jī)打開電源啟動后,首先進(jìn)行的是BIOS開機(jī)自檢,即:按照BIOS中設(shè)置的啟動設(shè)備(通常是硬盤)來啟動。

        操作系統(tǒng)接管硬件以后,首先讀入 /boot 目錄下的內(nèi)核文件,這個(gè)過程即為內(nèi)核引導(dǎo)過程。

        Linux 系統(tǒng)啟動過程及原理解析

        【運(yùn)行init】

        1.init文件類型

        SysV: init, CentOS 5之前, 配置文件: /etc/inittab

        Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf

        Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system

        注:init 進(jìn)程是系統(tǒng)所有進(jìn)程的起點(diǎn),沒有這個(gè)進(jìn)程,系統(tǒng)中任何進(jìn)程都不會啟動,init 程序首先讀取的配置文件是 /etc/inittab

        Linux 系統(tǒng)啟動過程及原理解析

        2.運(yùn)行級別

        許多程序需要開機(jī)啟動,這些程序在 Windows 中叫做"服務(wù)"(service),在 Linux 中叫做"守護(hù)進(jìn)程"(daemon),init 進(jìn)程的一大任務(wù),就是去運(yùn)行這些開機(jī)啟動的程序。

        不同的場合需要啟動不同的程序(比如用作服務(wù)器時(shí),需要啟動 Apache,用作桌面則不需要),Linux 允許為不同的場合,分配不同的開機(jī)啟動程序,這就叫做"運(yùn)行級別"(runlevel),即:啟動時(shí)根據(jù)"運(yùn)行級別",確定要運(yùn)行的程序。

        Linux 系統(tǒng)啟動過程及原理解析

        Linux 系統(tǒng)有7個(gè)運(yùn)行級別(runlevel):

        運(yùn)行級別0:系統(tǒng)停機(jī)狀態(tài),系統(tǒng)默認(rèn)運(yùn)行級別不能設(shè)為0,否則不能正常啟動運(yùn)行級別1:單用戶工作狀態(tài),root權(quán)限,用于系統(tǒng)維護(hù),禁止遠(yuǎn)程登陸運(yùn)行級別2:多用戶狀態(tài)(沒有NFS)運(yùn)行級別3:完全的多用戶狀態(tài)(有NFS),登陸后進(jìn)入控制臺命令行模式運(yùn)行級別4:系統(tǒng)未使用,保留運(yùn)行級別5:X11控制臺,登陸后進(jìn)入圖形GUI模式運(yùn)行級別6:系統(tǒng)正常關(guān)閉并重啟,默認(rèn)運(yùn)行級別不能設(shè)為6,否則不能正常啟動

        【系統(tǒng)初始化】

        在 init 的配置文件中,存在這么一行:si::sysinit:/etc/rc.d/rc.sysinit ,它調(diào)用執(zhí)行了 /etc/rc.d/rc.sysinit ,而rc.sysinit 是一個(gè) bash shell 的腳本,主要用于完成系統(tǒng)初始化的工作,rc.sysinit 是每一個(gè)運(yùn)行級別都要首先運(yùn)行的重要腳本。

        它主要完成的工作有:激活交換分區(qū)、檢查磁盤、加載硬件模塊等需要優(yōu)先執(zhí)行的任務(wù)。

          l5:5:wait:/etc/rc.d/rc 5

        這一行表示以5為參數(shù)運(yùn)行 /etc/rc.d/rc ,/etc/rc.d/rc 是一個(gè) Shell 腳本,它接受5作為參數(shù),去執(zhí)行 /etc/rc.d/rc5.d/ 目錄下的所有的 rc 啟動腳本,/etc/rc.d/rc5.d/ 目錄中的這些啟動腳本實(shí)際上都是一些連接文件,而不是真正的 rc啟動腳本,真正的 rc啟動腳本 實(shí)際上都是放在 /etc/rc.d/init.d/ 目錄下。

        而這些 rc啟動腳本 有著類似的用法,它們一般能接受 start、stop、restart、status 等參數(shù)。

        /etc/rc.d/rc5.d/ 中的 rc啟動腳本 通常是 K 或 S 開頭的連接文件,對于以 S 開頭的啟動腳本,將以 start參數(shù) 來運(yùn)行。

        如果發(fā)現(xiàn)存在相應(yīng)的腳本也存在 K 開頭的連接,而且已經(jīng)處于運(yùn)行態(tài)了(以 /var/lock/subsys/ 下的文件作為標(biāo)志),則首先以 stop 為參數(shù)停止這些已經(jīng)啟動的守護(hù)進(jìn)程,然后再重新運(yùn)行。這樣做是為了保證是當(dāng) init 改變運(yùn)行級別時(shí),所有相關(guān)的守護(hù)進(jìn)程都將重啟。

        至于在每個(gè)運(yùn)行級中將運(yùn)行哪些守護(hù)進(jìn)程,用戶可通過 chkconfig 或 setup 中的"System Services"來自行設(shè)定。

        Linux 系統(tǒng)啟動過程及原理解析

        【建立終端】

        rc 執(zhí)行完畢后,返回 init,此時(shí)基本系統(tǒng)環(huán)境已經(jīng)設(shè)置好了,各種守護(hù)進(jìn)程也已啟動了,init 接下來會打開6個(gè)終端,以便用戶登錄系統(tǒng)。

        在 inittab 中的以下6行就是定義了6個(gè)終端:

          1:2345:respawn:/sbin/mingetty tty1  2:2345:respawn:/sbin/mingetty tty2  3:2345:respawn:/sbin/mingetty tty3  4:2345:respawn:/sbin/mingetty tty4  5:2345:respawn:/sbin/mingetty tty5  6:2345:respawn:/sbin/mingetty tty6

        從上面可以看出在2、3、4、5的運(yùn)行級別中都將以 respawn 方式運(yùn)行 mingetty 程序。

        mingetty 程序能打開終端、設(shè)置模式,同時(shí)它會顯示一個(gè)文本登錄界面,這個(gè)界面就是我們經(jīng)常看到的登錄界面,在界面中會提示用戶輸入用戶名,而用戶輸入的用戶將作為參數(shù)傳給 login 程序來驗(yàn)證用戶的身份。

        【用戶登錄系統(tǒng)】

        一般來說,用戶的登錄方式有三種:

        命令行登錄SSH(Secure Shell)登錄圖形界面登錄

        Linux 系統(tǒng)啟動過程及原理解析

        對于運(yùn)行級別為5的圖形方式用戶來說,登錄是通過一個(gè)圖形化的登錄界面,登錄成功后可以直接進(jìn)入 KDE、Gnome 等窗口管理器。

        對于以文本方式登錄的情況:當(dāng)我們看到 mingetty 的登錄界面時(shí),就可以輸入用戶名和密碼來登錄系統(tǒng)。Linux 的賬號驗(yàn)證程序是 login,login 會接收 mingetty 傳來的用戶名作為用戶名參數(shù),然后 login 會對用戶名進(jìn)行分析,如果用戶名不是 root,且存在 /etc/nologin 文件,login 將輸出 nologin 文件的內(nèi)容,然后退出。

        以文本方式登錄通常用于系統(tǒng)維護(hù)時(shí)防止 非root用戶 登錄,只有在 /etc/securetty 中登記了的終端才允許 root用戶 登錄,如果不存在這個(gè)文件,則 root用戶 可以在任何終端上登錄。

        【圖形模式與文字模式的切換方式】

        Linux預(yù)設(shè)提供了六個(gè)命令窗口終端機(jī)用于登錄。

        這個(gè)六個(gè)窗口分別為 tty1,tty2 … tty6,可以按下 Ctrl + Alt + F1 ~ F6 來切換,默認(rèn)登錄的就是第一個(gè)窗口,也就是 tty1。

        如果安裝了圖形界面,默認(rèn)情況下是直接進(jìn)入圖形界面,此時(shí)可以按 Ctrl + Alt + F1 ~ F6 來進(jìn)入其中一個(gè)命令窗口界面,當(dāng)進(jìn)入命令窗口界面后再返回圖形界面只要按下 Ctrl + Alt + F7 就可以返回。

        如果你用的 VMware虛擬機(jī),命令窗口切換的快捷鍵為 Alt + Space + F1~F6,如果在圖形界面下按 Alt + Shift + Ctrl + F1~F6 來切換至命令窗口。

        Linux 系統(tǒng)啟動過程及原理解析

        【關(guān)機(jī)】

        Linux 大多用在服務(wù)器上,很少遇到關(guān)機(jī)的操作,因?yàn)樵诜?wù)器上跑一個(gè)服務(wù)是永無止境的,除非特殊情況下不得已才關(guān)機(jī)。

        正確的關(guān)機(jī)流程為:sync > shutdown > reboot > halt

        關(guān)機(jī)指令為:shutdown (具體的可以用 man shutdown 來看幫助文檔)

        例如可以運(yùn)行如下命令關(guān)機(jī):

          sync 將數(shù)據(jù)由內(nèi)存同步到硬盤中。  shutdown –h 10 ‘This server will shutdown after 10 mins’ 這個(gè)命令告訴大家,計(jì)算機(jī)將在10分鐘后關(guān)機(jī),并且會顯示在登陸用戶的當(dāng)前屏幕中。  Shutdown –h now 立馬關(guān)機(jī)  Shutdown –h 20:25 系統(tǒng)會在今天20:25關(guān)機(jī)  Shutdown –h +10 十分鐘后關(guān)機(jī)  Shutdown –r now 系統(tǒng)立馬重啟  Shutdown –r +10 系統(tǒng)十分鐘后重啟  reboot 就是重啟,等同于 shutdown –r now  halt 關(guān)閉系統(tǒng),等同于shutdown –h now 和 poweroff

        注:

        無論是重啟系統(tǒng)還是關(guān)閉系統(tǒng),首先都要運(yùn)行 sync 命令,將內(nèi)存中的數(shù)據(jù)寫到磁盤中。常用的關(guān)機(jī)命令有 shutdown –h now halt poweroffinit 0?常用的重啟命令有 shutdown –r now reboot init 6

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 国产成人精品无码播放| 久久国产精品国产自线拍免费| 亚洲精品国产日韩无码AV永久免费网| 国产精品合集一区二区三区| 真实国产乱子伦精品一区二区三区| 四虎最新永久在线精品免费| 亚洲av无码国产精品夜色午夜| 精品久久久久久久久久久久久久久 | 91麻豆精品国产自产在线观看亚洲| 欧美精品福利视频一区二区三区久久久精品 | 亚洲欧美日韩精品久久亚洲区| 国产区精品福利在线观看精品| 久久久久四虎国产精品| 国产精品无套内射迪丽热巴| 无码国产精品一区二区免费模式| 亚洲精品岛国片在线观看| 久久久精品久久久久特色影视| 国产高清在线精品一本大道国产| 久久99热精品| 国产精品怡红院永久免费| 国产办公室秘书无码精品99| 精品麻豆丝袜高跟鞋AV| 久久精品国产99久久久| 午夜精品乱人伦小说区| 无码人妻精品一区二区三区夜夜嗨| 亚洲精品~无码抽插| 亚洲国产精品一区二区九九| 欧美日韩在线精品一区二区三区激情综合| 国产精品va久久久久久久| 国产精品免费看久久久香蕉| 国产亚洲精品a在线观看| 精品人妻系列无码人妻免费视频 | 91精品在线国产| 国产精品成人h片在线| 国产精品自产拍在线18禁| 国产精品丝袜久久久久久不卡| 国产精品免费视频观看拍拍| 精品人妻少妇一区二区三区在线| 久久这里只有精品视频99| 亚洲精品无码久久毛片| 久久丫精品国产亚洲av不卡|