virtualbox采用vsftpd+tftp+dhcp+kickstart
一、系统环境
      IP 地址: 192.168.210.2
      操作系统:  Centos 6.7.i386
      主  机 名:  kickstart


二、安装和配置所需服务的程序:
1、[root@kickstart ~]# mount /dev/cdrom /var/ftp/pub                            #挂载系统光盘;
     [root@kickstart ~]# vim /etc/yum.repos.d/CentOS-Base.repo          #系统原有的yum源全部注释了即可,sed -i 's/^/#/g'  CentOS-Base.repo后再添加本地安装包参数配置:                                                                                                 [base]
     name=CentOS-$releasever - Base                                            #仓库名称;          
     baseurl=file:///var/ftp/pub                                                           #修改光盘挂载点;
     enable=1
     gpgcheck=1                                                                            #是否检查GPG,一种秘钥方式签名;
     gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6     #GPG公钥存放位置;
     [root@kickstall ~]# yum -y clean all                                                #清除yum缓存;     

2、将光盘内容挂载去/var/ftp/pub下
          mkdir /var/ftp/pub                                             #存放挂载的光盘内容,不用更改/var/ftp的权限,不然导致anonymous获取不了资源
          mount /dev/cdrom1  /var/ftp/pub/

3. 安装PXE所需服务;
dhcp:             分配给客户端提供的IP地址;
tftp-server:     tftp服务器端, 提供系统安装所需文件;
xinetd:            tftp服务超级守护进程, 用于唤醒tftp服务;
vsftpd:            基于ftp服务提供安装源;
syslinux:         提供pxelinux.0文件, 此文件用于引导系统, 相当于bootloader;
[root@kickstart ~]# yum -y install dhcp tftp-server xinetd syslinux vsftpd  ftp        

4、配置dhcp服务和tftp服务;
dhcp服务的配置文件默认是/etc/dhcp/dhcpd.conf, 但此文件默认是没任何配置的, 此服务提供了一个参考文件/usr/share/doc/dhcp*/dhcpd.conf.sample,复制此文件覆盖原配置文件, 直接修改即可。
[root@PXE ~]# vim /etc/dhcp/dhcpd.conf                      #dhcp服务配置
==================================================== 
subnet 192.168.210.0 netmask 255.255.255.0 {                 #提供dhcp服务的网段;
  range 192.168.210.3 192.168.210.5;                               #地址池;
#option domain-name "internal.example.org";                #分配dns域,由于只是虚拟机上的搭建,注释吧
  option routers 192.168.210.1;                                         #网关;
  next-server 192.168.210.2;                                              #tftp服务器地址;
  filename "pxelinux.0";                                                     #PXE引导文件;
  default-lease-time 600;                                                  #默认租约时长;
  max-lease-time 7200;                                                    #最大租约时长;

  option domain-name-servers 192.168.210.1;         #分配dns地址,一般是写真实dns地址,家中的路由器开启了自动获取,所以virtualbox使用了host-only的网络;
}
将/etc/xinetd.d/tftp里disable的值原为yes改成 no
==================================================== 
[root@kickstart ~]# service dhcpd configtest                         #测试配置dhcp语法是否有误;
Syntax: OK
[root@kickstart ~]# service dhcpd start                                  #启动dhcp服务;
Starting dhcpd: [  OK  ]
[root@kickstart ~]# chkconfig dhcpd on                                #将dhcp服务设置开启自启;
[root@kickstart ~]# service vsftpd configtest                         #测试配置dhcp语法是否有误;
Syntax: OK
[root@kickstart ~]# service vsftpd start                                  #启动dhcp服务;
Starting dhcpd: [  OK  ]
[root@kickstart ~]# chkconfig vsftpd on                                #将dhcp服务设置开启自启;
[root@kickstart ~]# service xinetd configtest                         #测试配置xinetd语法是否有误;
Syntax: OK
[root@kickstart ~]# service xinetd start                                  #启动xinetd服务;
Starting dhcpd: [  OK  ]
[root@kickstart ~]# chkconfig xinetd on                                #将xinetd服务设置开启自启;

5、复制kickstart所需文件:

[root@kickstart ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@kickstart ~]# cp /var/ftp/pub/p_w_picpaths/pxeboot/{vmlinuz,initrd.img}  /var/lib/tftpboot/
[root@kickstart ~]# cp /var/ftp/pub/isolinux/{boot.msg,splash.jpg,vesamenu.c32}    /var/lib/tftpboot/
[root@kickstart ~]# cp /var/ftp/pub/isolinux/isolinux.cfg   /var/lib/tftpboot/pxelinux.cfg/default
[root@kickstart ~]# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
[root@kickstart ~]# ls /var/lib/tftpboot/
boot.msg     pxelinux.0          splash.jpg      vmlinuz
initrd.img     pxelinux.cfg          vesamenu.c32


