在介紹自動化安裝系統之前讓我們來回顧一下系統的啟動流程,系統的啟動大概分為一下幾個步驟:加電自檢 boot sequence(mbr)-- boot loader -->kernel(initramfs)—>rootfs /sbin/init大概就是這麼幾個過程了,接下來來介紹系統的安裝,安裝系統雖然看起來簡單,普通的安裝大多數使用者會選擇一直下一步的安裝把,但是想實作高逼格的安裝還是需要簡單的加工一下,好吧,開始介紹
anaconda:系統安裝程式fedora 的一個開源項目
在系統啟動的時候就會啟動anaconda程式,它預設啟動gui接口,并向核心傳遞text參數即可,然後啟動系統安裝
anaconda安裝系統分成兩個階段
安裝前配置階段
鍵盤類型
安裝過程中的餘元
支援的語言
時區
選擇要使用的磁盤裝置
分區格式化
選擇要安裝的程式包
管理者密碼
是否啟用iptables
是否啟用selinux
想必安裝過作業系統的小夥伴都應該知道需要經過這麼幾步,沒裝過的小夥伴需要親自去安裝體驗一下
安裝階段
在目标磁盤上建立分區,執行格式化操作
将標明的程式包安裝到指定目标磁盤
安裝boot loader和initramfs
啟動安裝過程一般位于引導裝置中,後續的anaconda及安裝用到的程式包等由以下幾種方式:
本地CD光牒
本地硬碟
ftp伺服器
http伺服器
nfs伺服器

如果想手動指定安裝源
在啟動後安裝esc之後會出現boot:開頭的提示符在後面輸入linux askmethod選擇指定的安裝源
boot的引導選項,要使用引導選項請在boot:提示符後輸入linux option(以下的多種方式)
指定語言
linux keymap=gr
更新anaconda
linux updates
linux text:文本方式安裝
askmethod:手動指定安裝源
repo=cdrom:device
repo=hd:device/path
repo=http://host/path
repo=ftp://username:password@hosts/path
repo=nfs:server:path
與網絡相關的引導選項
ip=ipaddr
netmask=mask
gateway=gw
dns=dns ip
啟用對安裝系統的遠端通路
linux vnc vncpassword=密碼串
啟用遠端通路
linux sshd=1
進入救援模式
linux rescue
kickstart檔案格式
指令段:用于配置系統
install
firewall
part
lvm
程式包段:指定要安裝的程式包及程式包組
%packages:表示
@base:使用@指定包組
lftp:直接寫程式包名
-package
%end:軟體包結束
注意:在程式包錢加-,不安裝相關包
腳本段
%pre:安裝過程開始錢的預備腳本,所能執行的操作較小,它是一個首先得環境,因為其實僅有簡單版的shell環境
%post:所有的軟體完成之後執行的腳本,此時具有完整意義的shell環境,但并非所有指令都安裝,先確定所有的程式已經安裝
%end:腳本結束段
kickstart 檔案的格式中的指令段中必備指令
authconfig:認證方式配置
authconfig –usershadow –passalgo=sha512
boot loader :boot loader 的安裝位置及相關配置
boot loader –location=mbr –driveorder=sda –append=”crashkernel=auto rhgb quiet “
kerboard:設定鍵盤類型
lang:語言類型
part:建立分區
rootpwd:root的密碼
timezone:時區
可選指令
install or upgrade
text:檔案安裝界面
network
firewall
selinux
halt
poweroff
reboot
repo
user:安裝完成後建立新使用者
url:指定安裝源
key –skip:跳過安裝号碼,使用與rhel版本的作業系統
建立kickstart檔案
建立kickstart檔案的方式
直接手動編輯
依據已安裝好系統上的kickstart檔案模版修改
使用建立工具:system-config-kickstart,建議使用/root/anaconda-ks.cfg模版生成
1、生成預設語言,鍵盤類型,時區,以及root的密碼,還可以指定安裝後自動重新開機,指定是在字元界面安裝作業系統,還是在圖形界面安裝作業系統
2、選擇安裝方式
3、安裝boot loader
4、分區資訊,是否清除之前的mbr,清楚磁盤所有分區表,并初始化磁盤卷标
5、網絡配置,即可以使用dhcp來擷取ip位址,也能自己手動指定位址
6、密碼檔案加密方式,有md5,sha256,sha512等方式
7、防火牆設定,禁用或啟用
8、顯示配置,是否安裝圖形環境
9、選擇要安裝的軟體包
10、安裝前腳本,将自己想要設定的内容寫到本初,比如更改issue檔案
11、安裝後腳本,比如給系統添加一個repo檔案
生成後的ks.cfg檔案可以通過ksvalidator指令來檢查ks檔案的文法錯誤指令
指令用法:ksvalidator ks.cfg
生成好的ks.cfg檔案内容
#platform=x86, amd64, or intel em64t
#version=devel
# firewall configuration
firewall --disabled
# install os instead of upgrade
install
# use network installation
url --url="http://10.1.0.1/cobbler/ks_mirror/centos-6-x86_64/"
# root password
rootpw --iscrypted $1$hhtxxiki$dj/fz1tpagho37ta9k7xl/
# system authorization information
auth --useshadow --passalgo=sha512
# use graphical install
graphical
firstboot --disable
# system keyboard
keyboard us
# system language
lang zh_cn
# selinux configuration
selinux --enforcing
# installation logging level
logging --level=info
# system timezone
timezone africa/abidjan
# network information
network --bootproto=dhcp --device=et0 --onboot=on
# system bootloader configuration
bootloader --location=mbr
# clear the master boot record
zerombr
# partition clearing information
clearpart --all
# disk partitioning information
part / --fstype="ext4" --size=10000
part /boot --fstype="ext4" --size=300
%packages
@backup-client
@base
@basic-desktop
@compat-libraries
@console-internet
@debugging
@desktop-debugging
@desktop-platform
@development
@dial-up
@directory-client
@emacs
@fonts
@general-desktop
@graphical-admin-tools
@graphics
@input-methods
@internet-applications
@internet-browser
@office-suite
@server-platform-devel
@technical-writing
@tex
git
%end
制作引導CD光牒
mkdir /linuxiso
将ks.cfg檔案拷貝到/linuxiso目錄下
cp /media/isolinux/ /linuxiso
vim /linuxiso/isolinux/isolinux.cfg
将initrd=initrd.img text ks=cdrom:/ks.cfg
cp /root/ks.cfg /linuxiso/
mkisofs:-r -j -t -v --no-emul-boot --boot-load-size 4 --boot-info-table -v "centos 6.5 x86_64 boot(可改)" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/centos6.5.boot.iso(可改) linuxiso/
制作好CD光牒後,将CD光牒插入機器(當然這裡使用的是虛拟的),調整啟動次序為CD光牒啟動,将機器連接配接到網絡中的安裝,前提是網絡當中有安裝源,如果沒有安裝源可以自己搭建一個ftp的伺服器,安裝vsftpd啟動服務,将CD光牒當中的所有檔案都拷貝到/var/ftp/pub目錄下,然後将安裝樹的源寫到ks.cfg檔案的url --url那一行即可,這樣就可以實作自動化安裝作業系統,但是需要注意的是,當你安裝完成作業系統後,你的機器的啟動次序還是CD光牒,那麼它将會重複安裝作業系統,在這裡提醒各位的是,在作業系統安裝完成之後将啟動次序調整為硬碟啟動
建立優盤啟動
de if=/dev/cdrom of=/dev/sdb