1. 程式人生 > >Linux學習(第七週)

Linux學習(第七週)

第七週學習內容:CentOS的系統啟動流程

第七週作業:

1、簡述linux作業系統啟動流程。

      系統啟動流程可簡要描述為:通電--POST自檢--Boot Sequence--Boot Loader--核心--rootfs--init程序。從開機到核心啟動為止是核心啟動部分,隨後是使用者啟動部分。站在硬碟的角度來說,核心實在某個分割槽中存放著的,叫做啟動分割槽。此分割槽也必定是掛載在根檔案系統之下的,在核心還沒有啟動之前是無法找到根的,所以另有程式在核心啟動之前去完成此任務。驅動程式存放在硬碟上,而沒有驅動程式核心又無法認出硬碟,所以在記憶體中還有個臨時的根檔案系統叫ramdisk。

      (1)POST自檢:通過自動載入主機板ROM中的程式碼,檢查五大部件是否都存在,再通過ROM中的CMOS,CMOS中的BIOS找到Boot Sequence引導次序程式。

      (2)Boot Sequence:根據設定好的次序依次查詢各引導裝置,第一個有Boot Loader的裝置即為本次啟動的裝置。

      (3)Boot Loader:安裝在硬碟、光碟或U盤之上,windows系統的叫ntloader,而linux系統的叫grub,主要功能室提供一個選單,允許使用者選擇想要啟動的核心版本,然後把使用者選擇的核心載入到記憶體中,解壓、展開,最終把系統控制權交給核心完成使命。grub存放在MBR扇區,也就是第一扇區,共512位元組,其中446位元組用於存放載入器,剩餘的64位元組存放分割槽表,最後2個位元組叫魔數,表示載入器是否可用,55AA表示可用。由於MBR扇區太小,grub程式一般會分成兩段,一段位於MBR,一段位於硬碟某分割槽/boot/grub目錄下,通過先載入第一段,在通過引導找到第二段。

      (4)核心:這一階段主要完成自身初始化,探測可識別到的所有硬體裝置,載入ramdisk中的硬體驅動,以只讀的方式掛載更檔案系統並切換至該根目錄,再啟動第一個程序init。

      (5)init程序:作為系統第一個啟動的程序,CentOS5叫sysv init;CentOS6叫upstart;CentOS7叫systemd。

2、簡述grub啟動載入程式配置及命令列介面詳解。

      grub執行分為3個階段:1階段儲存在mbr扇區中,1.5階段儲存在mbr之後的扇區,為了讓1階段的bootloader能識別2階段所在分割槽上的檔案系統,2階段存放在磁碟分割槽上,真正提供了核心選擇介面。具體位置/boot/grub,配置檔案/boot/grub/grub.conf,還有個指向此配置檔案的符號連結檔案/etc/grub.conf,2階段和核心通常都放置在一個基本磁碟分割槽,不支援LVM這種邏輯卷。


      grub的功用:(1)提供選單,讓使用者選擇想載入的核心;(2)載入使用者選擇的核心,過程可被隱藏;(3)為選單提供保護機制,可以為編輯選單提供認證,也可以為載入核心提供認證。

      grub命令模式:在grub的主介面,選擇核心時按“c”即可進入,help可以獲取幫助列表,help+命令可以獲取該命令的詳細幫助資訊。主要會用到的幾條命令:find:查詢;kernel:設定本次啟動時用到的核心檔案;initrd:設定為選定的核心提供額外檔案的ramdisk;boot:引導啟動選定的核心。

      image.png

      gurb的編輯模式:在grub的主介面,選擇核心時按“e”即可進入,一般有3條已經預配好的命令,分別為root (hd#,#)指定哪一個裝置為根裝置,也就是核心和grub所在的分割槽,兩個“#”表示第幾塊硬碟的第幾個分割槽,從0開始;kernel /vmlinuz ......指明核心檔案所在位置,也就是本次啟動是要用到的核心檔案;initrd /initramfs......指明微核心提供額外檔案的ramdisk所在位置。想要修改這3條配置可以通過修改配置檔案/etc/grub.conf,除了可以改這三條以外,還可以新增部分配置選項:title:grub選擇介面顯示在最外面的選項;default:設定預設啟動的選單項;timeout:制定選單項等待選擇的時長;splashimage:指明選單背景圖片檔案路徑;hiddenmenu:是否隱藏選單;password:認證密碼,載入titile前表示想進入編輯模式要輸密碼,載入title後表示想選擇某一核心要輸密碼。

      image.png

3、實現kickstart檔案製作與光碟映象製作。

      anaconda作為Linux系統的安裝程式,可以幫你把光碟中的grub,initrd,kernel等安裝到硬碟中去,提供了兩種配置方式,一種是最常用到的互動式;一種是讀取配置檔案自動完成配置,而這個配置檔案就是kickstart。

      kickstart配置檔案分為三段,命令段、程式包段和指令碼段。命令段:指定各種安裝前配置選項,如鍵盤型別等;程式包段:指明要安裝的程式包以及包組,還可以標記出不要安裝的程式包;指令碼段:分為安裝前執行指令碼和安裝後執行指令碼,如可以定義安裝完畢後自動建立十個使用者。自己定義kickstart檔案是非常繁瑣的一個步驟,所以有一個圖形化工具替你簡化了kickstart檔案的配置,下載安裝system-config-kickstart程式包,直接執行,跳出來圖形介面,選選選點選完成kickstart檔案就製作好了。

      image.png

      image.png

      image.png

      kickstart檔案製作完畢後將其上傳到ftp或web伺服器中,在系統安裝時進入boot提示符介面,鍵入ip=X.X.X.X;netmask=X.X.X.X;ks=http :  //X.X.X.X/CentOS7/X.cfg,接著後面就全自動了。  

      將bootloader、Kernel、initrd及kickstart檔案製作成光碟映象,以實現本地光碟映象引導安裝CentOS系統,其中anaconda應用程式位於initrd提供的rootfs中,而後續安裝用到的程式包來自阿里雲映象站點(mirrors.aliyun.com),剛才在製作kickstart檔案時已經手動指定。

      製作步驟:(1)建立目錄:mkdir 

      image.png

      (2)複製光碟的isolinux目錄和剛才製作的kickstart檔案到該目錄下:CP

      image.png

      (3)修改複製過來檔案的許可權:chmod

      image.png

      (4)建立光碟映象:mkisofs。

      image.png