CentOS五、六、7啓動具體流程

CentOS五、6系統的啓動流程
基於Intel X86架構平臺的系統啓動流程:
1.POST:Power-On Self Testing,加電自檢;
CMOS:在這裏面有一個EPROM,可擦寫可編程的只讀存儲器;在這裏面保存了一小段程序叫作BIOS程序,全稱爲Basic Input Output System,基本輸入輸出系統;linux

主要目的:對全部的能檢測到的硬件硬件進行功能測試,保證硬件能夠正常工做;保證可以正確的使用各類硬件;
    例如:內存條沒插好或者未識別,BIOS就會一直報警,也就是蜂鳴器會一直嘟嘟的響,原來鍵盤沒插好也會報警,如今不會了都是隨接隨用的USB接口的,像光驅、硬盤、軟盤未被檢測到是不會報警的;

    1]自檢完成各硬件沒有問題之後後,接下來就會按照BIOS當中定義好的啓動順序來完成系統的啓動引導;

2.BIOS程序中,包含有BootSequence(啓動順序) 也就是你的計算機究竟是從光盤引導啓動、仍是從硬盤引導啓動,仍是...編程

主要目的:決定到底從何種設備上加載操做系統內核;一般可選的設備包括:光驅,硬盤,可移動設備(U盤),網絡接口;

主要方式:按照給定的順序,依次查找各個設備,第一個被找出有引導程序(Bootloader)的設備即爲本次啓動要用到的設備;

  Bootloader:引導程序,引導加載器;有一部分保存在MBR當中
    對於Linux來講通常有有兩種引導加載工具:
     1)LILO:Linux Loader;有缺陷:不支持大硬盤,超過1024個柱面的磁盤都不支持;優勢:引導速度很快
     2)GRUB:GRand Uniform Bootloader,全球統一引導加載器;
     先裝Windows再裝linux照樣可使用grub引導啓動,實現兩種系統共存,Windows 8之後就不行了;
      CentOS 6-:
      GRUB 0.x:Legacy GRUB
      CentOS 7+:
      GRUB 1.x:grub2

      GRUB提供的功能:
       1) 爲用戶提供了一個可供選擇的菜單,菜單中以列表的方式列舉了各個能夠引導啓動的操做系統內核;
       2) 能夠將用戶選定的內核核心文件裝載到RAM中,並予以解壓縮,展開以後,將系統的控制權移交給內核;
       3) 能夠提供交互式的命令行接口;
       4) 經過私密口令來保證菜單和內核啓動屬性的安全性;

  2]找到引導程序後,引導程序開始負責將內核核心文件解壓縮展開而且移交管理權,接下來就由內核掌管之後的工做了

3.內核被加載後:
進行自身的初始化:
1) 探測可以識別到的全部的硬件設備;
2) 加載硬件的驅動程序,有可能要藉助於ramdisk/ramfs加載驅動程序;
3) 以只讀的方式掛載根文件系統;
4) 在根文件系統中查找並運行第一個用戶空間中的應用程序:/sbin/init安全

3]內核的加載完成,文件系統的使用完成,而且找到了真正的init程序的位置,而後管理權移交給init

4.Init:
CentOS 5中的init程序:
SysV Init
配置文件:/etc/inintab ※※※很是重要網絡

CentOS 6中的init程序:
  Upstart Init
  配置文件:/etc/inittab如今只保存了默認的運行級別是什麼樣的這一行,幾乎被廢棄;
           更多的功能會被設置在/etc/init/*.conf

CentOS 7:
  Systemd基本上就與init不要緊了,借鑑了蘋果的MACOS引導加載方式
  配置文件:/usr/lib/systemd/system/*

CentOS7系統的啓動流程
1.內核啓動流程:
POST(BIOS) --> BootSequence(BIOS) --> Bootloader(GRUB) --> vmlinuz(initrd|initramfs) --> rootfs(ro) --> /sbin/systemd架構

Init程序:systemd,與經典的init程序徹底不一樣;

systemd的配置文件:
 /etc/systemd/system/*
 /usr/lib/systemd/system/*
  其中保存的文件,統稱爲「Systemd的Unit file」

  注:/etc/inittab文件被完全廢棄;

systemd在設計分隔上徹底兼容了SysV風格的Init程序及腳本;所以,service類的命令在CentOS中依然能夠被使用,但其結果是執行命令時重定向到systemctl命令上;建議使用CentOS7中systemd的服務管理命令:systemctl,來管理和控制系統服務的關閉和啓動

systemctl命令:
systemctl - Control the systemd system and service manageride

systemctl [OPTIONS...] COMMAND [NAME...]

其中:
COMMAND爲子命令了,systemd實現的功能的體現;
NAME:保存了/usr/lib/systemd/system目錄下的UnitFile的文件名:能夠寫完整的UnitFile名稱,能夠省略後綴名稱,一旦省略後綴名,默認爲service後綴;工具

用法:
使用systemctl系統管理服務:
systemctl {start|stop|restart|reload|status} name[.service]測試

設置CentOS 7的默認運行級別
   systemctl ste-default {multi-user.target|graphical.target}

 查看CentOS 7的當前運行級別
  systemctl get-default

systemd程序引導啓動系統的特色:
1.依靠Unit File來啓動全部的服務及功能;
2.每次系統啓動,systemd只啓動自身,其他的程序若是不須要,都不啓動;操作系統

小結:
CentOS 7的用戶空間啓動流程:
systemd --> unit file --> 完成啓動 命令行

相關文章
相關標籤/搜索