Linux系統啟動流程

    下面按照系統的啟動順序來進行逐一的講解。

一、POST

    當我們按下開機的電源后,主板上的芯片組會首先向CPU發出一個reset指令,之后待芯片組檢測到電源供電穩定后便撤去reset指令,CPU就會跳轉到BIOS中的啟動代碼位置; BIOS首先要檢測關鍵設備(如內顯、顯卡等)是否正常,這個過程就稱為POST(加電后自檢)。

    POST完成后BIOS會調用其它代碼來進行完整的硬件檢測。 

二、(BIOS) boot sequence

    引導次序:按次序找引導設備,第一個有引導程序的設備,即為啟動PC Server所用到的設備。 

三、MBR(Bootloader)

    MBR(Mater Boot Record),即主引導記錄。其位置在第一個扇區的前512字節。Bootloader是安裝于MRB當中的引導管理程序,早期比較常見的Bootloader程序為LILO,但因為其不支持1023柱面以后的分區,所以現在比較常用的為GRUB。

    GRUB(Grand Unified Bootloader)是由GNU下的FSF組織所推行的;CentOS 5和CentOS 6上使用的版本為Grub 0.97,而CentOS 7上使用的版本為Grub2 1.96。

    下面以CentOS 6為例來了解一下GRUB:

    我們先來看一下系統的上GRUB目錄中的內容,如下圖所示:

1.png

    從上圖中可以看到stage1、*_stage1_5和stage2這三類文件,它們分別表示GRUB引導時的三個階段。

        1)stage 1

            stage 1文件其實是MBR中Bootloader的備份文件,雖然stage 1也是512B但只有前446B與MBR相同,后64B完成不一樣。

2.png3.png4.png

        2)stage1_5

            grub目錄中存在許多以stage1_5結尾的文件,這些文件都是stage1_5階段功能的文件,里面存放著文件系統的格式,其作用是連接stage1和stage2的一個通道。

            stage1_5文件的內容保存在MBR后面的32K中;其實stage1.5文件會在安裝GRUB時安裝到MBR后的32K中,系統啟動時會直接讀取MBR后面的內容,即使這些文件不存在也不會影響GRUB的正常工作。

        3)stage 2

            在此階段會讀取grub.conf配置文件中設置信息來完成系統的引導,并且可以實現引導功能的擴展。

5.png

        GRUB的功能如下:

            1)提供菜單,并提供交互式接口

                e:進入編輯模式;

                a:直接修改內核參數;

                c:進入命令行模式。

            2)選擇要啟動的內核或系統

                允許傳遞引導參數給內核;

                選擇界面可隱藏。

            3)為編輯功能提供機制

                可以為指定的內核得添加密碼。

        grub.conf文件內容:

            default=:選擇第幾個title配置的內核或系統,各title從0開始編號;

            timeout=#:菜單顯示的超時時長;

            splashimage=/path/to/some-image_file:指定菜單背景圖片,此圖片只能為14bits色,xpm格式,gzip壓縮;

            hiddenmenu:隱藏菜單;

            tiltle TITLE SIRING:顯示于菜單中的標題;

            root:指定引導分區;

            kernel:指明kernel的位置;

            initrd:指明initramfs的位置。

四、kernel+ramdisk (initramfs) 

    在GRUB的選擇界面里按e,進入編輯模式,可以看到kernel和ramdisk,如下圖所示:

6.png

    kernel是操作系統的內核程序,所有的軟硬件都是通過kernel來溝通的。在上圖中的vmlinuz文件就是開機時所用的kernel。

    initrd(initial ramdisk),是激活系統所必須加載的文件系統。

    當kernel被載入到內存后,需要加載相應驅動程來識別文件系統,這時initrd就充當了臨時的系統被掛載到rootfs上,其作用就是協助kernel來加載驅動程序。

