簡述grub啟動載入程式和製作kickstart檔案

weixin_33968104發表於2018-11-12

1、簡述linux作業系統啟動流程
2、簡述grub啟動載入程式配置及命令列介面詳解
3、實現kickstart檔案製作與光碟映象製作

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

  • 啟動流程:
  • BIOS上電自檢(POST)
  • 引導載入程式bootloader(MBR)
  • 核心初始化(ramdisk技術)
  • 根切換
  • 啟動系統第一個程式

在按下電源鍵後電腦開始執行BIOS(基本輸入輸出系統)的POST(上電自檢)過程,它將找到裝置的引導扇區,幷包含有效記錄的第一個引導扇區(MBR)裝載入記憶體,並且控制權也將轉移到此段程式碼。根據MBR中的資訊找到磁碟上的kernel檔案和initrd檔案,如果bootloader是grub2那將繼續載入隨後扇區中的1.5階段程式碼其主要功能是執行存放階段2檔案的/boot檔案系統的驅動程式,並將載入相關的驅動程式。階段2的grub檔案都存放於/boot/grub2目錄下,在這個時候核心已經被載入到記憶體中,如果是ramdisk則展開一個偽根檔案系統,藉助這個來載入相關的模組。然後把真正的根掛載上來,將系統控制權移交給核心,並做根切換,然後核心啟動第一個程式init或者systemd。
是所有程式的父程式,它將設定預設的執行級別,執行系統初始化指令碼,並關閉或啟動系統對應級別下的服務,啟動終端。

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

grub的三個階段

stage 1: 用於啟動Boot loader 來載入stage2的內容至記憶體中
stage 1_5:用於識別和載入核心和stage2所在分割槽的檔案系統的相關驅動程式,引導stage2
stage 2: 讀取 grub.conf 配置檔案,並真正開始載入程式

grub的配置檔案

grub程式在引導啟動時會按照檔案的配置引數去引導啟動系統


13920922-cc3aae0f50ff0d60.png
CentOs6的grub配置檔案位置

檔案的內容如下:

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
password --md5 $1$CUmM50$x8G4awdSAPT4SZjvWSE0/0
title CentOS 6 (2.6.32-642.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg_centos6-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_centos6/lv_swap crashkernel=auto LANG=zh_CN.UTF-8
rd_LVM_LV=vg_centos6/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-642.el6.x86_64.img

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

root (hd0,0) 第一個數字表示第幾塊硬碟,第二個數字表示硬碟上的第幾個分割槽,都是從零開始

kernel:指定要執行的核心檔案路徑,後面可以加引數,根掛載的目錄,以何種方式去掛載,lvm等的啟用,語言的設定,鍵盤等外設的設定
initrd:為核心執行指定的ramdisk檔案,版本必須與核心保持一致

grub的命令列介面

在選單頁面按c即可進入命令列介面,我們可以配置相關的grub設定,等同於在配置檔案中做出的設定常用的指令有:

help:檢視命令幫助;
root ():指定ramdisk和核心檔案所在的分割槽,如root(hd0,0)。
find (hd0,0) /path/to/file:用於查詢對應分割槽下的檔案kernel /path/to/kernel_file:用於指定要執行的kernel檔案。
initrd /path/to/ramdisk_file:指定ramdisk檔案;
boot:以當前配置好的grub配置啟動系統;

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

Kickstart簡介

kickstart利用anaconda工具實現自動化安裝,通過生成的的配置檔案,伺服器可以實現安裝的全自動化不需要人機互動,該檔案裡包含anconda在安裝系統以及安裝後的一些必要的配置資訊。

kickstart檔案的位置:

ks=
DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
Hard Drive: ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
HTTP Server: ks=http://server
FTP Server: ks=http://server
HTTPS Server: ks=http://server

如果時使用光碟安裝,則則需要將配置檔案isolinux/isolinux.cfg的apped後面新增ks=cdrom:/ks.cfg(需要將ks檔案放在光碟的根目錄下)

label linux
  menu label ^Install CentOS 7 thsi is mytest
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 ks=cdrom://ks.cfg                                                                                   

kickstart檔案的格式

install
cdrom
lang zh_CN.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto static --ip 192.168.31.200 --netmask 255.255.255.0 --gateway 192.168.31.1 --noipv6 --nameserver 114.114.114.114 --hostname Centos6.8
rootpw  --iscrypted $6$xU9mWzHlFMaLyxbw$30awESpjiQF0Gg/qtYAa8eOpOJicBDD2noR1uS92lb.hSnuir3bqAObiy2OSnJ0tevlzZxvjVLY8mU1P3fgNV/
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

%packages
@base
@chinese-support
@workstation-policy
@x11
mtools
pax
python-dmidecode
libXmu
%end

1、命令段:

命令段:
指定各種安裝前配置選項,如鍵盤型別等;
必備命令
可選命令

2、程式包段:

指明要安裝程式包,以及包組,也包括不安裝的程式包;
%packages
@group_name:需要安裝的包組
package:需要安裝的包
-package:不需要安裝的包
%end

3、指令碼段:

預設檔案裡並沒有這一段
%pre:安裝前指令碼
執行環境:執行安裝介質上的微型Linux系統環境;

%post:安裝後指令碼
執行環境:安裝完成的系統;

使用system-config-kickstart工具建立ks檔案

13920922-2369dceeec1ead62.png
image.png

也可以通過檔案開啟一個模板,模板位於/root/anaconda.cfg
配置完成後用ksvalidator命令檢查kickstart檔案是否有語法錯誤:
~]# ksvalidator ks.cfg
如無報錯資訊,至此kickstart檔案製作完成。

製作光碟映象

我們自己製作的光碟映象可以不加不需要的軟體包只將isolinux目錄以及我們剛剛製作的ks檔案也複製過去同時複製過來的檔案要新增寫許可權,修改isolinux.cfg檔案指明ks檔案的位置,這裡我們修改下標籤以便更直觀得看到實驗得效果:


13920922-992651aa35606fab.png
image.png

建立映象檔案:

mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /tmp/mycdrom.iso /mnt/mycdromiso


13920922-df2a72dda8311f8d.png
image.png

然後測試其效果我們將它傳給windows然後用vmware建立一臺虛擬機器用我們自己建得映象檔案來安裝系統

13920922-c8af06f1adf8be4d.png
image.png
13920922-dfce30fca475ca17.png
image.png

到此一個kicksart檔案就製作完成啦,需要注意得是mkisofs命令製作映象檔案得格式很重要,如果製作錯了後面得實驗就都無法進行了。

相關文章