1、簡(jiǎn)述linux操作系統(tǒng)啟動(dòng)流程
2、簡(jiǎn)述grub啟動(dòng)引導(dǎo)程序配置及命令行接口詳解
3、實(shí)現(xiàn)kickstart文件制作與光盤鏡像制作
1、簡(jiǎn)述linux操作系統(tǒng)啟動(dòng)流程
- 啟動(dòng)流程:
- BIOS上電自檢(POST)
- 引導(dǎo)加載程序bootloader(MBR)
- 內(nèi)核初始化(ramdisk技術(shù))
- 根切換
- 啟動(dòng)系統(tǒng)第一個(gè)進(jìn)程
在按下電源鍵后電腦開始執(zhí)行BIOS(基本輸入輸出系統(tǒng))的POST(上電自檢)過(guò)程,它將找到設(shè)備的引導(dǎo)扇區(qū),并包含有效記錄的第一個(gè)引導(dǎo)扇區(qū)(MBR)裝載入內(nèi)存,并且控制權(quán)也將轉(zhuǎn)移到此段代碼。根據(jù)MBR中的信息找到磁盤上的kernel文件和initrd文件,如果bootloader是grub2那將繼續(xù)加載隨后扇區(qū)中的1.5階段代碼其主要功能是執(zhí)行存放階段2文件的/boot文件系統(tǒng)的驅(qū)動(dòng)程序,并將加載相關(guān)的驅(qū)動(dòng)程序。階段2的grub文件都存放于/boot/grub2目錄下,在這個(gè)時(shí)候內(nèi)核已經(jīng)被加載到內(nèi)存中,如果是ramdisk則展開一個(gè)偽根文件系統(tǒng),借助這個(gè)來(lái)加載相關(guān)的模塊。然后把真正的根掛載上來(lái),將系統(tǒng)控制權(quán)移交給內(nèi)核,并做根切換,然后內(nèi)核啟動(dòng)第一個(gè)進(jìn)程init或者systemd。
是所有進(jìn)程的父進(jìn)程,它將設(shè)定默認(rèn)的運(yùn)行級(jí)別,運(yùn)行系統(tǒng)初始化腳本,并關(guān)閉或啟動(dòng)系統(tǒng)對(duì)應(yīng)級(jí)別下的服務(wù),啟動(dòng)終端。
2、簡(jiǎn)述grub啟動(dòng)引導(dǎo)程序配置及命令行接口詳解
grub的三個(gè)階段
stage 1: 用于啟動(dòng)Boot loader 來(lái)加載stage2的內(nèi)容至內(nèi)存中
stage 1_5:用于識(shí)別和加載內(nèi)核和stage2所在分區(qū)的文件系統(tǒng)的相關(guān)驅(qū)動(dòng)程序,引導(dǎo)stage2
stage 2: 讀取 grub.conf 配置文件,并真正開始引導(dǎo)程序
grub的配置文件
grub程序在引導(dǎo)啟動(dòng)時(shí)會(huì)按照文件的配置參數(shù)去引導(dǎo)啟動(dòng)系統(tǒng)

文件的內(nèi)容如下:
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:表示默認(rèn)選擇第一個(gè)選項(xiàng)進(jìn)行配置
timeout: 表示選擇菜單的時(shí)間,如果過(guò)了這個(gè)時(shí)間沒(méi)有選擇則表示使用默認(rèn)選項(xiàng)
splashimage: 指定引導(dǎo)菜單中的背景圖片的路徑
titile: 指定選項(xiàng)的名稱
root: 表示kernel和initrd文件所在的分區(qū)路徑,而不是”根分區(qū)”;其格式為:
root (hd0,0) 第一個(gè)數(shù)字表示第幾塊硬盤,第二個(gè)數(shù)字表示硬盤上的第幾個(gè)分區(qū),都是從零開始
kernel:指定要運(yùn)行的內(nèi)核文件路徑,后面可以加參數(shù),根掛載的目錄,以何種方式去掛載,lvm等的激活,語(yǔ)言的設(shè)置,鍵盤等外設(shè)的設(shè)置
initrd:為內(nèi)核運(yùn)行指定的ramdisk文件,版本必須與內(nèi)核保持一致
grub的命令行接口
在菜單頁(yè)面按c即可進(jìn)入命令行接口,我們可以配置相關(guān)的grub設(shè)置,等同于在配置文件中做出的設(shè)置常用的指令有:
help:查看命令幫助;
root ():指定ramdisk和內(nèi)核文件所在的分區(qū),如root(hd0,0)。
find (hd0,0) /path/to/file:用于查找對(duì)應(yīng)分區(qū)下的文件kernel /path/to/kernel_file:用于指定要運(yùn)行的kernel文件。
initrd /path/to/ramdisk_file:指定ramdisk文件;
boot:以當(dāng)前配置好的grub配置啟動(dòng)系統(tǒng);
3、實(shí)現(xiàn)kickstart文件制作與光盤鏡像制作
Kickstart簡(jiǎn)介
kickstart利用anaconda工具實(shí)現(xiàn)自動(dòng)化安裝,通過(guò)生成的的配置文件,服務(wù)器可以實(shí)現(xiàn)安裝的全自動(dòng)化不需要人機(jī)交互,該文件里包含anconda在安裝系統(tǒng)以及安裝后的一些必要的配置信息。
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
如果時(shí)使用光盤安裝,則則需要將配置文件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、命令段:
命令段:
指定各種安裝前配置選項(xiàng),如鍵盤類型等;
必備命令
可選命令
2、程序包段:
指明要安裝程序包,以及包組,也包括不安裝的程序包;
%packages
@group_name:需要安裝的包組
package:需要安裝的包
-package:不需要安裝的包
%end
3、腳本段:
默認(rèn)文件里并沒(méi)有這一段
%pre:安裝前腳本
運(yùn)行環(huán)境:運(yùn)行安裝介質(zhì)上的微型Linux系統(tǒng)環(huán)境;
%post:安裝后腳本
運(yùn)行環(huán)境:安裝完成的系統(tǒng);
使用system-config-kickstart工具創(chuàng)建ks文件

也可以通過(guò)文件打開一個(gè)模板,模板位于/root/anaconda.cfg
配置完成后用ksvalidator命令檢查kickstart文件是否有語(yǔ)法錯(cuò)誤:
~]# ksvalidator ks.cfg
如無(wú)報(bào)錯(cuò)信息,至此kickstart文件制作完成。
制作光盤鏡像
我們自己制作的光盤鏡像可以不加不需要的軟件包只將isolinux目錄以及我們剛剛制作的ks文件也復(fù)制過(guò)去同時(shí)復(fù)制過(guò)來(lái)的文件要添加寫權(quán)限,修改isolinux.cfg文件指明ks文件的位置,這里我們修改下標(biāo)簽以便更直觀得看到實(shí)驗(yàn)得效果:

創(chuàng)建鏡像文件:
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

然后測(cè)試其效果我們將它傳給windows然后用vmware創(chuàng)建一臺(tái)虛擬機(jī)用我們自己建得鏡像文件來(lái)安裝系統(tǒng)


到此一個(gè)kicksart文件就制作完成啦,需要注意得是mkisofs命令制作鏡像文件得格式很重要,如果制作錯(cuò)了后面得實(shí)驗(yàn)就都無(wú)法進(jìn)行了。