前言
??在日常的生产环境中,需要批量的部署大量相同的操作系统,如果我们去逐台安装无疑会花费大量的时间,通过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
[[email protected] 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
检查端口
[[email protected] /]# 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))
?
客户端测试,整个过程都是自动化安装,无需人为干预。
?
完成。
原文地址:http://blog.51cto.com/12443436/2316777