服务器搭建环境:
server1:eth0:192.168.10.10/24 RHEL 5.8

一、安装必要的软件包
mount /dev/hdc /mnt/iso/
yum -y install vsftpd tftp tftp-server syslinux dhcp

二、配置DHCP服务器,注意1
echo 'ddns-update-style interim;
ignore client-updates;

allow booting;
allow bootp;

subnet 192.168.10.0 netmask 255.255.255.0 {

        option routers                  192.168.10.1;
        option subnet-mask              255.255.255.0;

        option domain-name-servers      8.8.8.8;

        option time-offset              -18000; # Eastern Standard Time

        range dynamic-bootp 192.168.10.128 192.168.10.254;
        default-lease-time 21600;
        max-lease-time 43200;
        next-server 192.168.10.10;
        filename "/pxelinux.0";
}' > /etc/dhcpd.conf
service dhcpd start
注2

三、配置tftp服务器
sed -i '/disable/s/=.*/= no/' /etc/xinetd.d/tftp
service xinetd start
service vsftpd start

四、复制和编辑pxe启动的文件(位于tftp服务器目录下)
cp /usr/lib/syslinux/pxelinux.0 /tftpboot/

echo '--To boot from local, type local

--To install RHEL 5.8, type rhel5

' > /tftpboot/boot.msg

cp /mnt/iso/images/pxeboot/initrd.img /tftpboot/initrd_rhel5_x86.img
cp /mnt/iso/images/pxeboot/vmlinuz /tftpboot/vmlinuz_rhel5_x86
mkdir /tftpboot/pxelinux.cfg

echo 'default local
display boot.msg
prompt 1
timeout 30
label local
localhost 0
label rhel5
kernel vmlinuz_rhel5_x86
append initrd=initrd_rhel5_x86.img devfs=nomount ramdisk=9216 text ks=ftp://192.168.10.10/pxe/rhel5.8/ks.cfg ksdecive=eth0' > /tftpboot/pxelinux.cfg/default

五、复制和编辑pxe的安装源(位于vsftp服务器目录下)
mkdir -p /var/ftp/pxe/rhel5.8
cp -rf /mnt/iso/* /var/ftp/pxe/rhel5.8/

echo '# Kickstart file automatically generated by anaconda.

install
url --url ftp://anonymous:@192.168.10.10/pxe/rhel5.8
key --skip
lang zh_CN.UTF-8
keyboard us
text
network --device eth0 --onboot yes --bootproto dhcp --hostname client.vicp.net
rootpw --iscrypted $1$sGFG3X5A$HoZCgkUnGIqleVD1wan.e1
firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --linux
part /boot --fstype ext3 --size=100
#part swap --size=512
part / --fstype ext3 --size=6005
reboot
%packages
@british-support
@chinese-support
@core
sgpio' > /var/ftp/pxe/rhel5.8/ks.cfg

注3

全篇完



在同一网段中启动一台新主机,只要输入rhel5就可以自动完成系统的安装了。如果硬盘没有初始化,系统会提示,只要按个回车即可。
root的初始密码为123456

注1:
本例是在虚拟机上测试的,在生产环境中我也是调试完机器再接入网络的。
如果是在生产环境中会遇到Windows和Linux并存的环境,Windows域必定会存在自己的DHCP服务器,有可能会和Linux的DHCP产生冲突(到底会不会有影响,有什么影响,笔者也没试过,也不敢试),因此笔者建议将PXE服务器放在调试环境中,以免影响生产环境的网络。

注2:
DHCP服务器配置文件中下面几条是关键:
allow booting;
allow bootp;
next-server 192.168.10.10;  #指定tftp服务器
filename "/pxelinux.0";  #指定启动文件名,虽然是以/开头,但实际上是相对路径,表示“/tftpboot/pxelinux.0”

注3:
/var/ftp/pxe/rhel5.8/ks.cfg文件的内容怎么来的?如何编辑?
这文件是手工安装系统后在root目录下的anaconda-ks.cfg文件拷贝过来进行简单的修改得来的。
要修改哪些内容,读者可以和我的例子对比一下就明白了。文件里包含了root的初始密码(我的初始密码是123456),记得安装完以后要改密码呀!