乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      linux啟動(dòng)過(guò)程

       A_Geek 2013-06-24

      我們要成為某一方面的專家,就必須深知它的原理,知道它最基層的構(gòu)架,這樣我們才可以以不變應(yīng)萬(wàn)變,Linux 也是一樣,我們要想玩弄Linux股掌之中,就必須先知道它的基礎(chǔ),它是如何讓啟動(dòng)的。

         下面就大致說(shuō)一下啟動(dòng)的順序:BIOS通電自檢--主引導(dǎo)加載程序--內(nèi)核初始化--系統(tǒng)初始化

         具體如下:
         主板通電--啟動(dòng)BIOS--加載BIOS硬件信息并自檢--獲取第一個(gè)設(shè)備啟動(dòng)號(hào)(MBR)--啟動(dòng)硬盤(pán)的主引導(dǎo)記錄MBR--啟動(dòng)內(nèi)核加載程序grub--加載內(nèi)核并嘗試驅(qū)動(dòng)所有硬件設(shè)備(由initrd實(shí)現(xiàn))--內(nèi)核初始化完成,運(yùn)行第一個(gè)程序init,init通過(guò)inittab的信息進(jìn)行工作--運(yùn)行/etc/rc.d/rc.sysinit進(jìn)行系統(tǒng)初始化--啟動(dòng)內(nèi)核模塊(/etc/modprobe.comf)--init執(zhí)行對(duì)應(yīng)啟動(dòng)級(jí)別下的腳本(/erc/rc.d/rc*.d)--init執(zhí)行/etc/rc.d/rc.local文件--執(zhí)行/bin/login程序等待用戶登錄

      上面的是不是看著有點(diǎn)不明白,沒(méi)關(guān)系,先看一下下面的這些介紹,然后會(huì)有更詳細(xì)的開(kāi)機(jī)啟動(dòng)介紹。

         大家要搞清楚系統(tǒng)啟動(dòng)的過(guò)程,就必須知道每一步用到的文件和程序是用來(lái)做什么的,定義了什么。

      BIOS是英文"Basic Input Output System"的縮略語(yǔ),直譯過(guò)來(lái)后中文名稱就是"基本輸入輸出系統(tǒng)"。其實(shí),它是一組固化到計(jì)算機(jī)內(nèi)主板上一個(gè)ROM芯片上的程序,它保存著計(jì)算機(jī)最重要的基本輸入輸出的程序、系統(tǒng)設(shè)置信息、開(kāi)機(jī)后自檢程序和系統(tǒng)自啟動(dòng)程序。 其主要功能是為計(jì)算機(jī)提供最底層的、最直接的硬件設(shè)置和控制。

      MBR:

      每一個(gè)硬盤(pán)的第一個(gè)記錄稱為MBR。MBR 是英文Master Boot Record的縮寫(xiě),中文意為主引導(dǎo)記錄。硬盤(pán)的0磁道的第一個(gè)扇區(qū)就叫做MBR,它的大小是512字節(jié),而這個(gè)區(qū)域可以分為兩個(gè)部分。第一部分為pre- boot區(qū)(預(yù)啟動(dòng)區(qū)),占446字節(jié),用于加載啟動(dòng)第二部分,第二部分是Partition table區(qū)(分區(qū)表),占64個(gè)字節(jié)(每16個(gè)字節(jié)標(biāo)配一個(gè)分區(qū),所以我們的硬盤(pán)只能有四個(gè)主分區(qū),就在這里定義),該區(qū)相當(dāng)于一個(gè)小程序,作用是判斷哪個(gè)分區(qū)被標(biāo)記為活動(dòng)分區(qū),然后去讀取那個(gè)分區(qū)的啟動(dòng)區(qū),并運(yùn)行該區(qū)中的代碼

      為什么要使用在MBR中安裝引導(dǎo)加載程序:操作核心必須要認(rèn)識(shí)磁盤(pán)文件系統(tǒng),才能讀取里面的內(nèi)容,但此時(shí)系統(tǒng)才剛開(kāi)始啟動(dòng),系統(tǒng)要如何認(rèn)識(shí)文件系統(tǒng)呢?這時(shí)候就必須要有引導(dǎo)加載程序,才能加載內(nèi)核。當(dāng)前主流的grup引導(dǎo)加載程序可以支持Linux 和 Windows 的核心系統(tǒng)。

      initrd:

      首先我們要知道,系在加載內(nèi)核的過(guò)程中,系統(tǒng)只會(huì)以只讀方式載入根目錄,所以為了系統(tǒng)啟動(dòng)的順序進(jìn)行,我們引入initrd概念。Linux 初始 RAM 磁盤(pán)(由initrd建立)是在系統(tǒng)引導(dǎo)過(guò)程中掛載的一個(gè)臨時(shí)根文件系統(tǒng),用來(lái)支持兩階段的引導(dǎo)過(guò)程。initrd 文件中包含了各種可執(zhí)行程序和驅(qū)動(dòng)程序,它們可以用來(lái)掛載實(shí)際的根文件系統(tǒng),然后再將這個(gè) initrd RAM 磁盤(pán)卸載,并釋放內(nèi)存。

      關(guān)于rc*:init根據(jù)inittab文件定義的開(kāi)機(jī)啟動(dòng)默認(rèn)級(jí)別進(jìn)入的相應(yīng)系統(tǒng)級(jí)別,然后調(diào)用/etc/rc.d/rc根據(jù)級(jí)別參數(shù)執(zhí)行相應(yīng)級(jí)別目錄/etc/rc.d/rc*.d/下的腳本

       

      內(nèi)核初始化過(guò)程的配置文件機(jī)器作用:/var/log/dmesg

      1 硬件設(shè)備的探測(cè)

      2 initrd文件,從中加載額外的設(shè)備驅(qū)動(dòng)

      3 以只讀的方式掛載根文件系統(tǒng)

      4 裝載init進(jìn)程 /sbin/init

       

      系統(tǒng)的第一個(gè)進(jìn)程init的配置文件及作用:/etc/inittab 

      1 設(shè)定默認(rèn)運(yùn)行級(jí)別

      2 啟動(dòng)系統(tǒng)初始化腳本

      3 執(zhí)行指定運(yùn)行級(jí)別下的每一個(gè)啟動(dòng)腳本

      4 設(shè)定CTRL+ALT+DEL組合鍵功能

      5 設(shè)定該電源故障時(shí)執(zhí)行的腳本

      6 設(shè)定要啟動(dòng)的虛擬控制臺(tái)/dev/tty[1-6]

      7 設(shè)定當(dāng)啟動(dòng)運(yùn)行級(jí)別為5時(shí)做GUI初始化的腳本

       

      我們看一下inittab文件里面的具體內(nèi)容:

      1: id:5:initdefault: 系統(tǒng)默認(rèn)啟動(dòng)級(jí)別

      2: si::sysinit:/etc/rc.d/rc.sysinit  執(zhí)行系統(tǒng)初始化腳本

      3:l0:0:wait:/etc/rc.d/rc 0

      l1:1:wait:/etc/rc.d/rc 1

      l2:2:wait:/etc/rc.d/rc 2

      l3:3:wait:/etc/rc.d/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  

       

      使用rc腳本執(zhí)行rc*.d目錄內(nèi)的腳本

      目錄/etc/rc*.d/中以S開(kāi)頭的表示進(jìn)入該級(jí)別時(shí)要執(zhí)行的腳本 K開(kāi)頭離開(kāi)該級(jí)別時(shí)要關(guān)閉的腳本 這些腳本都為鏈接文件,真正的腳本位于/etc/init.d/下!

      4:ca::ctrlaltdel:/sbin/shutdown -t3 -r now  設(shè)定CTRL+ALT+DEL組合鍵功能

      5:pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"  電源故障處理

      6:pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"  電源重新恢復(fù)關(guān)機(jī)取消處理

      7:

      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  標(biāo)示6個(gè)虛擬控制臺(tái),respawn:用戶退出時(shí)虛擬控制臺(tái)關(guān)閉再開(kāi)啟等待用戶下一次進(jìn)入

      8:x:5:respawn:/etc/X11/prefdm -nodaemon 啟動(dòng)圖形界面等待用戶登錄

       

      系統(tǒng)初始化腳本/etc/rc.d/rc.sysinit

      1 激活udev和selinux

      2 設(shè)置內(nèi)核啟動(dòng)參數(shù) /etc/sysctl.conf

      3 設(shè)置系統(tǒng)時(shí)鐘

      4 裝載鍵盤(pán)映射

      5 啟用交換分區(qū) (虛擬內(nèi)存)

      6 設(shè)置主機(jī)名稱 /etc/sysconfig/network

      7 根文件系統(tǒng)自檢并重新以讀寫(xiě)方式掛載根文件系統(tǒng)

      8 激活RAID和LVM設(shè)備

      9 啟動(dòng)磁盤(pán)配額

      10 檢查ing掛載其他文件系統(tǒng) /etc/fstab

      11 清除不再使用鎖和PID文件

       

      大家看過(guò)上面的文件信息后,我再重述一遍linux的開(kāi)機(jī)啟動(dòng)過(guò)程,希望能是大家的思路更加清晰:

      開(kāi)機(jī)通電后,BIOS進(jìn)行自檢,并且自己獲得一個(gè)設(shè)備啟動(dòng)號(hào),也就是將MBR定義為第一個(gè)要啟動(dòng)的設(shè)備,BIOS自檢完成就將控制權(quán)交給MBR,MBR分為兩部分,第一部分446字節(jié),它的唯一作用就是引導(dǎo)第二部分,也就是我們常用的grub,grub通過(guò)其菜單功能和指向功能讓我們選擇需要加載的內(nèi)核。通過(guò)引導(dǎo)加載程序讀取內(nèi)核文件(我們的內(nèi)核文件一般放在/boot/vmlinuz-servion)后,機(jī)器會(huì)將內(nèi)核解壓到主存,然后通過(guò)內(nèi)核功能來(lái)進(jìn)行設(shè)備檢測(cè)。在內(nèi)核加載過(guò)程中,系統(tǒng)只會(huì)以只讀方式載入根目錄,為了讓某些功能能以文件方式來(lái)讀取,在系統(tǒng)啟動(dòng)時(shí),就需要用initrd建立虛擬盤(pán)(RAM disk),所在grub利用引導(dǎo)加載功能加載核心是,也會(huì)加載進(jìn)initrd的映像文件/boot/initrd-****.img,然后內(nèi)核會(huì)自動(dòng)以initrd來(lái)建立虛擬盤(pán),并且用initrd-***.img文件內(nèi)的linuxrc(筆者系統(tǒng)里的該程序名字為init)程序來(lái)加載模塊,內(nèi)核驅(qū)動(dòng)外部硬件的工作完成,虛擬盤(pán)刪除。核心加載完成后,系統(tǒng)準(zhǔn)備就緒,執(zhí)行第一個(gè)進(jìn)程/sbin/init,通過(guò)id:5:initdefault: 設(shè)置系統(tǒng)默認(rèn)啟動(dòng)級(jí)別,通過(guò)si::sysinit:/etc/rc.d/rc.sysinit  執(zhí)行系統(tǒng)初始化腳本,通過(guò)l*:*:wait:/etc/rc.d/rc *  使用rc腳本執(zhí)行rc*.d目錄和rc.local目錄內(nèi)腳本。(Redhat中的運(yùn)行模式2、3、5都把/etc/rc.d/rc.local做為初始化腳本中的最后一個(gè)

      至此整個(gè)系統(tǒng)啟動(dòng)完成!

       

      下面思考下:我們想要在開(kāi)機(jī)時(shí)自動(dòng)運(yùn)行一個(gè)命令,該如何實(shí)現(xiàn)呢?以cvslockd命令為例

      1:在/etc/rc.d/init.d/目錄下

      #vim cvslockd

      #!/bin/bash

      /usr/local/bin/cvslockd    命令的全路徑

      為腳本添加執(zhí)行權(quán)限

      #chmod +x /etc/rc.d/init.d/cvslockd

      2:在文件/etc/inittab中查看系統(tǒng)的運(yùn)行級(jí)別id:5:initdefault:,表示級(jí)別為5

       

      3. 到/etc/rc.d/rc5.d目錄下,把你要執(zhí)行的可執(zhí)行文件做一個(gè)軟連接,而且在命名的時(shí)候要以大寫(xiě)S字母開(kāi)頭,S之后的數(shù)字大小代表執(zhí)行順序的先后,數(shù)字越大越后執(zhí)行。

      #ln -s /etc/rc.d/init.d/cvslockd /etc/rc5.d/S100cvslockd

      #ln -s /etc/rc.d/init.d/cvslockd /etc/rc0.d/K20cvslockd

      方法二:

      在/etc/rc.d/rc.local 添加 exec /usr/local/bin/cvslockd

      該方式是在最后啟動(dòng)cvslockd


      轉(zhuǎn)載自http://linuxzoe.blog.51cto.com/3005391/564940

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多