一、什么是PXE

PXE(preboot execute environment)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用TFTPtrivial file transfer protocolMTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。 PXE可以引导多种操作系统,如:Windows 95/98/2000/xp/2003/vista/2008linux

二、KickStart+DHCP+NFS+TFTP+PXE的工作原理

无光软驱服务器通过PXE网卡启动,从dhcp服务器获取IP,通过tftp下载pxelinux.0文件找到pxelinux.cfg里的配置文件,按配置文件找着vmlinuz引导centos进入安装界面,之后选择NFS方式安装系统

首先:架设Linux网络安装服务器

1步:关闭iptablesSElinux
[root@Install ~]# chkconfig iptables off; service iptables stop
[root@Install ~]# setenforce 0

====================================================================
2步:搭建tftpdhcp服务器,并配置这两个服务器(PXE需要用到这两个)
#DHCP服务器需要安装:dhcp-3.0.5-21.el5.i386.rpm
#TFTP服务器需要安装:tftp-server-0.49-2.el5.centos.i386.rpm
[root@Install ~]# rpm ivh tftp-server-0.49-2.el5.centos

[root@Install ~]# rpm ivh dhcp-3.0.5-23.el5


#配置TFTP服务器(配置文件:/etc/xinetd.d/tftp
[root@Install ~]# vi /etc/xinetd.d/tftp
#只需要修改两个地方,如下
server_args         = -u nobody -s /tftpboot (指定tftp服务的根目录)
disable                 = no


#配置DHCP服务器(配置文件:/etc/dhcpd.conf
[root@Install ~]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
[root@Install ~]# vi /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
authourtative;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
       range 192.168.1.55 192.168.1.66;
       option routers 192.168.1.1;
       option subnet-mask 255.255.255.0;
       option domain-name-servers 192.168.1.100;
     option domain-name "33cn.com";
       option netbios-name-servers 192.168.1.100;
       option time-offset -18000;
       option broadcast-address 192.168.1.255;
       default-lease-time 6000;
       max-lease-time 11400;
next-server 192.168.1.100;
filename "pxelinux.0";
}
特别注意的是添加的filename这一项,这里的意思相当于指示启动文件的位置的一个标签,这里是指/tftpboot/pxelinux.0(就是tftp的主目录下)

另外需要指定next-server参数,告诉客户端在获取到 pxelinux.0 文件之后去哪里获取其余的启动文件,这里我把安装包文件放在了和启动文件相同的机器上。


=====================================================================

3步:创建一个目录,用于存放系统安装文件,并把光盘中的系统安装文件拷贝到该目录下
[root@Install ~]# mount /dev/cdrom /mnt

[root@Install ~]# mkdir   /disk
[root@Install ~]# cp -rf    /mnt/*     /disk/

====================================================================

4步:安装NFS服务器,并配置
#查看是否已经安装了NFS服务器需要的安装包
[root@Install ~]# rpm -qa | grep "nfs\|portmap"
#如果没有安装nfs相关的那些包,那么现在就安装它们
[root@Install ~]# rpm ivh tftp-server-0.49-2.el5.centos.i386.rpm

[root@Install ~]# rpm ivh portmap-4.0-65.2.2.1
[root@Install ~]# vi /etc/exports
/disk    *(ro,sync)    或者如下:

/disk   192.168.111.0/255.255.255.0(ro,syc)  (也可以把它共享给指定的网段)
[root@Install ~]# service nfs restart

[root@Install ~]# exportfs (输出NFS配置文件,检查是否生效)

====================================================================

5步:启动dhcpd服务、nfs服务、tftpd服务
################立即启动下面这些服务###################
[root@Install ~]# service dhcpd start
[root@Install ~]# service portmap start
[root@Install ~]# service nfs start
[root@Install ~]# chkconfig --level 345 tftp on
[root@Install ~]# service xinetd start


6步:ks.cfg配置:如果你的 “Linux网络安装服务器没有安装桌面环境,那么可以通过启动一台客户机从网络安装Linux来生成一个安装配置文件:ks.cfg,这种方式需要增加几条语句,才能实现自动化的安装(熟练者使用)

注意:本文使用的是这种方法来生成一个安装配置文件:ks.cfg

===================================================================

7步: 编辑ks.cfg安装配置文件,并使用NFS共享出该文件,由于之前已经共享了/disk目录了,只要把该文件放到该目录下即可(或者直接共享光盘镜像的方式为:/mnt
#将客户机上新生成的安装配置脚本文件(/root/anaconda-ks.cfg),重命名为ks.cfg,然后将其上传到 ”linux网络安装服务器上的/disk目录下,然后并共享出/disk目录
[root@Install ~]# cp   ks.cfg /disk
[root@Install ~]# exportfs -a; service nfs restart
[root@Install ~]# vi /disk/ks.cfg
# Kickstart file automatically generated by anaconda.
install
nfs --server=192.168.1.100 --dir=/disk
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$Fjy9Zn3F$TVdnSzmnBmh66outBemYi1
firewall --disabled
firstboot --disable
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Asia/Shanghai
bootloader--location=mbr--driveorder=sda --md5pass=$1$t.hy0XQB$2o4sTrilDhARD8cNKJKf1.
zerombr
clearpart --all --initlabel
text
part /boot --bytes-per-inode=4096 --fstype="ext3" --size=150
part swap --bytes-per-inode=4096 --fstype="swap" --size=512
part / --bytes-per-inode=4096 --fstype="ext3" --grow --size=1000
%packages
@base
@chinese-support
@core
@development-libs
@development-tools
@dialup
@editors
@printing
@text-internet
keyutils
trousers
fipscheck
device-mapper-multipath
imake

注意:比较重要的是下面这两行
nfs --server=NFS服务器的位置 --dir=光盘的位置 或 系统安装文件存放的位置
network --device eth0 --bootproto dhcp(使用DHCP来实现自动分配IP地址)

clearpart --all --initlabel #如果ks.cfg脚本中不添加该语句,将不能实现自动化安装

注意:ks.cfg文件权限,o+r,因为客户端要读取本文件。


===================================================================

8步:配置支持PXE,即:复制PXE启动时所需要的文件

1)复制必要的文件
#确保/tftp目录存在,如果不存在,手工创建它
[root@Install ~]# ls -d /tftpboot || make /tftpboot
[root@Install ~]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
注意:如果找不到syslinux目录与pxelinux.0文件,那么你就必须安装软件包:syslinux-3.11-4.i386.rpm
[root@Install ~]# mkdir /tftpboot/pxelinux.cfg
[root@Install ~]# cp /media/cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
[root@Install ~]# cp /media/cdrom/isolinux/* /tftpboot/
注意:最主要的是这两个文件:initrd.imgvmlinuz

2)修改PXE的引导配置文件:/tftpboot/pxelinux.cfg/default
[root@Install ~]# chmod u+w /tftpboot/pxelinux.cfg/default
[root@Install ~]# vi /tftpboot/pxelinux.cfg/default
default linux
prompt 1
timeout 10   #超时的时间改小点:10
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
kernel vmlinuz
#引导Linux时,加载kickstart安装配置脚本文件,实现自动安装
append ks=nfs:192.168.1.100:/disk/ks.cfg 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 -

3)然后再重启一下这些服务,确保它们正常工作
[root@Install ~]# service nfs restart
[root@Install ~]# service dhcpd restart
[root@Install ~]# service xinetd restart

===================================================================