前言
在日常的生產環境中,需要批量的部署大量相同的操作系統,如果我們去逐檯安裝無疑會花費大量的時間,通過Kictstart+PXE可以快速的部署安裝,可以有效的節省人工和時間。
什麼是PXE?
PXE(預啓動執行環境),工作在Client/Server的工作模式,通過網絡接口啓動計算機,不依賴本地存儲設備(如硬盤)或本地已安裝的操作系統;
由Intel和Systemsoft公司於1999年9月20日公佈的技術;
PXE工作原理:
實驗環境
操作系統:centos6.5
server:192.168.42.16
client:dhcp獲取
實驗需求:通過網絡自動化安裝 centos6.5 操作系統
準備工作
iptables -F
service iptables save
sed -ri '/^SELINUX/c\SELINUX=disabled' /etc/selinux/config
setenforce 0
服務器安裝上安裝需要的服務
yum -y install dhcp tftp-server vsftpd xinetd syslinux
dhcp配置
vim /etc/dhcp/dhcpd.conf
[root@centos6 centos6.5]# cat /etc/dhcp/dhcpd.conf
ddns-update-style none;
#ignore client-updates;
authoritative;
#option domain-name "example.org";
#option domain-name-servers 8.8.8.8 , 202.96.128.166;
#default-lease-time 600;
#max-lease-time 7200;
log-facility local7;
subnet 192.168.42.0 netmask 255.255.255.0 {
range 192.168.42.100 192.168.42.200;
option domain-name-servers 202.96.128.166;
option domain-name "class.com";
option routers 192.168.42.2;
option broadcast-address 192.168.42.255;
default-lease-time 300;
max-lease-time 7200;
allow bootp;
allow booting;
next-server 192.168.42.16; #tftp服務器地址
filename "pxelinux.0"; #啓動引導文件
}
service dhcpd start
chkconfig dhcpd on
掛載系統鏡像,通過ftp發佈
mkdir /var/ftp/centos6.5
mount /dev/cdrom /var/ftp/centos6.5/
tftp配置
vim /etc/xinetd.d/tftp
disable= no
提供引導菜單所需的文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
cp -rf /var/ftp/centos6.5/isolinux/* /var/lib/tftpboot/
cd /var/lib/tftpboot/
mkdir pxelinux.cfg
cp isolinux.cfg pxelinux.cfg/default
配置引導列表
cd /var/lib/tftpboot/pxelinux.cfg
vim default
default vesamenu.c32 #注意 vesamenu.c32是否存在tftpboot目錄下
timeout 600
display boot.msg #這個文件用來定義歡迎界面
prompt 1
label 1 #引導列表名稱
menu Install centos 6 #標籤
kernel vmlinuz #內核文件
append initrd=initrd.img ks=ftp://192.168.42.16/centos6-ks.cfg #initrd定義啓動鏡像文件
定義kickstart腳本,實現自動化安裝
vim /var/ftp/centos6-ks.cfg
#定義安裝類型
install
text
reboot
lang en_US.UTF-8
keyboard us
url --url="ftp://192.168.42.16/centos6.5"
rootpw --iscrypted sdkfhiuqdsf14349#$%$%^451f1 * #root用戶密碼,此處需要填寫MD5加密的密碼字串*
firewall --disabled
#firewall --service=ssh
authconfig --useshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/ShangHai
bootloader --location=mbr --append="crashkernel=auto rhgb quiet"
zerombr
#分區
clearpart --all --initlabel
part /boot --fstype=ext4 --size=200
part swap --size=2048
part / --fstype=ext4 --grow --size=1 #這裏大小等於1表示使用剩餘所有內存
#安裝軟件包
%packages
@core
@base
wget
tree
psmisc
%end
#安裝後操作
%post
rm -rf /etc/yum.repos.d/*
wget -q ftp://192.168.42.16/pub/centos6.5.repo -O /etc/yum.repos.d/centos6.5.repo
yum clean all
yum repolist
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
sed -i "s/ONBOOT.*$/ONBOOT=yes/" /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i "s/rhgb //" /boot/grub/grub.conf
sed -i "s/HOSTNAME=.*$/HOSTNAME=centos6.5/" /etc/sysconfig/network
%end
啓動服務
service vsftpd restart
service dhcpd restart
service xinetd restart
檢查端口
[root@centos6 /]# ss -ntulp | egrep '21|67|69'
udp UNCONN 0 0 *:41869 *:* users:(("rpc.statd",1075,8))
udp UNCONN 0 0 *:67 *:* users:(("dhcpd",1850,7))
udp UNCONN 0 0 *:69 *:* users:(("xinetd",1785,5))
tcp LISTEN 0 32 *:21 *:* users:(("vsftpd",1831,3))
客戶端測試,整個過程都是自動化安裝,無需人爲干預。
完成。