1. 程式人生 > >第七週 簡述linux作業系統啟動流程

第七週 簡述linux作業系統啟動流程

目錄

 

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

centos6啟動流程:

centos7啟動流程:

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

grub的版本:

grub的三個階段

與grub相關的配置檔案

grub的命令列介面

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


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

centos6啟動流程:

1.POST:通電自檢

2.BIOS:BOIS自檢,載入硬碟

3.讀取MBR,進行MBR引導

4.bootloader:grub引導選單

5.載入核心 Kernel(ramdisk)

6.啟動init程序,依據inittab檔案設定執行級別 (inittab用於定義預設執行級別)

7.init程序,執行rc.sysinit檔案

8.分別執行/etc/init/rcS.conf、/etc/init/rc.conf、/etc/init/start-ttys.confl來呼叫命令執行/etc/rc#.d/檔案裡面定義的是各種服務的啟動指令碼,可以ls檢視,S開頭代表開機啟動的服務,K開頭的是關機要執行的任務。#代表數字,一個數字代表一個執行級別,共7個執行級別,這裡就不多說了

9.執行/etc/rc.d/rc.local

10.執行/bin/login程式,等待使用者登入

centos7啟動流程:

1.POST:通電自檢

2.BIOS:BOIS自檢,載入硬碟

3.讀取MBR,進行MBR引導

4.bootloader:grub引導選單

5.載入核心和inintamfs模組

6.核心開始初始化,使用systemd來代替centos6以前的init程式

7.執行initrd.target

包括掛載/etc/fstab檔案中的系統,此時掛載後,就可以切換到根目錄了

8.從initramfs根檔案系統切換到磁碟根目錄centos7表面是有“執行級別”這個概念,實際上是為了相容以前的系統,每個所謂的“執行級別”都有對應的軟連線指向,預設的啟動級別時/etc/systemd/system/default.target,根據它的指向可以找到系統要進入哪個模式

模式:0 ==> runlevel0.target, poweroff.target

           1 ==> runlevel1.target, rescue.target

            2 ==> runlevel2.target, multi-user.target

            3 ==> runlevel3.target, multi-user.target

            4 ==> runlevel4.target, multi-user.target

           5 ==> runlevel5.target, graphical.target

           6 ==> runlevel6.target, reboot.target

9.systemd執行sysinit.target

10.systemd啟動multi-user.target下的本機與伺服器服務

11.systemd執行multi-user.target下的/etc/rc.d/rc.local

12.Systemd執行multi-user.target下的getty.target及登入服務

getty.target是啟動終端的systemd物件。如果到此步驟,系統沒有被指定啟動圖形桌面,到此就可以結束了,如果要啟動圖形介面,需要在此基礎上啟動桌面程式

13.systemd執行graphical需要的服務

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

grub的版本:

grub的版本分為:

  1. grub 0.X (grub legacy)
  2. grub 1.X (grub 2)

目前centos 5和centos 6使用的就是 grub legacy 版本 
centos 7使用的是 grub2 版本的啟動載入程式

grub的三個階段

  1. stage 1: 用於啟動Boot loader 來載入stage2的內容至記憶體中
  2. stage 1_5:用於識別核心和stage2所在分割槽的檔案系統格式型別,幫助引導stage2
  3. stage 2: 讀取 grub.conf 配置檔案,並實現引導功能的擴充套件

Linux系統中,與系統啟動相關的檔案均儲存在/boot目錄下.如grub vmlinuz initramfs等等

與grub相關的配置檔案

與grub相關的配置檔案包括:/etc/grub.conf/boot/grub/grub.conf 
/etc/grub.conf是指向/boot/grub/grub.conf的軟連線,grub程式在引導啟動時會讀取這個配置檔案,並按照這個檔案的配置引數引導啟動系統

檔案內容如下:

 

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS 6 (2.6.32-696.el6.x86_64)

root (hd0,0)

kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=2c1d3c99-493f-483b-9abf-c4c7171e4598 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

initrd /initramfs-2.6.32-696.el6.x86_64.img

defaule: 表示有多個grub引導選單時,選擇哪一個作為預設啟動引導選單, 
defaule=0:表示預設選擇第一個選項進行配置 
timeout: 表示選擇選單的時間,如果過了這個時間沒有選擇則表示使用預設選項 
splashimage: 指定引導選單中的背景圖片的路徑 
titile: 指定選項的名稱 
root: 表示kernel和initrd檔案所在的分割槽路徑,而不是”根分割槽”;其格式為:

root(hd#,#)  第一個 # 表示第幾塊硬碟,第二個 # 表示同一個硬碟上的分割槽,都是從0開始

kernel: 通常是用於指定要執行的核心檔案路徑,如:/vmlinuz-2.6.32-642.el6.x86_64;另外也可在其後設定相關的核心引數,如:ro表示只讀,root表示指定根分割槽所在路徑,關閉selinux等等; 
initrd: 為核心執行指定其可用的ramdisk檔案,其版本須和核心版本一致         

grub的命令列介面

在選單頁面按c即可進入命令列介面,在此命令列介面,我們可以配置相關的grub設定. 
grub常用的指令有:

  1. help:檢視命令幫助;

  2. root (DEVICE):指定系統和核心檔案所在的分割槽,如root(hd0,0)。

  3. find (hd0,0) /path/to/file:用於查詢對應分割槽下的檔案。常用於當不確認核心檔案在哪個分割槽時,可使用此命令確認檔案所在路徑;支援tab補全;

  4. kernel /path/to/kernel_file:用於指定要執行的核心檔案。

  5. initrd /path/to/kernel_file:指定initrd檔案;

  6. boot:以當前配置好的grub配置啟動系統;

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

光碟引導映象製作過程
  (1) 準備工作目錄,例如這裡使用/tmp/cdrom;
   #mkdir /tmp/cdrom
  (2) 掛載系統發行光碟,複製光碟所有內容至/tmp/cdrom;
  #mount -r -t iso9660 /dev/cdrom /media/cdrom
  #cp -r /media/cdrom/. /tmp/cdrom
  #chmod u+w isolinux/* 修改檔案許可權
  (3) 複製製作好的kickstart檔案ks.cfg至/tmp/cdrom中;
  #cp /root/ks.cfg /tmp/cdrom
  (4) 如果需要,可以編輯/tmp/cdrom/isolinux/isolinux.cfg 
    在label linux後的append指令後附加ks=cdrom:/ks.cfg,從而實現自動呼叫光碟上提供的ks檔案;
  (5) 建立iso映象:        
   # mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.6 X86_64 boot disk" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso cdrom/
  (6)安裝

選擇光碟啟動,自動化安裝