使用Kickstart自動化安裝CentOS6.5
作者:Todd Liu 時間:2018年5月28日
本文介紹PXE方式引導自動化安裝CentOS6.5系統,主要用到的系統服務有DHCP、TFTP、Vsftpd和Kickstart。通過配置Kickstart自動化應答腳本,實現客戶端批量、無人值守安裝系統。
1. PXE介紹
PXE(Preboot Execution Environment,預啟動執行環境)由Intel公司開發,工作於Client/Server的網絡模式,支持客戶端通過網絡從遠端服務器下載映像,並由此支持通過網絡啟動操作系統。PXE可以引導windows2003/2008/XP/win7/linux
圖 1 PXE網絡安裝服務架構圖
圖 2 支持PXE啟動的網卡
PXE啟動流程:進行PXE引導安裝的必要條件是有一個支持PXE啟動的網卡(NIC),即網卡ROM中必須要有PXE Client。當客戶端計算機啟動引導時,BIOS 把PXE Client 調入內存中執行,首先通過ARP協議廣播請求IP地址與TFTP服務器地址,在獲取到IP後,嘗試向TFTP服務器發起TFTP請求,並將TFTP服務器根目錄中的pxelinux.0文件下載到本地並執行,pxelinux.0引導程序執行後,會從
2. Kickstart自動化安裝實例
2.1 安裝環境介紹
實驗環境以兩臺VMware虛擬機為例:
虛擬機A:CentOS 6.5系統,作為PXE安裝服務器,網絡連接到NAT網絡,並關閉VMnet8
虛擬機B:新建空白虛擬機,作為PXE客戶端,網絡連接到NAT網絡,也可以和虛擬機A一起放在“僅主機”或“橋接”網絡(相同即可),移除DVD及其他不用的設備;
在正式進行服務配置前,最好關閉PXE服務器的防火墻和Selinux:
關閉防火墻iptables:
[root@localhost ~]# iptables -F [root@localhost ~]# service iptables stop
關閉Selinux:
[root@localhost ~]# setenforce 0 [root@localhost ~]# vim /etc/selinux/config SELINUX=disabled
2.2 配置DHCP服務
PXE啟動流程第一階段需要通過DHCP服務為客戶端分配IP地址,指定TFTP服務器地址,指定pxelinux.0引導程序。
1. 安裝DHCP服務
[root@localhost ~]# yum -y install dhcp
2. 設置DHCP服務開機啟動
[root@localhost ~]# chkconfig –level dhcpd 2345 on [root@localhost ~]# chkconfig --list dhcpd 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
3. 修改DHCP服務主配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf #響應客戶端的啟動查詢(開機時發送的DHCP請求) allow booting; allow bootp; #不使用DNS動態更新,忽略客戶端DNS更新 ddns-update-style none; ignore client-updates; #為客戶端指定DNS名稱和DNS服務器的IP地址 option domain-name "example.org"; option domain-name-servers 192.168.2.60; #指定客戶端DHCP租期和連接DHCP服務器超時時間即最大租期 default-lease-time 3600; max-lease-time 7200; #指定DHCP服務器發送的日誌信息的日誌級別 log-facility local7; #子網區域 subnet 192.168.2.0 netmask 255.255.255.0 { #設置客戶端子網掩碼 option subnet-mask 255.255.255.0; #客戶端IP地址池 range dynamic-bootp 192.168.2.100 192.168.2.200; #tftp服務器的地址 next-server 192.168.2.60; #需要從tftp服務器下載並執行的PXE引導文件 filename "pxelinux.0"; default-lease-time 3600; max-lease-time 7200; #指定客戶端默認網關IP地址 option routers 192.168.2.1; }
4. 重啟DHCP服務
[root@localhost ~]# service dhcpd restart
2.3 配置TFTP服務
TFTP服務是一個沒有主服務程序的輕量級服務,它依靠系統xinetd守護進程啟動。xinetd進程監聽不同網絡端口,根據端口發送數據到不同的服務進程。在安裝好TFTP服務後,xinetd服務就監聽UDP的69號端口,將這個端口收到的數據發送給TFTP程序。
1. 安裝xinetd和tftp-server
[root@localhost ~]# yum -y install xinetd tftp-server
2. 設置xinetd服務開機啟動
[root@localhost ~]# chkconfig –level xinetd 345 on [root@localhost ~]# chkconfig –list xinetd 0:關閉 1:關閉 2:關閉 3:啟用 4:啟用 5:啟用 6:關閉 基於 xinetd 的服務: tftp: 啟用
3. 編輯tftp配置文件,開啟tftp服務
[root@localhost ~]# vim /etc/xinetd.d/tftp #將配置文件中disable後面的yes改成no service tftp { …… disable = no …… }
4. 重啟xinetd服務
[root@localhost ~]# service xinetd restart
2.4 配置Syslinux及系統引導必須文件
PXE系統啟動引導需要一些必須的文件,其中pxelinux.0文件通過安裝syslinux包獲得;vmlinuz是壓縮的可引導、可執行的linux內核文件,initrd.img是“initial ramdisk”,用於臨時引導硬件到內核vmlinuz接管,加載文件系統和SCSI設備驅動,這兩個文件可以從安裝光盤images/pxeboot目錄復制;
1. 安裝syslinux包,復制引導文件pxelinux.0
[root@localhost ~]# yum -y install syslinux [root@localhost ~]# locate pxelinux.0 /usr/share/syslinux/pxelinux.0 #將pxe引導文件復制到TFTP根目錄中 [root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
2. 掛載CentOS光盤,復制系統引導必須文件
[root@localhost ~]# mount /dev/cdrom /media/cdrom [root@localhost cdrom]# cp images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ [root@localhost cdrom]# cp isolinux/{vesamenu.c32,boot.msg} /var/lib/tftpboot/
3. 創建系統引導模版文件default
[root@localhost cdrom]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@localhost cdrom]# cp isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
4. 編輯系統引導模版文件default
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default #需要修改兩處 #第1處:將第一行default後面標簽改成linux,表示引導時使用這個標簽下指定的內容去查找操作系統的位置 default linux #第2處:找到linux標簽,修改inst.stage2和ks後面配置指向FTP服務器 label linux menu label ^Install CentOS 6.5 32bit menu default kernel vmlinuz append initrd=initrd.img inst.stage2=ftp://192.168.2.60 ks=ftp://192.168.2.60/pub/ks.cfg quiet
2.5 配置Vsftpd服務
Vsftpd服務通過FTP協議發送系統光盤文件和自動化應答腳本文件ks.cfg到客戶端。
1. 安裝Vsftpd服務
[root@localhost cdrom]# yum -y install vsftpd
2. 設置Vsftpd開機啟動
[root@localhost ~]# chkconfig –level vsftpd 2345 on [root@localhost ~]# chkconfig –list vsftpd 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
3. 將CentOS6.5系統安裝光盤所有文件復制到FTP根目錄
[root@localhost ~]# cp -a /media/cdrom/* /var/ftp/
2.6 配置Kickstart
Kickstart是一種無人值守安裝方式,它的工作原理是通過記錄典型的安裝過程中所需人工幹預填寫的各種參數,並生成一個名為ks.cfg的自動應答腳本文件,在其後的安裝過程中,當出現要求填寫參數的情況時,安裝程序會首先去查找Kickstart生成的文件,當找到合適的參數時,就采用找到的參數;當沒有找到合適的參數時,才需要安裝者手工幹預。這樣,如果告訴安裝程序ks.cfg文件位置,並且文件涵蓋了安裝過程中出現的所有需要填寫的參數時,就能實現全自動無人值守安裝。
1. 在RHEL桌面環境下配置Kickstart
[root@localhost ~]# yum –y install system-config-kickstart [root@localhost ~]# system-config-kickstart
A:開始設置語言,鍵盤,時區,Root密碼,安裝完畢自動重啟;
B:設置安裝方式(ftp/http/nfs);
C:安裝MBR;
D:設置分區;
E:配置網絡;
F:認證配置;
G:SELinux 和防火墻配置;
H:軟件包安裝選擇
圖 3 Kickstart配置界面
經過各種設置,最後是生成的ks.cfg文件預覽界面, 文件保存在/var/www/html/文件夾。
圖 4 Kickstart生成ks.cfg預覽界面
2. 使用系統現有ks.cfg模版文件
在已安裝好的CentOS系統root用戶家目錄,存在一個anaconda.cfg文件即為本系統的自動化應答腳本文件,可以以此為模版進行配置。
[root@localhost ~]# ls -l anaconda-ks.cfg -rw------- 1 root root 1080 5月 24 11:08 anaconda-ks.cfg
註意:此配置文件權限為其他人不可讀,使用前需要設置權限為其他人可讀,否則自動化安裝時候anaconda程序會報錯“找不到ks.cfg文件”。
#復制一份anaconda-ks.cfg到FTP共享目錄pub下: [root@localhost ~]# cp anaconda-ks.cfg /var/ftp/pub/ks.cfg #修改權限為其他人可讀 [root@localhost pub]# chmod 644 ks.cfg [root@localhost pub]# ls -l -rw-r--r-- 1 root root 1353 5月 28 08:59 ks.cfg
下面是一個典型的ks.cfg配置文件:
[root@localhost pub]# vim ks.cfg # Kickstart file automatically generated by anaconda. #version=DEVEL install graphical url --url="ftp://192.168.2.60/" lang zh_CN.UTF-8 keyboard us timezone --utc Asia/Shanghai rootpw --iscrypted $6$VfvSB5Zx$ufvfpkzYy/nHoDukZXm1Z6LBlUg1n2OrO1.K7F8d2fRlYDdHwwR7MVUqT2h0Qab7rRPnRGPFa1/VYyBSDeGTt1 firewall --disabled selinux --disabled authconfig --enableshadow --passalgo=sha512 firstboot --disable network --onboot yes --hostname=localhost.localdomain --device eth0 --bootproto dhcp --noipv6 user --name=todd --password=$6$vTfBqgQT$Xkjrx/kpRYEGfS1wRnsZw5MNRMUCZ3/Ld969pTG0wv4WBrMHUpWEwRSzPqJ95dIaZasWOU3pbS2at/dRZZZA11 --iscrypted bootloader --location=mbr --driveorder=sda zerombr yes clearpart --all --initlabel part /boot --fstype=ext4 --size=200 part swap --size=2048 part / --fstype=ext4 --grow --size=200 reboot %packages @core @base %post /bin/tar zcPf centos.repo.tar.gz /etc/yum.repos.d/*.repo > /dev/null 2>&1 /bin/rm -f /etc/yum.repos.d/*.repo > /dev/null 2>&1 cat >> /etc/yum.repos.d/base.repo << EOF [base] name=CentOS6.5 baseurl=ftp://192.168.2.60/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 EOF %end
說明:
①key --skip 如果是紅帽系統,此選項可以跳過輸入序列號過程;如果是CentOS 系列,則可以不保留此項內容;
②reboot選項必須存在,否則安裝完畢後kickstart顯示等待用戶按任意鍵重新引導;
③clearpart --all –initlabel 此條命令必須添加,否則系統會讓用戶手動選擇是否清除所有數據,這就需要人為幹預了,從而導致自動化過程失敗;
④安裝完畢後登錄系統,root用戶密碼為root,todd用戶密碼為todd;
⑤%post安裝後腳本打包備份原有yum倉庫文件,生成新的base.repo倉庫。
3. 測試安裝
自動化應答腳本文件ks.cfg配置完畢後,初始化一個VMware虛擬機,將網絡連接到NAT網絡(必須和作為PXE服務器的虛擬機A在同一個網絡,並且VMnet8關閉DHCP服務),移除客戶端虛擬機B的DVD及其他不用的設備。
圖 5 新建空白虛擬機PXE Client
啟動PXE Client虛擬機B,自動選擇從網卡PXE引導,DHCP 服務器開始給客戶機分配IP地址,並指定TFTP服務器地址。
圖 6 PXE Client向DHCP Server請求IP地址和TFTP服務器地址
圖 7 加載vmlinuz和initrd.img文件
圖 8 啟動CentOS6.5安裝過程
使用Kickstart自動化安裝CentOS6.5