要求:无人执守安装100台web服务器,10台sql服务器,10台DNS   服务器和80台最小化安装
1、安装kickstart相关服务tftp-server、dhcp、tftp、syslinux、nfs-utils、xinetd
   yum -y install dhcp tftp-server tftp xinetd syslinux nfs-utils
2、配置dhcpd.conf文件:
   rsync -av /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
   修改后如下
   ddns-update-style interim;
   ignore client-updates;
   next-server 192.168.0.1;
   filename "pxelinux.0";
   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;
   # option nis-domain  "domain.org";
   # option domain-name  "domain.org";
   # option domain-name-servers 192.168.1.1;
 option time-offset  -18000; # Eastern Standard Time
   # option ntp-servers  192.168.1.1;
   # option netbios-name-servers 192.168.1.1;
   # --- Selects point-to-point node (default is hybrid). Don't change this    unless
   # -- you understand Netbios very well
   # option netbios-node-type 2;
 range dynamic-bootp 192.168.0.2 192.168.0.201;
 default-lease-time 21600;
 max-lease-time 43200;
 # we want the nameserver to appear at a fixed address
 host ns {
  next-server marvin.redhat.com;
  hardware ethernet 12:34:56:78:AB:CD;
  fixed-address 207.175.42.254;
  }
    }
3、配置tftp-server:
   修改/etc/xinetd.d/tftp配置文件中的disable=yes为no
4、pxelinux.0文件在安装syslinux后会生成,做如下改动
   rpm -ql syslinux | grep pxelinux.0
   rsync -av /usr/lib/syslinux/pxelinux.0 /tftpboot/
5、挂载光盘,并生成文件
   mount -o loop /root/RedHat5-U3-i386-bin-DVD.iso /mnt
   拷贝内核文件vmlinuz以及根文件系统initrd.img到/tftpboot
   rsync -av /mnt/images/pxeboot/ /tftpboot/
   mkdir -p /tftpboot/pxelinux.cfg
   touch /tftpboot/pxelinux.cfg/default
   修改defaule文件如下:
   default linux
   prompt  0
   label   linux
   kernel  vmlinuz
   append  ks=nfs:10.1.1.250:/netinstall/ks.cfg initrd=initrd.img
   也可以复制/mnt/isolinux/isolinux.cfg成default,然后进行修改。
   rsync -av /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
6、配置nfs网络安装
   mkdir -p /netinstall
   安装nfs服务,并将/netinstall发布出去
   修改/etc/exports
   /mnt      *(ro,async)
   /netinstall   *(ro,async)
   依次启动服务
   /etc/init.d/portmap start
   /etc/init.d/nfslock start
   /etc/init.d/nfs start
   用showmount -e检查是否发布
7、拷贝ks.cfg文件
   root家目录的anaconda-ks.cfg拷贝到/netinstall中重命名 与/tftpboot/pxelinux.cfg/default中设置的路径相同
   简单的ks.cfg文件配置如下:
   install
   text
   nfs --server=192.168.0.1 --dir=/mnt
   key --skip
   lang en_US.UTF-8
   keyboard us
   network --device eth0 --bootproto dhcp --onboot=on
   rootpw 123456
   firewall --disabled
   authconfig --enableshadow --enablemd5
   selinux --disabled
   timezone Asia/Shanghai
   bootloader --location=mbr --driveorder=hda --append="rhgb quiet"
   zerombr
   clearpart --all --drives=hda --initlabel
   part / --fstype ext3 --size=1 --grow
   part swap --size=1000
   %packages
   @base
   @core
   sysstat
8、相应的无人执守安装会完成,但想要不同配置的服务器安装相应的服务还需做一些配   置
   由于多个客户端可以从一个PXE服务器引导,PXE引导映像使用了一个复杂的配置文件   搜索方式来查找针对客户机的配置文件。如果客户机的网卡的MAC地址   为'''88:99:AA:BB:CC:DD''',对应的IP地址为192.168.1.195,那么客户机首先尝试   以MAC地址为文件名匹配的配置文件,如果不存在就以IP地址来查找。根据上述环境    对这台主机要查找的以一个配置文件就是 /tftpboot/pxelinux.cfg/01-88-99-aa-   bb-cc-dd。如果该文件不存在,就会根据IP地址来查找配置文件了,这个算法更复杂    些,PXE映像查找会根据IP地址16进制命名的客户机配置文件。例如:   192.168.1.195对应的16进制的形式为C0A801C3。(可以通过syslinux软件包提供的   gethostip命令将10进制的IP转换为16进制)
   如果C0A801C3文件不存在,就尝试查找C0A801C文件,如果C0A801C也不存在,那么就   尝试C0A801文件,依次类推,直到查找C文件,如果C也不存在的话,那么最后尝试   default文件。
   总体来说,pxelinux 搜索的文件的顺序是:
   /tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd
   /tftpboot/pxelinux.cfg/ C0A801C3
   /tftpboot/pxelinux.cfg/ C0A801C
   /tftpboot/pxelinux.cfg/ C0A801
   /tftpboot/pxelinux.cfg/ C0A80
   /tftpboot/pxelinux.cfg/ C0A8
   /tftpboot/pxelinux.cfg/ C0A
    /tftpboot/pxelinux.cfg/ C0
   /tftpboot/pxelinux.cfg/C
   /tftpboot/pxelinux.cfg/default
   根据上述原理,可以根据实际的需求来通过脚本建立文件,并使用标准输出重定向对   生成的文件进行修改(要求无人执守安装100台web服务器,10台sql服务器,10台DNS   服务器和80台最小化安装)
   脚本内容如下(命名为ip.sh):
   #!/bin/sh
   for i in `seq 2 101`;do echo `gethostip -x 192.168.0.${i}`;done > webip
   for j in `more webip`;do more web > ${j};done
   for i in `seq 102 111`;do echo `gethostip -x 192.168.0.${i}`;done > sqlip
   for j in `more sqlip`;do more sql > ${j};done
   for i in `seq 112 121`;do echo `gethostip -x 192.168.0.${i}`;done > dnsip
   for j in `more dnsip`;do more nds > ${j};done
   for i in `seq 122 201`;do echo `gethostip -x 192.168.0.${i}`;done >    otherip
   for j in `more otherip`;do more other > ${j};done
   分别生成了16进制的IP地址文件,并修改相应的内容
   在netinstall中生成ks.cfg文件nds-ks.cfg  sql-ks.cfg web-ks.cfg other-ks.cfg
   定制包安装为:(根据需要添加或删除相应的安装包)
   @base
   @core
   @editors
   @text-internet
   @dns-server
   sysstat
9、复制ip.sh到/tftproot/pxelinux.cfg目录,并进入目录,在当前目录执行ip.sh脚本
10、查看生成的文件
11、修改dhcpd.conf中的地址池为192.168.0.2 192.168.0.201
12、启动同网中的服务器(已设置为网络启动)
    本人虚拟机中经过测试通过
 
     附有相关的配置文件和脚本文件