Linux系統啟動流程簡介

centos系統啟動流程

本篇僅僅講解centos5和6

centos7并不適用

Linux系統的組成部分:內核+根文件系統

內核功能:

  • 進程管理

  • 內存管理

  • 網絡管理

  • 驅動程序

  • 文件系統

  • 安全功能

有以下目錄結構的文件系統可以被識別為根文件系統,但根文件系統本身不存在

rootfs:/bin/ /sbin /etc/ /sys/ /proc/ /lib /dev/ /sys /tmp /boot/...

內核:

Linux內核特點:

支持模塊化:.ko(內核對象)
    如:文件系統、硬件驅動、網絡協議等
支持內核模塊的動態裝載和卸載

組成部分:

核心文件:/boot/vmlinuz-VERSION-release
    ramdisk:輔助的偽根文件系統
    centos 5:/boot/initrd-Vsersion-release.img
    centos 6:/boot/initramfs-Version-release.img
模塊文件:/lib/modules/VSERSION-release

centos6啟動流程

1.加載BIOS的硬件信息,獲取第一個啟動設備。
2.讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息
3.加載核心操作系統的核心信息,核心開始解壓縮,并嘗試驅動所有的硬件設備。
4.核型執行init程序并獲取運行信息。
5.Init執行/etc/rc.d/rc.sysinit文件。
6.Init執行運行的各個批處理文件(scripts).
7.Init執行/etc/rc.d/rc.local.
8.執行/bin/login程序,等待用戶登錄。
9.登錄之后開始以Shell控制主機。

Linux系統啟動流程簡介

Linux系統啟動流程簡介

下面我們來分別介紹上述的步驟

1、POST

power-on-self-test,加電自檢,是BIOS功能的一個主要部分,負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串并行接口、鍵盤、等硬件情況的檢測

    ROM:BIOS,,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自檢程序和系統啟動自舉程序等。
    RAM::CMOS互補金屬氧化物半導體,保存各項參數的設定

    按次序查找引導設備,第一個有引導程序的設備為本次啟動設備

2、bootloader: 引導加載器,引導程序

windows: ntloader,僅是啟動OS
Linux:功能豐富,提供菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把系統控制權移交給內核
    LILO:LInuxLOader
    GRUB: GRandUnified Bootloader
    GRUB 0.X: GRUB Legacy,GRUB2

    1st stage:位于MBR中,為了引導2nd stage
    1.5 stage:位于mbr之后的扇區,不屬于任何分區,為識別內核文件所在的文件系統提供文件識別擴展
    2nd stage:位于boot基本磁盤分區中,GRUB的引導程序

3、kernel階段

自身初始化
探測可識別到的所有硬件設備
加載硬件驅動程序( 有可能會借助于ramdisk加載 )
以只讀方式掛載根文件系統
運行用戶空間的第一個應用程序:/sbin/init

ramdisk:
內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問
ramdisk--> ramfs提高速度
CentOS 5: initrd, 工具程序:mkinitrd
CentOS 6: initramfs,工具程序:mkinitrd, dracut

4、init程序類型:

