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/45395

(0)
sixijiesixijie
上一篇 2016-09-11 13:19
下一篇 2016-09-11 15:32

相關推薦

  • Liunx權限的管理

    一、權限 獲取某種資源的能力。對于Liunx而言,一切皆文件。所以,對于Liunx的權限定義,也就是定義文件被不同用戶訪問能力的過程。 權限分為三種:r、w、x 文件 r:查看文件內容 w:修改文件內容 x:可以將文件啟動運行 目錄 r:可以使用ls命令查看目錄中的文件名 w:可以在目錄中創建或刪除文件(能否刪除文件,取決于用戶對目錄的寫權限 x:可以cd到…

    Linux干貨 2015-04-03
  • linux學習第二天知識點-linux入門及使用幫助

    一 基礎命令 1. #ifconfig     顯示或配置網卡的命令,英文全稱是network interfaces configuring。     配置網卡的IP地址語法例:ifconfig eth0 192.168.0.1 netmask 255.255.255.0 2.&…

    Linux干貨 2016-07-26
  • N25期–第七周作業

    1、創建一個10G分區,并格式為ext4文件系統; fdisk /dev/sda n p 2 enter +10G w partx -a /dev/sda (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; mke2fs -t ext4 -…

    Linux干貨 2017-02-20
  • 多網卡實驗

    1、虛擬網卡實現一個網卡多個地址     網卡別名多用于虛擬機,可理解為一塊網卡MAC地址對應多個IP地址,這樣比較方便管理,在不需要通過添加網卡的形式就可以使用到新的IP 在此圖可看到     eth1     eth1:100   &n…

    Linux干貨 2016-09-06
  • LVS詳解

    概述     LVS是工作在4層的負載均衡調度器,可根據請求報文的目標IP和目標協議及端口,根據指定的調度算法,將請求調度轉發至某RealServer,本篇就針對LVS的原理,配置和使用進行簡單介紹,具體包含:     1、LVS的四種類型的介紹   &nbs…

    Linux干貨 2016-10-27
  • 初學Linux之文件查找和壓縮

    使用locate命令 ,使用find命令 ,壓縮和解壓縮工具

    2018-01-13

評論列表(1條)

  • 1613827154
    1613827154 2016-09-13 01:44

    總結的好清楚 學習了

欧美性久久久久