参考了51cto博客各路大神的文章,结合自己实践过程,虽中间经历了些困难挫折,最终还是成功完成配置,实现了自动化安装linux。

(重点参考灰度的BLOG, http://rrliang.blog.51cto.com/4214966/1040863)

安装环境,虚拟机VirtualBox虚拟2台机器,一台做kickstart服务器,一台做客户端

服务器系统为CentOS 6.3 X86_64, 安装光盘为CentOS 6.3 X86_64 DVD

网卡全部配置为“内部网络”

 

 首先,需要用到的服务有,dhcpd, httpd, xinetd, tftp, 用yum 依次安装。

 vim /etc/xinetd.d/tftp 修改tftp的守护进程配置文件,红色部分为修改的地方,

 
    
    
    
    
  1. service tftp  
  2. {  
  3.         disable                 = no  
  4.         socket_type             = dgram  
  5.         protocol                = udp  
  6.         wait                    = yes  
  7.         user                    = root  
  8.         server                  = /usr/sbin/in.tftpd  
  9.         server_args             = -u nobody -s /tftpboot  
  10.         per_source              = 11  
  11.         cps                     = 100 2  
  12.         flags                   = IPv4  
  13. }  
vim /etc/dhcp/dhcpd.conf 修改dhcp配置文件
 
     
     
     
     
  1. ddns-update-style interim; 
  2.  
  3. allow booting; 
  4. allow bootp; 
  5. ignore client-updates; 
  6. set vendorclass = option vendor-class-identifier; 
  7. subnet 192.168.0.0 netmask 255.255.255.0 { 
  8.      option routers          192.168.0.1; 
  9.      option subnet-mask         255.255.255.0; 
  10.      range dynamic-bootp        192.168.0.10 192.168.0.50; 
  11.      filename                "/pxelinux.0"; 
  12.      default-lease-time         21600; 
  13.      max-lease-time             43200; 
  14.      next-server           192.168.0.1; 
     
     
     
     
  1. 简单介绍:  
  2.  Option routers指定网关;     
  3.  Option domain-name-server指定DNS服务器;      
  4.  Option subnet-mask指定掩码;      
  5.  range dynamic-bootp指定分配给客户端的IP地址段;      
  6.  Filename 指定启动镜像;      
  7.  Next-server 指定TFTP服务器。 
服务器的网卡ifcfg-eth0配置为静态IP:192.168.0.1, 子网掩码255.255.255.0, 网关192.168.0.1
 
设置开机启动服务,
chkconfig xinetd on
chkconfig dhcpd on
chkconfig httpd on
 
依次启动服务
service xinetd start
service dhcpd start
service httpd start
 
注意要关掉防火墙,selinux 设为permissive, 不然会导致PXE加载失败
 
挂载linux安装盘, mkdir -p /mnt/iso,  mount -o loop /dev/dvd /mnt/iso, 
cp /mnt/iso/* /var/www/html, 将光盘内容全部复制到html根目录(采用httpd方式安装),
创建目录/tftpboot, 将Linux安装程序的内核、根文件系统文件及其他文件复制到tftp的根目录中,
 
罗列下/tftpboot目录下大概会用到的文件,
initrd.img (文件,从光盘/mnt/iso/isolinux/目录拷贝)
pxelinux.0(文件,从/usr/share/syslinux目录拷贝,若无,则须安装syslinux)
pxelinux.cfg(目录,自建,里面存放名为default的文件,该文件从/mnt/iso/isolinux/isolinux.cfg复制并改名为default)
vmlinuz (文件,从/mnt/iso/isolinux/目录拷贝)
vesamenu.c32 (文件,从 /mnt/iso/isolinux/目录拷贝
 
注意权限, chmod +x /tftpboot/pxelinux.cfg/default
 
若要图形化配置kickstart, 则需安装system-config-kickstart,图形化操作较简便,未详述,
若要文本配置kickstart,则要配置ks.cfg文件,
复制/root/anaconda-ks.cfg文件方式:Red Hat操作系统,在系统安装完成后,会自动在root家目录下创建一个anaconda-ks.cfg文件,这个文件真实的记录了系统安装过程中的配置。我们可以复制这个文件,然后在其基础上进行配置
cp anaconda-ks.cfg /var/ww/html/ks.cfg 
chmod +r /var/www/html/ks.cfg 
 
【ks.cfg配置文件的内容】
 
      
      
      
      
  1. # Kickstart file automatically generated by anaconda.       
  2. #version=DEVEL      
  3. Install             
  4. url --url=http://192.168.0.1/ 
  5. lang en_US.UTF-8    
  6. keyboard us    
  7. text    
  8. key –skip     #红帽的序列号,如果有则写,没有则跳过。注:有些版本的系统会忽略这个,而有些则需要你明确定义跳过该步骤。 否则会影响自动化安装。    
  9. network –bootproto=dhcp --device=eth0   --onboot=on      
  10. rootpw  --iscrypted $1$AbMG5lMV$wpNs2yKuFbz4iev/  #为root用户设密码,明文也行。     
  11. # Reboot after installation       
  12. reboot    
  13. firewall --disabled       
  14. authconfig --useshadow  --passalgo=sha512       
  15. selinux --disabled    
  16. timezone Asia/Shanghai       
  17. bootloader --location=mbr --driveorder=sda   
  18.     
  19. # The following is the partition information you requested       
  20. # Note that any partitions you deleted are not expressed    
  21. # here so unless you clear all partitions first, this is       
  22. not guaranteed to work    
  23.     
  24. clearpart --all --initlabel    
  25.         
  26. part /boot --fstype=ext4 --size=500       
  27. part swap  --size=2048       
  28. part /     --fstype=ext4 --grow --size=2     #--grow表示将剩余的所有磁盘空间分配给根分区    
  29.    
  30.   
  31. #逻辑卷分区创建实例    
  32.     
  33. part /boot –fstype=ext4 –size=500        #因为系统启动时无法识别lvm分区表,所以需要为/boot单独分区。      
  34. part pv.01 --grow --size=1       
  35. volgroup vg0 pv.01    
  36. logvol swap       --fstype=swap  --name=swap   --vgname=vg0  --size=1024    
  37. logvol /          --fstype=ext4  --name=root   --vgname=vg0  --size=5120       
  38. logvol /tmp       --fstype=ext4  --name=tmp    --vgname=vg0  --size=5120       
  39. logvol /home      --fstype=ext4  --name=home   --vgname=vg0  --size=5120    
  40. logvol /usr/local --fstype=ext4  --name=local  --vgname=vg0  --size=10240    
  41.      
  42. %packages     
  43. @Base    
  44. @Core     
  45. @base     
  46. @client-mgmt-tools    
  47. @debugging     
  48. @emacs    
  49. @ftp-server     
  50. @hardware-monitoring    
  51. @large-systems    
  52. @network-file-system-client    
  53.         
  54. %end    
  最后再在pxelinux.0的配置文件/tftpboot/pxelinux.cfg/default文件中指定kickstart文件即可。编辑/tftpboot/pxelinux.cfg/defalut文件,修改的内容我用红色进行标记,
 
      
      
      
      
  1. timeout 30 
  2. label linux   
  3.   menu label ^Install or upgrade an existing system  
  4.   menu default   
  5.   kernel vmlinuz   
  6.   append initrdinitrd=initrd.img ks=http://192.168.0.1/ks.cfg  
 
配置完毕后,测试客户端PXE启动,成功引导并加载镜像自动安装!