centos 5:sysV init
配置文件:/etc/inittab
centos 6:upstart
配置文件:/etc/inittab   /etc/init/*.conf

    運行級別:為了系統的運行或維護等目的而設定的機制
        0-6:7個級別
            0:關機,shutdown # init 0
            1:單用戶模式(signal user),root用戶,無須認證;維護模式
            2:多用戶模式(multi user),會啟動網絡功能,但不會啟動NFS;維護模式
            3:多用戶模式(multi user),完全功能模式;文本界面
            4:預留級別:目前無特別適用目的,但習慣以同3級別功能使用
            5:多用戶模式(multi user),完全功能模式,圖形界面
            6:重啟,reboot

    默認級別:3,5
    級別切換:# init #
        級別查看:
            # who -r
            # runlevel


init初始化
    init讀取其初始化文件:/etc/inittab
    初始運行級別(RUN LEVEL)
    系統初始化腳本
    對應運行級別的腳本目錄
    捕獲某個關鍵字順序
    定義UPS電源終端/恢復腳本
    在虛擬控制臺生成getty
    在運行級別5初始化X

/etc/inittab文件:
每行定義一種action以及與之對應的process
        id:runlevels:action:process

            id:一個任務的標識符
            runlevels:在那些級別啟動此任務;#,###,標識所有級別
            action:在什么條件下啟動此任務
            process:任務

        action:
            wait:等待切換至此任務所在的級別時執行一次;
            respawn:一旦此任務終止時,就自動重新啟動之
            initdefault:設定默認運行級別;此時,process省略
            sysinit:設定系統初始化方式,此處一般為指定/etc/rc.d/rc.sysinit腳本

Linux系統啟動流程簡介

5、系統初始化腳本:/etc/rc.d/rc.sysinit

(1)設置主機名
(2)設置歡迎信息:
(3)激活udev和seLinux
(4)掛載/etc/fstab文件中定義的所有文件系統
(5)檢測根文件系統,并以讀寫方式重新掛載根文件系統
(6)設置系統時鐘;
(7)根據/etc/sysctl.conf文件的設置,來設置內核參數
(8)激活lvm及軟raid設備
(9)激活swap設備
(10)加載額外設備的驅動程序
(11)清理操作

6、關閉對應級別下需要停止的服務,啟動對應級別下需要開啟的服務

    l0:0:wait:/etc/rc.d/rc 0
    l1:1:wait:/etc/rc.d/rc 1
    l2:2:wait:/etc/rc.d/rc 2
            ...
    l6:6:wait:/etc/rc.d/rc 6
        意味著去啟動或關閉/etc/rc.d/rc#.d/目錄下的服務腳本所控制的服務
            K*:要停止的服務;K##,優先級,數字越小,越是先關閉,依賴的服務先關閉,而后關閉被依賴的
            S*:要啟動的服務;S##;優先級;數字越小,越是優先啟動,被依賴的服務先啟動,而依賴的服務后啟動

                rc腳本:接受一個運行級別數字為參數

                    腳本框架:
                        for srv in /etc/rc.d/rc#.d/K*; do
                            $srv stop
                        done

                        for srv in /etc/rc.d/rc#.d/S*; do
                            $srv start
                        done

                    /etc/init.d/* (/etc/rc.d/init.d/*)腳本執行方式:
                        # /etc/init.d/SRV_SCRIPT { start | stop restart | status }
                        # service SRV_SCRIPT  { start | stop restart | status }

7、/etc/rc.d/rc.local

注意:正常級別下,最后啟動一個服務S99local沒有鏈接至/etc/rc.d/init.d一個服務腳本,而是指向了/etc/rc.d/rc.local腳本
不便或不需寫為服務腳本放置于/etc/rc.d/init.d/目錄,且又想開機時自動運行的命令,可直接放置于/etc/rc.d/rc.local文件中

/etc/rc.d/rc.local在指定運行級別腳本后運行
可以根據情況,進行自定義修改

8、執行/bin/login程序,等待用戶登錄。

9、登錄

用戶輸入正確的用戶名和密碼后便可以以shell控制主機

下面來進行下簡單的總結:

內核級別的初始化流程:

POST --> bootsequence(BIOS) --> bootloader(MBR) --> kernel(ramdisk) --> rootfs(readonly) --> /sbin/init

(用戶空間的啟動流程):/sbin/init(/etc/inittab)

設置默認運行級別 --> 運行系統初始化腳本,完成系統初始化 --> 關閉對應級別下需要停止的服務,啟動對應級別下需要開啟的服務 --> 
設置登錄終端 --> [ 啟動圖形終端(如果設定的話) ]

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

(0)
sixijiesixijie
上一篇 2016-09-10 08:16
下一篇 2016-09-10 13:21

相關推薦

  • 馬哥教育網絡班20期 第8周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋:工作于數據鏈路層,實現多個lan之間數據的轉發,隔離沖突域,類似二層交換機。 集線器:工作于物理層,實現設備的接入,數據信號放大、中轉,共享信道。把一個端口接收的所有信號向所有端口分發出去 二層交換機:工作于數據鏈路層,可連接多個lan,根據幀的mac來轉發數據,隔離沖突域…

    Linux干貨 2016-08-15
  • Iptables入門到進階

    Iptables入門到進階 一、前言 Firewall(防火墻): 隔離工具;Packets Filter Firewall(包過濾防火墻);工作于主機或網絡的邊緣,對經由的報文根據預先定義的規則(匹配條件)進行檢測,對于能夠被規則匹配到的報文實行某預定義的處理機制的一套組件; 防火墻類型 從防火墻的實現形式來分的話,防火墻可以分為軟件防火墻和硬件防火墻 硬…

    Linux干貨 2017-02-11
  • shell腳本編程基礎(1)

    一.位置變量相關知識     1.位置變量定義:在腳本代碼中調用通過命令行傳遞給腳本的的參數     2.位置變量種類:              &…

    Linux干貨 2016-08-15
  • HAproxy實戰

    HAproxy實驗一 1、實驗要求: (1) 動靜分離discuzx,動靜都要基于負載均衡實現; (2) 進一步測試在haproxy和后端主機之間添加varnish緩存(見實驗二步驟); (3) 給出拓撲設計; (4) haproxy的設定要求: (a) 啟動stats; (b) 自定義403、502和503的錯誤頁; (c) 各組后端主機選擇合適的調度方法…

    Linux干貨 2016-11-15
  • NET25-第11周作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 第一步:他們需要實現協商好對稱加密算法,單向加密算法,公鑰加密算法,交換公鑰等。 第二步:B用戶想要將數據傳給A,首先需要使用單向加密算法取出數據的特征碼,并用自己的私鑰對這段特征碼進行加密(數字簽名),B用戶生成臨時對稱密鑰,并用對稱密鑰加密整段數據,B用戶使用 A用戶的公鑰加密一次性對稱密鑰,附加在整段數據…

    Linux干貨 2017-05-15
  • rpm詳解

    rpm詳解 rpm詳解 rpm使用方法 rpm起源 rpm是什么 rpm命名格式 rpm優缺點 rpm獲取注意 rpm命令使用 rpm起源  由于在linux中安裝應用程序需要源碼包編譯安裝,對于非專業人員而言難度太大,因而出現一種將源碼編譯好的二進制程序,庫文件,配置文件,幫助文件等打包成一個或多個特定格式的程序包,而管理這類包的工具之一,則稱為…

    Linux干貨 2016-12-23
欧美性久久久久