第七周學習總結–系統啟動流程

寫在前面

作為一個理工科的你,我相信你一定給自己或者給別人裝過windows操作系統,作為windows操作系統都圖形化了,因此我們可能很難去了解中間都發生了什么。比如使用U盤安裝的時候,網上一大堆某某某U盤制作系統工具,按照網上的教程,制作完成以后,就可以在要裝系統的電腦上點擊電源鍵狂按F12(不同的電腦可能不同)進入BIOS設置了,然后就等著使用了。作為學習另一個使用命令行的操作系統,我們有必要了解一下它的啟動工作流程。

細說流程

Linux系統的啟動流程主要分為以下幾個主要步驟,POST –> BootSequence(BIOS) –> BootLoader(MBR)–> Kernel(ramdisk、ramfs)–> rootfs(readonly)–> /sbin/init。

  • POST

按下主機電源鍵,主機會首先加載BIOS信息,主要負責檢測系統外圍關鍵設備(如:CPU、內存、顯卡、I/O、鍵盤鼠標等)是否正常。如果硬件設備因為各自原因自檢沒有通過,則不會進行下一步啟動,如果硬件設備沒有問題,則轉交給下一步執行啟動。

  • BootSequence

按次序查找BIOS中各引導設備,第一個有引導程序的設備即為本次啟動要用到的設備。

  • BootLoader

BootLoader稱為引導加載器,位于磁盤中的MBR中,每個磁盤都有一個MBR,MBR是磁盤上的第一個扇區又叫做主引導扇區,是主機開機后訪問磁盤時首先要讀取的扇區,MBR扇區共有512個字節,其中的446個字節即存放bootloader,64個字節存放分區表,剩余的2字節存放校驗信息。

在Linux中,BootLoader的具體實現是由grub程序實現的。grub分為三個階段,第一個階段存放于MBR中,第二個階段也稱為stage1.5階段,存放于MBR之后的扇區,主要為第三階段提供文件系統驅動。第三階段也稱為stage2階段,存放于一個基本的磁盤分區上,主要是提供一個菜單,允許用戶選擇要啟動的系統或不同的內核版本,把用戶選定的內核裝載到RAM(內存)中特點空間中,解壓、展開,而后把整個系統控制權移交給內核,即完成把內核加載到內存空間中。

grub也有自己的配置文件/boot/grub/grub.conf,啟動菜單就是通過讀取此文件進行信息顯示,文件大體如下圖所示:

701

其中各配置參數:

  1. default=#: 設定默認啟動的菜單項順序;菜單項(title)編號從0開始;
  2. timeout=#:指定菜單項等待選項選擇的超時時長;
  3. splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜單背景圖片文件路徑;
  4. hiddenmenu:隱藏菜單;
  5. title TITLE:定義菜單項“標題”, 可出現多次;
  6. root (hd#,#):grub查找stage2及kernel文件所在設備分區;為grub的“根”;
  7. kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:啟動的內核;
  8. initrd /PATH/TO/INITRAMFS_FILE: 內核匹配的ramfs文件;

此外還能對grub菜單及內核啟動進行認證處理,在上面配置文件中加入password [–md5] STRING項即可,加在title之前表示需要對編輯菜單進行認證,加在title之后表示對內核進行認證,需要認證以后才能啟動內核。

702

grub還有自己的命令行接口,啟動系統時,敲擊任意鍵進入grub命令行接口模式,在grub界面可以按照提示輸入e、b、c進行相應的編輯,在對應的title輸入c即可進入命令行模式,有如下常用選項:

  1. help:獲取幫助信息;
  2. find :文件查找,通常用于定位文件,find(hd#,#);
  3. root (hd#,#):把哪一個磁盤分區設置為根;
  4. kernel:設定本次啟動時用到的內核文件;
  5. initrd:設定為選定的內核提供額外文件的ramdisk;

所以也可以通過手動指定來啟動內核,在grub界面通過上述介紹的參數,依次輸入:

  1. root (hd#,#);
  2. kernel /vmlinuz-VERSION-RELEASE ?ro ?root=/dev/DEVICE;
  3. initrd /initramfs-VERSION-RELEASE.img;
  4. boot;

來通過讀取新指定的各參數啟動內核。

703

  • Kernel

在kernal階段,主要是通過前面步驟加載到的內核完成自身的初始化:

  1. 探測可識別到的所有硬件設備;
  2. 加載硬件驅動程序(有可能會借助于ramdisk加載驅動);
  3. 以只讀方式掛載根文件系統;
  4. 運行用戶空間的第一個應用程序:/sbin/init
  • rootfs

根切換,因為在內核加載階段,系統有可能會借助ramdisk提供的一個簡化版的根文件系統來提供驅動,完成后續步驟后ramdisk會加載真正的根文件系統,并把控制權移交給真正的根文件系統。

  • /sbin/init

內核被加載后,第一個運行的程序便是/sbin/init,該文件會讀取/etc/inittab文件,設定Linux的運行級別并依據此來進行后續的初始化工作。

寫在最后

今天的分享就到這里了,里面涉及到了Linux啟動的一些基本流程,還特別提到了grub的兩種實現方式,通過配置文件新增內核信息方式和grub命令行接口方式進行配置,如果我們熟知了Linux系統啟動每步驟都需要什么文件,完成什么內容以后,我覺得配置都是很輕松的事情。實在沒轍的話,不妨試試強大的搜索引擎,這也是學習的很好方法。

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91102

(0)
蟲草君蟲草君
上一篇 2018-01-13 15:48
下一篇 2018-01-14 14:08

相關推薦

  • linux 目錄結構

    該文章主要來自于網絡資料進行整理 目錄結構參考地址: http://www.iteye.com/topic/1125162 http://yangrong.blog.51cto.com/6945369/1288072 http://itlab.idcquan.com/linux/administer/939529_1.html http://itlab.id…

    系統運維 2015-12-19
  • 計算機基礎與Linux初識

    一、 計算機的組成及其功能。      計算機五大組成部件:運算器、控制器、存儲器、輸入設備、輸出設備。其中CPU主要由運算器及控制器組成。      1、運算器:進行算數運算、邏輯運算,對數據進行加工處理。      2、控制器…

    2017-07-02
  • 網絡屬性配置(二)

    本文接上篇。。。 ip address -protocol address management. ip address add -add new protocol address   ip addr add IFADDR   label NAME :為額外添加的地址指明接口別名    [broadcast ADDRE…

    Linux干貨 2017-01-02
  • 文本編輯sed

    *** sed:Stream EDitor  流編輯器 一次處理一行內容 sed [option]…  'script'  inputfile…常用選項:     -n∶使用安靜(silent)模式。在一般 sed 的用法中, &nbs…

    Linux干貨 2016-08-10
  • Linux發展及OS基礎

    開源協定:          GPL  LGPL,Apache,BSD          BSD:      …

    Linux干貨 2016-08-08
  • linux系統初識

          在完成centos7安裝后,使用root登陸,查看了解當前根目錄。由于root權限高,建議新增用戶。執行useradd name命令。登陸后查看是否當前用戶用whoami命令。     使用df命令了解系統分區情況以及顯示內存free命令。   &…

    2017-07-16
欧美性久久久久