N25第七周學習總結(CentOS 7 系統啟動流程)

CentOs系統啟動流程

大綱

1、    什么是CentOs系統啟動流程

2、    為什么要了解CentOS系統啟動流程

3、    了解CentOS系統啟動流程對我們有什么幫助

4、    CentOs系統啟動流程詳解

 

正題

1、    什么是CentOs系統啟動流程

    CentOs系統啟動流程是CentOs主機從開機加電自檢到整個系統(包括應用程序)都處于一個正常工作的狀態;

    整個流程從宏觀可分為硬件與系統兩個層面,而系統又可以分為內核空間和用戶空間的啟動,每一塊都是按照某些規則自動運行。

 

2、    為什么要了解CentOS系統啟動流程

因為作為一名Linux技術人員,了解CentOs啟動流程是必要的,而且通過學習CentOs系統啟動流程可以對CentOs工作原理有更深入的了解。

 

3、    了解CentOS系統啟動流程對我們有什么幫助

在實際工作中,CentOs主機難免會出現無法啟動或啟動異常,而在了解了CentOs系統啟動流程后,可以針對問題對癥下藥,而且通過學習CentOs系統啟動流程后,可掌握部分的Linux工作機制,為以后的解決Linux故障打下扎實的基礎。

 

4、    CentOs系統啟動流程詳解

在講解CentOs系統啟動流程前,先講一下Linux系統的組成與運行中的系統環境分層,有助于掌握啟動流程的原理。

 

Linux系統的組成:

     內核  +  根文件系統

 

     內核可實現以下功能:

                     進程管理、內存管理、網絡協議棧、文件系統、安全功能、驅動程序。

                      內核是linux的整個核心,確切的說內核即是Linux,其他程序都是通過調度內核來實現其功能。

 

              運行中的系統環境分層:

                  內核空間 +  用戶空間

                 

內核空間: 由內核代碼組成,擁有系統級別權限,可直接更改硬件;

用戶空間: 由各種應用程序組成,通過調用內核來完成各種復雜的任務。

 

CentOs系統的啟動流程:

1、 POST:加電自檢

它是由主板中的BIOS完成的,主要功用是檢查主機的各個組件是否完好,例如:cpu、內存、硬盤、網卡、光驅等。

 

2、 Boot Sequence:啟動順序

這一步主要是根據Bios中的設置來按序查找各引導設備,第一個有引導程序的設備即為本次啟動要用到的設備,絕大部分為硬盤啟動;

 

    Bootloader:引導加載器,是一個微小的程序,眾所周知MBR引導記錄大小為512字節,其中前446字節就是Bootloader,主要用來引導用戶選擇要啟動的系統或不同的內核版本;把用戶選定的內核裝載到RAM中的特定空間中,解壓、展開,而后把系統控制權移交到內核;

      GRUB:是一個典型的BootLoader程序,因為MBR引導記錄限制,所以GRUB分為兩部分:

            1、在MBR引導記錄中,大小為446字節,主要功用是引導啟動存儲在磁盤上的GRUB主體文件;

            2partition/boot/grub ,此為GRUB的主體,由此來引導用戶。

 

3、 Kernel:加載內核

當用戶選定啟動的內核或系統,由Bootloader將內核加載到ram中特定空間中,解壓、展開,而后把系統控制權移交到內核時,Kernel會開始自身初始化:

   探測可識別到的硬件設備;

   加載硬件啟動程序;(有可能會借助于ramdisk加載驅動)

      注:(Kernel在內存中加載時,為了模擬系統環境,會生成一個ramdisk文件,來進行下一步操作,等到加載到真正的根文件系統是,就會推出ramdisk,切換到真正的根文件系統中去。)

   以只讀方式加載根文件系統;(會涉及到根切換)

   運行用戶空間的第一個應用程序:/sbin/init

 

   init程序類型:

      centos5 :sysVinit

         配置文件: /etc/inittab

 

      centos6 :Upstart

         配置文件:/etc/inittab
