第七週 簡述linux作業系統啟動流程
目錄
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的版本分為:
- grub 0.X (grub legacy)
- grub 1.X (grub 2)
目前centos 5和centos 6使用的就是 grub legacy 版本
centos 7使用的是 grub2 版本的啟動載入程式
grub的三個階段
- stage 1: 用於啟動Boot loader 來載入stage2的內容至記憶體中
- stage 1_5:用於識別核心和stage2所在分割槽的檔案系統格式型別,幫助引導stage2
- 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常用的指令有:
-
help:檢視命令幫助;
-
root (DEVICE):指定系統和核心檔案所在的分割槽,如root(hd0,0)。
-
find (hd0,0) /path/to/file:用於查詢對應分割槽下的檔案。常用於當不確認核心檔案在哪個分割槽時,可使用此命令確認檔案所在路徑;支援tab補全;
-
kernel /path/to/kernel_file:用於指定要執行的核心檔案。
-
initrd /path/to/kernel_file:指定initrd檔案;
- 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)安裝
選擇光碟啟動,自動化安裝