PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行。
要使用kickstart安装平台,包括的完整架构为:Kickstart+DHCP+NFS(http)+TFTP+PXE,从架构可以看出,大致需要安装的服务,例如dhcp、tftp、nfs、kickstart/pxe等。
1) DHCP、TFTP安装
yum install -y dhcp* tftp* xinetd
首先配置tftp服务:
vi /etc/xinetd.d/tftp service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -u nobody -s /tftpboot per_source = 11 cps = 100 2 flags = IPv4 } 只需要把disable = yes改成disable = no即可。
2)TFTP+PXE配置
要实现远程安装系统,首先需要在TFTPBOOT目录指定相关PXE内核模块及相关参数。配置步骤如下:
要实现远程安装系统,首先需要在TFTPBOOT目录指定相关PXE内核模块及相关参数。配置步骤如下: mount /dev/cdrom /mnt 挂载本地光盘 #如果系统是6.x,默认tftpboot目录在/var/lib/下,所以centos6.x需要做软链接到/根目录下。 ln -s /var/lib/tftpboot / cp /usr/share/doc/syslinux/pxelinux.0 /tftpboot/ (yum install syslinux syslinux-devel -y) cp /mnt/images/pxeboot/{vmlinuz,initrd.img} ./ 拷贝内核至tftpboot目录下 mkdir -p pxelinux.cfg &&cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default 拷贝isolinux.cfg配置文件重命名,系统安装的时候会根据这个文件的配置启动相应的选项。 修改pexlinux.cfg/default内容如下: default linux prompt 1 timeout 10 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label linux kernel vmlinuz append ks=nfs:192.168.0.113:/centosinstall/ks.cfg ksdevice=ens33 initrd=initrd.img 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 –
解析:192.168.0.113是kickstart服务器,/centosinstall 是nfs共享linux镜像的目录,也是linux存放安装文件的路径,ks.cfg是kickstart主配置文件;设置timeout 10 /*超时时间为10S */;ksdevice=etho代表当我们有多块网卡的时候,要实现自动化需要设置从ens33安装。
TFTP配置完毕,由于是TFTP是非独立服务,需要依赖xinetd服务来启动,启动命令为:
chkconfig tftp --level 35 on && service xinetd restart
3) NFS+KICKSTART配置
远程系统安装,客户端需要下载系统所需的软件包,所以需要使用NFS或者httpd把镜像文件共享出来。
mkdir -p /centosinstall nohup cp -rf /mnt/* /centosinstall & echo “/centosinstall *(rw,sync)” >>/etc/exports
在NFS配置文件/etc/exports中加入如上语句:/centosinstall *(rw,sync),表示允许任何主机访问/centosinstall目录,有读写权限。
配置kickstart,可以使用system-kickstart系统软件包来配置,也可以直接拷贝/root/目录下anaconda-ks.cfg 重命名为ks.cfg,并把ks.cfg拷贝至刚共享的/centosinstall目录下,赋权限为chmod 777 ks.cfg
如下我这里采用配置文件内容如下:vi ks.cfg
# Kickstart file automatically generated by anaconda. install text nfs --server=192.168.0.79 --dir=/centosinstall key --skip lang zh_CN.UTF-8 keyboard us network --device eth0 --bootproto=dhcp --noipv6 rootpw 123456 firewall --disabled authconfig --enableshadow --enablemd5 selinux --disabled timezone Asia/Shanghai bootloader --location=mbr --driveorder=sda --append="rhgb quiet" zerombr clearpart --all --initlabel part /boot --fstype ext3 --size=200 part swap --size=4000 part / --fstype ext3 --size=80000 part /data --fstype ext3 --size=200--grow reboot %packages @base @core @chinese-support
第一步install,以text字符界面,指定nfs共享IP和目录,设置安装后的服务器字符集、网络分配方式、密码;
然后设置防火墙状态,磁盘采用MBR方式引导,然后客户机分区的情况;%packages
后写入客户机系统需要安装的软件包,可以自己定制。更多详细的参数在此就不做过多的说明了,可以进一步学习。
4)在真实环境中,通常我们会发现一台服务器好几块硬盘,做完raid,整个硬盘有等10T,如果来使用kickstart自动安装并分区呢;一般服务器硬盘超过2T,如何来使用kickstart安装配置呢?这里就不能使用MBR方式来分区,需要采用GPT格式来引导并分区。
需要在ks.cfg末尾添加如下命令来实现需求:
%pre
parted -s /dev/sdb
mklabel gpt
%end
为了实现kickstart安装完系统后,自动初始化系统等等工作,我们可以在系统安装完后,自动执行定制的脚本,需要在ks.cfg末尾加入如下配置:
%post
mount -t nfs 192.168.0.79:/centos/init /mnt
cd /mnt/ ;/bin/sh auto_init.sh
%end
5) DHCP配置及测试
Pxe+kickstart自动安装系统,需要用到DHCP分配的客户端的IP地址,这里直接上dhcpd.conf配置文件:
ddns-update-style interim;
ignore client-updates;
next-server 192.168.0.79;
filename "pxelinux.0";
allow booting;
allow bootp;
subnet 192.168.0.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.0.100 192.168.0.200;
host ns {
hardware ethernet 00:1a:a0:2b:38:81;
fixed-address 192.168.0.101;}
}
最后重启所有服务,并关闭iptables和selinux,然后找一台新服务器,接入网线与kickstart服务器在一个交换机或通过中继能获取到IP的网络即可。
service xinetd restart
service nfs restart
service dhcpd restart
真实环境需要注意,新服务器跟kickstart最后独立在一个网络,不要跟办公环境或者服务器机房网络混在一起,如果别的机器以网卡就会把它的系统重装成Linux系统。