一、Kickstart使用背景介紹
- 什么是PXE
PXE(Pre-boot Execution Environment譬胎,預(yù)啟動執(zhí)行環(huán)境)是由Intel公司開發(fā)的最新技術(shù)差牛,工作于Client/Server的網(wǎng)絡(luò)模式,支持工作站通過網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器下載映像堰乔,并由此支持通過網(wǎng)絡(luò)啟動操作系統(tǒng)偏化,在啟動過程中,終端要求服務(wù)器分配IP地址镐侯,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協(xié)議下載一個啟動軟件包到本機內(nèi)存中執(zhí)行侦讨,由這個啟動軟件包完成終端基本軟件設(shè)置,從而引導(dǎo)預(yù)先安裝在服務(wù)器中的終端操作系統(tǒng)苟翻。
嚴(yán)格來說韵卤,PXE 并不是一種安裝方式,而是一種引導(dǎo)方式崇猫。進(jìn)行 PXE 安裝的必要條件是在要安裝的計算機中必須包含一個 PXE 支持的網(wǎng)卡(NIC)沈条,即網(wǎng)卡中必須要有 PXE Client。PXE 協(xié)議可以使計算機通過網(wǎng)絡(luò)啟動诅炉。此協(xié)議分為 Client端和 Server 端蜡歹,而PXE Client則在網(wǎng)卡的 ROM 中。當(dāng)計算機引導(dǎo)時涕烧,BIOS 把 PXE Client 調(diào)入內(nèi)存中執(zhí)行季稳,然后由 PXE Client 將放置在遠(yuǎn)端的文件通過網(wǎng)絡(luò)下載到本地運行。運行 PXE 協(xié)議需要設(shè)置 DHCP 服務(wù)器和 TFTP 服務(wù)器澈魄。DHCP 服務(wù)器會給 PXE Client(將要安裝系統(tǒng)的主機)分配一個 IP 地址,由于是給 PXE Client 分配 IP 地址仲翎,所以在配置 DHCP 服務(wù)器時需要增加相應(yīng)的 PXE 設(shè)置痹扇。此外铛漓,在 PXE Client 的 ROM 中,已經(jīng)存在了 TFTP Client鲫构,那么它就可以通過 TFTP 協(xié)議到 TFTP Server 上下載所需的文件了浓恶。 - PXE的工作過程:
- PXE Client 從自己的PXE網(wǎng)卡啟動,通過PXE BootROM(自啟動芯片)會以UDP(簡單用戶數(shù)據(jù)報協(xié)議)發(fā)送一個廣播請求结笨,向本網(wǎng)絡(luò)中的DHCP服務(wù)器索取IP包晰;
- DHCP 服務(wù)器返回分配給客戶機的IP 以及PXE文件的放置位置(該文件一般是放在一臺TFTP服務(wù)器上) ;
- 客戶端下載啟動安裝程序所必須的文件(pxelinux.0炕吸、pxelinux.cfg/default)伐憾。default文件下載完成后,會根據(jù)該文件中定義的引導(dǎo)順序赫模,啟動Linux安裝程序的引導(dǎo)內(nèi)核树肃。
- 根據(jù)pxelinux.0 的執(zhí)行結(jié)果,通過TFTP服務(wù)器加載內(nèi)核和文件系統(tǒng)(pxelinux.cfg/default瀑罗、vmlinuz胸嘴、initrd.img);
-
客戶端通過pxelinux.cfg/default文件成功的引導(dǎo)Linux安裝內(nèi)核后斩祭,安裝程序首先必須確定你通過什么安裝介質(zhì)來安裝linux劣像,如果是通過網(wǎng)絡(luò)安裝(NFS, FTP, HTTP),則會在這個時候初始化網(wǎng)絡(luò)摧玫,并定位安裝源位置耳奕。接著會讀取default文件中指定的自動應(yīng)答文件ks.cfg所在位置,根據(jù)該位置請求下載該文件席赂。
6.將ks.cfg文件下載回來后吮铭,通過該文件找到OS Server,并按照該文件的配置請求下載安裝過程需要的軟件包颅停。OS Server和客戶端建立連接后谓晌,將開始傳輸軟件包,客戶端將開始安裝操作系統(tǒng)癞揉。安裝完成后纸肉,將提示重新引導(dǎo)計算機
詳細(xì)工作流程,請參考下面這幅圖:
-
什么是Kickstart
Kickstart是一種無人值守的安裝方式喊熟。它的工作原理是在安裝過程中記錄典型的需要人工干預(yù)填寫的各種參數(shù)柏肪,并生成一個名為ks.cfg的文件。如果在安裝過程中(不只局限于生成Kickstart安裝文件的機器)出現(xiàn)要填寫參數(shù)的情況芥牌,安裝程序首先會去查找Kickstart生成的文件烦味,如果找到合適的參數(shù),就采用所找到的參數(shù);如果沒有找到合適的參數(shù)谬俄,便需要安裝者手工干預(yù)了柏靶。所以,如果Kickstart文件涵蓋了安裝過程中可能出現(xiàn)的所有需要填寫的參數(shù)溃论,那么安裝者完全可以只告訴安裝程序從何處取ks.cfg文件屎蜓,然后就去忙自己的事情。等安裝完畢钥勋,安裝程序會根據(jù)ks.cfg中的設(shè)置重啟系統(tǒng)炬转,并結(jié)束安裝。
這里可以將DHCP/TFTP/NFS全部安裝在同一臺機器上
二算灸、服務(wù)配置安裝(分配IP192.168.15.150)
環(huán)境準(zhǔn)備局域網(wǎng)內(nèi)已提供yum源(Nginx服務(wù)器端口8088)192.168.15.131:8088
登錄kickstart服務(wù)器備份默認(rèn)yum源目錄,從yum服務(wù)器遠(yuǎn)程拷貝文件到目錄
##150服務(wù)器
[root@mini ~]# cd /etc/
[root@mini etc]# cp -R yum.repos.d yum.repos.d.bak
#備份原始yum源配置文件
[root@mini yum.repos.d]# rm -rf /etc/yum.repos.d/*
#刪除配置目錄下所有文件
[root@mini yum.repos.d]# vim centos.repo
[yum]
name=centos6.5
baseurl=http://192.168.15.131:8088/CentOS6.5/
enabled=1
gpgcheck=0
#創(chuàng)建網(wǎng)絡(luò)源配置文件
[root@mini yum.repos.d]# yum clean all
#清除yum緩存
[root@mini yum.repos.d]# yum repolist
Loaded plugins: aliases, changelog, downloadonly, fastestmirror, kabi, presto, security, tmprepo, verify,
: versionlock
Loading support for CentOS kernel ABI
Determining fastest mirrors
yum | 4.0 kB 00:00
yum/primary_db | 4.4 MB 00:00
repo id repo name status
yum centos6.5 6,367
repolist: 6,367
#查看更換yum源成功
- 安裝DHCP/TFTP服務(wù)
[root@mini ~]# yum install dhcp* tftp* -y
#開啟tftp服務(wù)
[root@mini ~]# vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no #默認(rèn)yes不開啟
per_source = 11
cps = 100 2
flags = IPv4
}
#tftp服務(wù)是掛載在超級進(jìn)程xinetd 下的扼劈,所以通過啟動xinetd 來啟動tftp服務(wù)。
[root@mini ~]# /etc/init.d/xinetd restart
配置DHCP服務(wù)
[root@mini data]# vim /etc/dhcp/dhcpd.conf
###################
ddns-update-style interim; #忽略客戶端更新
ignore client-updates;
next-server 192.168.15.150; #指定NFS客戶端地址
filename "pxelinux.0"; #指定默認(rèn)查找的文件名
allow booting;
allow bootp; #允許啟動
subnet 192.168.15.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.15.1;
option subnet-mask 255.255.252.0;
range dynamic-bootp 192.168.15.170 192.168.15.200;
host ns {
hardware ethernet 00:1a:a0:2b:38:81;
fixed-address 192.168.15.101;}
}
[root@mini data]# /etc/init.d/dhcpd restart
- TFTP+PXE配置
要實現(xiàn)遠(yuǎn)程安裝系統(tǒng)乎婿,首先需要在TFTPBOOT目錄指定相關(guān)PXE內(nèi)核模塊及相關(guān)參數(shù)测僵。(客戶端請求后從服務(wù)端下載的一些啟動文件)
配置步驟如下:
[root@mini tftpboot]# ln -s /var/lib/tftpboot /
[root@mini tftpboot]# cd /
#把tftp的目錄軟鏈接到根目錄
[root@mini /]# ll /tftpboot
lrwxrwxrwx 1 root root 17 Dec 11 16:26 tftpboot -> /var/lib/tftpboot
[root@mini ~]# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
#將光驅(qū)的系統(tǒng)盤掛載到/mnt目錄
[root@mini tftpboot]# find / -name "pxelinux.0"
/usr/share/syslinux/pxelinux.0
#查找啟動文件pxelinux.0位置,如果不存在通過下面程序安裝
[root@mini syslinux]# yum install syslinux syslinux-devel -y
[root@mini syslinux]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/
#拷貝啟動引導(dǎo)文件到tftp根目錄
[root@mini tmp]# cp /mnt/images/pxeboot/vmlinuz /tftpboot/
[root@mini tftpboot]# cp /mnt/images/pxeboot/initrd.img /tftpboot/
#拷貝光盤中的內(nèi)核啟動文件到tftp根目錄
#創(chuàng)建引導(dǎo)菜單文件目錄,從光驅(qū)拷貝文件并重命名
[root@mini tftpboot]# mkdir pxelinux.cfg
[root@mini tftpboot]# cd pxelinux.cfg/
[root@mini pxelinux.cfg]# cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
[root@mini tftpboot]# tree
.
├── initrd.img
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz
修改引導(dǎo)文件/tftpboot/pxelinux.cfg/default
[root@mini tftpboot]# vim /tftpboot/pxelinux.cfg/default
default linux # 默認(rèn)加載一個菜單
#prompt 1 # 開啟會顯示命令行'boot: '提示符。prompt值為0時則不提示谢翎,將會直接啟動'default'參數(shù)中指定的內(nèi)容
timeout 10 # timeout時間是引導(dǎo)時等待用戶手動選擇的時間捍靠,設(shè)為1可直接引導(dǎo),單位為1/10秒
display boot.msg # 菜單背景圖片森逮、標(biāo)題榨婆、顏色。
#########
label linux # label指定在boot:提示符下輸入的關(guān)鍵字褒侧,比如boot:linux[ENTER]良风,這個會啟動label linux下標(biāo)記的kernel和initrd.img文件。
kernel vmlinuz # 指定要啟動的內(nèi)核闷供。同樣要注意路徑烟央,默認(rèn)是/tftpboot目錄
append ks=nfs:192.168.15.150:/data/centosinstall/ks.cfg ksdevice=eth0 initrd=initrd.img
# 指定追加給內(nèi)核的參數(shù)
##########
label text
kernel vmlinuz
append initrd=initrd.img text
label ks
kernel vmlinuz
append ks initrd=initrd.img
label local
localboot 1
label memtest86
kernel memtest
append –
- 拷貝光盤文件到/data目錄下新建的centosinstall目錄,并且利用nfs共享該目錄
[root@mini data]# mkdir centosinstall
[root@mini data]# nohup cp /mnt/* /data/centosinstall/ -a &
#后臺拷貝
[root@mini data]# yum install nfs* -y
#安裝NFS
[root@mini data]# vim /etc/exports
/data/centosinstall/ *(rw,sync)
#共享目錄/data/centosinstall/
[root@mini data]# /etc/init.d/rpcbind restart
[root@mini data]# /etc/init.d/nfs restart
#依次重啟依賴服務(wù)rpcbind和nfs
- 在centosinstall目錄下新建ks.cfg文件(定義硬盤分區(qū)及安裝軟件包)
默認(rèn)記錄系統(tǒng)安裝步驟的文件/root/anaconda-ks.cfg
[root@mini data]# vim /data/centosinstall/ks.cfg
# Kickstart file automatically generated by anaconda. #注釋語句這是kickstart自動安裝腳本
install #開始安裝
text #文本模式安裝
nfs --server=192.168.15.150 --dir=/data/centosinstall/ #指定nfs服務(wù)器目錄后面帶/號
key --skip #跳過密鑰
lang zh_CN.UTF-8 #字符集
keyboard us
network --device eth0 --bootproto=dhcp --noipv6 #網(wǎng)卡dhcp自動獲取
rootpw 123456 #root密碼
firewall --disabled #禁用防火墻
authconfig --enableshadow --enablemd5
selinux --disabled #禁止selinux
timezone Asia/Shanghai #時區(qū)
bootloader --location=mbr --driveorder=sda --append="rhgb quiet" #引導(dǎo)方式mbr,安裝到硬盤sda,打印默認(rèn)信息
clearpart --all --initlabel #初始化所有磁盤分區(qū)
part /boot --fstype ext3 --size=200 # /boot分配200M
part swap --size=1024 #swap交換分區(qū)1G
part / --fstype ext3 --size=80000 #根分區(qū)8G
part /data --fstype ext3 --size=200 --grow #data分區(qū)占剩余所有空間
reboot #重啟
%packages #定義安裝軟件包,可以去/root/anaconda-ks.cfg復(fù)制光盤系統(tǒng)安裝的包
@base
@core
@chinese-support
@compat-libraries
@core
@debugging
@development
@java-platform
@perl-runtime
@server-policy
@workstation-policy
yum-plugin-aliases
tboot
nss_db
linuxptp
rsyslog-gssapi
udftools
rsyslog-relp
audispd-plugins
mtools
yum-plugin-versionlock
sox
dumpet
gpm
yum-plugin-tmprepo
pax
python-dmidecode
uuidd
yum-presto
oddjob
wodim
volume_key
squashfs-tools
star
kernel-doc
tunctl
yum-plugin-downloadonly
sgpio
yum-plugin-changelog
genisoimage
brltty
yum-plugin-verify
x86info
dos2unix
cpupowerutils
unix2dos
kabi-yum-plugins
edac-utils
device-mapper-persistent-data
logwatch
rsyslog-gnutls
PyPAM
mkbootdisk
ecryptfs-utils
python-volume_key
zsh
ncurses-term
cjkuni-fonts-ghostscript
glibc-utils
systemtap-client
memtest86+
gdb-gdbserver
ps_mem
lslk
flightrecorder
systemtap-initscript
systemtap-sdt-devel
dejagnu
ElectricFence
ant
libstdc++-docs
gcc-gnat
expect
mod_dav_svn
perltidy
cmake
imake
babel
ksc
kdewebdev
rpmdevtools
compat-gcc-34
systemtap-server
cvs-inetd
gcc-java
compat-gcc-34-g77
jpackage-utils
bzr
mercurial
chrpath
gcc-objc
rpmlint
gcc-objc++
compat-gcc-34-c++
python-docs
nasm
icedtea-web
perl-LDAP
perl-Frontier-RPC
perl-Date-Calc
perl-suidperl
perl-Date-Manip
perl-Mozilla-LDAP
perl-DBD-SQLite
%end
[root@mini data]# chmod 777 /data/centosinstall/ks.cfg
#更改授權(quán)
重啟所有服務(wù)
[root@mini ~]# /etc/init.d/xinetd restart #TFTP依賴服務(wù)
[root@mini ~]# /etc/init.d/rpcbind restart #NFS依賴服務(wù)
[root@mini ~]# /etc/init.d/nfs restart #NFS服務(wù)
[root@mini ~]# /etc/init.d/dhcpd restart #DHCP服務(wù)
#備注:/data/centosinstall/ks.cfg文件第4行配置NFS服務(wù)器的目錄最后不需帶/號否則安裝時會報錯
利用虛擬機給服務(wù)器自動安裝centos系統(tǒng)
- 首先利用PE系統(tǒng)格式化硬盤(一般服務(wù)器都是做好raid的虛擬硬盤),如果是全新的機器只要檢查RAID是否完成,一般系統(tǒng)開機順序是先檢測硬盤再檢測網(wǎng)卡,如果手動更改啟動BOOT順序,自動化安裝重啟后會繼續(xù)循環(huán)安裝,因此最好保證啟動順序是第一硬盤,第二網(wǎng)絡(luò),否則需要再系統(tǒng)安裝完成重啟時手動操作.
- 虛擬機開啟所有服務(wù)(xinetd/nfs/dhcp)后,網(wǎng)卡由原本的NAT模式改為橋接模式
- 打開虛擬機的虛擬網(wǎng)絡(luò)編輯器功能,關(guān)閉DHCP分配地址功能,并將橋接模式下的網(wǎng)卡改為物理網(wǎng)卡(筆記本一般都橋接到無線網(wǎng)卡上)
- 修改筆記本物理網(wǎng)卡的IP地址,同時利用交換機將筆記本,服務(wù)器連接在統(tǒng)一個局域網(wǎng)中
- 啟動服務(wù)器等待系統(tǒng)安裝完成即可