五、/sbin/init(/etc/init/*.conf)設定默認運行級別

    /sbin/init會使用/etc/init/目錄中的.conf配置文件來對系統進行配置,之后調用/etc/rc.d/rc.sysinit文件對系統進行初始化。

    在進行系統配置的過程時,init會檢測系統默認的runlevel(運行級別),并根據runlevel的信息來做相應的配置,在說明啟動服務時會集中講解runlevel,這里就只是先介紹一下CentOS的7個運行級別: 

        0:關機;

        1:單用戶,s,S,single;

        2:多用戶,不支持NFS功能;

        3:完全多用戶,文本接口;

        4:未使用,預留級別;

        5:完全多用戶,圖形接口;

        6:重啟。

六、使用/etc/rc.d/rc.sysinit初始化系統

    1、設定主機名:讀取/etc/sysconfig/network文件中的HOSTNAME參數,并以之設定主機名;

    2、打印文本歡迎信息;    

    3、激活SElinux和udev; 

    4、掛載/etc/fstab文件中定義的其它文件系統;

    5、激活swap;

    6、檢測根文件系統,并以讀寫方式重新掛載;

    7、設置系統時鐘;

    8、根據/etc/sysctl.conf設置內核參數;

    9、激活LVM和RAID;

    10、加載額外設備的驅動程序;

    11、清理工作。

七、啟動或關閉指定服務

    啟動指定的級別默認為啟動的服務,停止指定的級別下默認為關閉的服務。

    /etc/rc.d/目錄中rc0.d-rc6.d這7個目錄中分別存放了不同運行級別啟動或關閉時所要執行的腳本。

7.png

8.png

    以rc3.d為例,在上面列出的所有腳本文件都是鏈接文件,其中:S##表示啟動的服務,K##表示要停止的服務,##的范圍是從0到99,數字越小,優先級越高。

    根據系統默認的運行級別來調用各級別對應的腳本,默認運行級別在配置文件/etc/inittab中設置。

10.png

    也可以手動修改腳本的默認運行級別。

    使用chkconfig命令來調整服務腳本在各運行級別下默認的啟動與關閉。

9.png

    如果期望自定義的腳本使用chkconfig來控制,需要按照以下步驟操作:

        1、在腳本中添加以下語句:

            #chkconfig: – 85 15

                -:當此腳本由chkconfig控制時,默認哪些級別是開啟的,“-”表示全部級別;

                85:啟動優先級;

                15:關閉優先級;

        2、將腳本復制到/etc/init.d/目錄中;

        3、加入腳本到運行級別列表:

            chkconfig –add 腳本名

    從運行級別列表中刪除腳本:chkconfig –del 腳本名

    /etc/rc.d/rc.local(/etc/rc.local):是一個腳本,通常為系統啟動完成的最后運行的一個腳本。

八、顯示終端登錄界面

    

原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/4439

(0)
petmasterpetmaster
上一篇 2015-05-23 22:14
下一篇 2015-05-23 22:20

相關推薦

  • yum與rpm包

    yum與rpm包 包命名和工具 包:分類和拆包 Application-VERSION-ARCH.rpm:主包 Application-devel-VERSION-ARCH.rpm 開發子包 Application-utils-VERSION-ARHC.rpm 其它子包 Application-libs-VERSION-ARHC.rpm 其它子包 包之間:可…

    Linux干貨 2017-05-08
  • 幽默:程序員的進化

    高中時期 view plaincopy to clipboardprint? 10 PRINT "HELLO WORLD"   20 END 大學新生 view plaincopy to clipboardprint? …

    Linux干貨 2016-05-17
  • 讀寫執行權限對文件和目錄的影響

    權限的作用 對于linux運維工作來說,熟練掌握文件管理技能是非常重要的,所謂“一切皆文件”,控制住文件的權限,可以說也就控制住了linux系統。而且,運維的工作要和成千上萬的文件打交道,對于文件屬性的熟識程度對于工作的順利開展有著深遠的影響。綜上,了解文件,熟悉文件,掌握文件,是我們運維的一個重要的課程。 不同權限對文件和目錄的影響 首先,我們現對權限進行…

    Linux干貨 2017-07-30
  • 馬哥教育網絡班22期+第6周課程練習

    請詳細總結vim編輯器的使用并完成以下練習題 1、vi的基本概念 基本上vi可以分為三種狀態,分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區分如下: 1) 命令行模式command mode) 控制屏幕光標的移…

    Linux干貨 2016-09-26
  • 馬哥教育網絡班21期+第14周課程練習

    系統的INPUT和OUTPUT默認策略為DROP; iptables -P INPUT DROP iptables -P OUTPUT DROP 1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響…

    Linux干貨 2016-10-09
  • Linux任務計劃

        任務計劃分類:    一次性任務計劃:只執行一次就結束                at batch    周期性任務計劃:每隔一定的周期去…

    Linux干貨 2017-05-08
欧美性久久久久