被架空,主要為了兼容5;

                     /etc/init/*.conf 主要

 

Centos 7 Systemd

               配置文件:/usr/lib/systemd/system/,   /etc/systemd/system

 

ramdisk(內存上臨時虛擬的系統)

 

                  Linux內核的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問;

                                ramdisk(虛擬磁盤,雙緩沖,雙緩存)–>ramfs(虛擬文件系統)

                        

                                centos5initrd

                                              工具程序:mkinitrd

                                centos6,7initramfs

                                              工具程序:dracut,mkinitrd

 

系統初始化流程(內核級別):post(加電自檢)–>BootSequence(啟動順序選擇BIOS中實現)–>bootloder(引導加載器,MBR中實現)–>Kernel(加載內核,會生成ramdisk–>rootfs(以readonly方式加載根文件系統)–>/sbin/init(運行第一個應用程序(相當于小管家))

 

至此,內核空間就已經啟動完畢,接下來講解用戶空間的啟動流程:

 

   /sbin/init:

      是除了內核外擁有最高權限與級別的應用程序,因為所有的應用程序都是由init創建而來,相當于都是init的子進程。

 

   1、選擇默認運行級別

在運行init后,他會根據配置文件定義的運行級別而啟動

  /etc/inittab配置文件為例:(每行定義一種action以及與之對應的process

              idrunlevelsactionprocess

            id一個任務的標識符

            runlevels在哪些級別啟動此任務;#,###,也可以為空,表示所有級別;

            action在什么條件下啟動此任務;

            process任務;

 

        action

            wait等待切換至此任務所在的級別執行一次;

            respawn一旦此任務終止時,就自動重新啟動之;

            initdefault設定默認允許級別;此時process省略;

            sysinit設定系統初始化方式,此處一般為指定/etc/rc.d/rc.sysinit腳本;

               

                示例:

                    id:5:initdefault
默認以圖形化界面啟動

                    si::sysinit:/etc/rc.d/rc.sysinit  所有級別都以此腳本完成系統初始化方式;

               

   2、運行系統初始化腳本,完成系統初始化

      根據上一步的指定的rc.sysinit系統初始化腳本,完成以下操作:

         設置主機名;

         設置歡迎信息;

         激活udevSELinux;

         掛載/etc/
fstab
文件中定義的所有文件系統;

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

         設置系統時鐘;

         根據/etc/sysctl.conf文件的設置,來設定內核參數;

         激活lvm及軟raid設備;

         激活swap設備;

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

         清理操作

 

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

根據init配置文件:

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

           

意味著去啟動或關閉/etc/rc.d/rcX.d/目錄下的服務腳本所控制服務;

                K*要停止的服務;K##*,優先級,數字越小,越是優先關閉;依賴的服務先關閉,而后關閉被依賴的;

                S*要啟動的服務;S##*,優先級,數字越小,越是優先啟動;被依賴的的服務先啟動,而依賴的訪問后啟動;

                   

                  注:rcX.d 中的X代表默認啟動級別,如果之前定義的是5(圖形界面),他會在rc.d里查找rc5.d里的服務來啟動關閉;

rc腳本:接受一個運行級別為參數; 不適用os7

 

4、 設置登陸終端

其實到上一步時服務器已經完成了基本的啟動,這一步主要是開啟一個登陸終端,然后加載環境變量、和別名的配置文件,如果是圖形界面的話,會啟動圖形界面,然后加載圖形界面需要的各種插件。

 

 

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

  設置默認允許級別–>允許系統初始化腳本,完成系統初始化–>關閉對應級別下要停止的服務,啟動對應級別下需要開啟的服務–>設置登陸終端–>[啟動圖形終端]

 

 

最后是總結CentOS系統啟動流程:

  post(加電自檢–>  BootSequence(啟動順序選擇BIOS中實現)–> bootloder(引導加載器,MBR中實現  –>  Kernel(加載內核,會生成ramdisk  –>  rootfs(以readonly方式加載根文件系統)–>  /sbin/init(運行第一個應用程序(相當于小管家)–>  設置默認允許級別  –>  允許系統初始化腳本,完成系統初始化  –>  關閉對應級別下要停止的服務啟動對應級別下需要開啟的服務 –>  設置登陸終端 –>  [啟動圖形終端]

 

原創文章,作者:N25_韓奇洋,如若轉載,請注明出處:http://www.www58058.com/69177

(3)
N25_韓奇洋N25_韓奇洋
上一篇 2017-02-20
下一篇 2017-02-20

相關推薦

  • find命令使用練習

    1、  查找/var目錄下屬主為root,且屬組為mail的所有文件   2、  查找/var目錄下不屬于root、lp、gdm的所有文件   3、  查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件   4、  查找當前系統上沒有屬主或屬組,且最…

    Linux干貨 2016-08-15
  • centos 7 修改sshd服務默認端口號

    由于最近sshd服務默認端口號22被匿名進行試探性的進行登入,為防止匿名用戶再次進行試探性的登入,將sshd服務的默認端口號進行修改。 環境:centos 7.3  xshell 思路:先將sshd的被指文件進行修改,把sshd服務的默認端口號修改為所需要的端口號,然后重啟sshd服務,發現重啟報錯。找其原因是應為selinux不允許自定義sshd…

    Linux干貨 2017-04-06
  • 馬哥教育網絡班21期-第五周課程練習

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; # grep -E "^[[::space]]\+.*" /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行;…

    Linux干貨 2016-08-08
  • 第七周作業

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; ]#mke2fs -t ext4 -b 2048 -L MYDATA -m 2 O acl /dev/sda1 (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件…

    Linux干貨 2017-03-11
  • bash腳本編程練習:判斷、循環

      1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash # declare -i sumlogin=0 declare -i sumnologin=0 for&nbs…

    Linux干貨 2016-11-22
  • ?Linux基礎知識之screen命令詳解

    該博文以CentOS6.8_x86_64系統為基礎,Xshell5遠程登錄CentOS6.8系統,以root身份登錄系統,以Xshell5發起screen幫助,用系統命令行界面去連接。 screen命令:         打開新的screen: screen -S [SESSION]   (打開一個名叫hel…

    Linux干貨 2016-07-29

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-30 14:05

    非常認真詳細的總結,看好你,再接再勵。

欧美性久久久久