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系统。