提供kickstart文件
kickstart文件可以自己创建(需安装system-config-kickstart.noarch工具,,由于要安装太多依赖包,我不采取这一步), 复制系统文件直接修改(此文件/root/anaconda-ks.cfg)。
[root@kickstart ~]# cp anaconda-ks.cfg /var/ftp/kickstart/ks.cfg
[root@kickstart ~]# vim /var/ftp/kickstart/ks.cfg
================重新修改如下=================== 
# Kickstart file automatically generated by anaconda.


#version=DEVEL
#Firewall configuration
firewall --disabled
# Install OS insread of Upgrade
install
# Use network installation
url --url=ftp://192.168.210.2/pub
#repo --name="Centos" --baseurl=ftp://192.168.210.2/pub --cost=100
# Root password
rootpw 123456
# System keyboard
keyboard us
# System language
lang zh_CN.UTF-8
# Network information
network --onboot yes --device eth0 --bootproto dhcp --noipv6
#authconfig --enable shadow --passalgo=sha512
# System keyboard
keyboard us
#SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  --isUtc Asia/Shanghai
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
key --skip
bootloader --append="rhgb quiet" --location=mbr --driveorder=sda
#bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# Clear the Master Boot Record
zerombr                                                             #这个是自动选择最小化安装的提示初始化硬盘这一步,很关键的设置,不然会卡在初始化硬盘的界面
# Partition clearing information
#clearpart --drives=sda,sdb,sdc,sdd --initlabel
clearpart --initlabel --all --drives=sda                    #这个是自动选择最小化安装的提示初始化硬盘这一步,很关键的设置,不然会卡在初始化硬盘的界面
# Disk partitioning information
part    /boot    --fstype="ext4"    --size=500    --ondrive=sda
part    /        --fstype="ext4"    --size=13000  --ondrive=sda
part    swap    --size=1024      --ondrive=sda
part    /home   --fstype="ext4"       --size=6000    --ondrive=sda



#logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=10000 --maxsize=10000
#logvol swap --name=lv_swap --vgname=VolGroup --grow --size=1152 --maxsize=1152
#part / --fstype="ext4" --grow --size=1
#part swap --size=1024
#part /boot --fstype=ext4 --size=500
#part pv.008002 --grow --size=1

#repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

%packages --nobase
@core
@chinese-support
reboot
%end

==================================================== 
为了启动时能够加载kickstart文件, 还需要修改/var/lib/tftpboot/pxelinux.cfg/default文件, 添加ks文件的位置。
[root@PXE ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
==================================================== 
default linux                  #加载下面第一个linux的lable配置
#prompt 1
timeout 50               #原来是600秒,要是等待开始安装需要几分钟时间


display boot.msg


menu background splash.jpg
menu title Welcome to CentOS 6.7!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000


label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=ftp://192.168.210.2/kickstart/ks.cfg      ##指定ks文件;

还有下面几个label用不上,所以省略掉

kickstart主服务器和需要新装的机器,以virtualbox为例,是家里的网络:
主需要将光驱挂载,网络设置和新机器的一样

pxe自动化安装_第1张图片新装机器:

pxe自动化安装_第2张图片

这样的启动设置,是因为避免完成安装又再进入pxe来自动安装

pxe自动化安装_第3张图片[root@kickstart ~]# tail /var/log/messages
Feb 21 13:55:49 kickstart dhcpd: DHCPDISCOVER from 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:50 kickstart dhcpd: DHCPOFFER on 192.168.210.4 to 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:50 kickstart dhcpd: DHCPREQUEST for 192.168.210.4 (192.168.210.2) from 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:50 kickstart dhcpd: DHCPACK on 192.168.210.4 to 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:56 kickstart dhcpd: DHCPDISCOVER from 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:56 kickstart dhcpd: DHCPOFFER on 192.168.210.4 to 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:56 kickstart dhcpd: DHCPREQUEST for 192.168.210.4 (192.168.210.2) from 08:00:27:ce:d1:f6 via eth0
Feb 21 13:55:56 kickstart dhcpd: DHCPACK on 192.168.210.4 to 08:00:27:ce:d1:f6 via eth0
Feb 21 14:00:53 kickstart dhcpd: DHCPREQUEST for 192.168.210.4 from 08:00:27:ce:d1:f6 via eth0
Feb 21 14:00:53 kickstart dhcpd: DHCPACK on 192.168.210.4 to 08:00:27:ce:d1:f6 via eth0

pxe自动化安装_第4张图片

pxe自动化安装_第5张图片

等待安装结束即可