1.PXE原理及流程

    严格来说,PXE 并不是一种安装方式,而是一种引导的方式。当计算机引导时,BIOS把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。

    流程:支持PXE的电脑开机(预先打开网卡PXE功能,网络引导)---> DHCP给该电脑一个IP地址,并指明下一跳tftp文件服务器 ---> 服务器去tftp服务器上(/tftpboot 文件夹下面)下载到一个叫做pxelinux.0的文件,并拿到pxelinux.cfg文件夹下的default配置文件 ---> 根据该配置文件加载内核等操作,同时该配置文件中可以指明ks.cfg文件的地址,这样实现全程无人化安装!

2.PXE+Kickstart所需要安装的服务及其作用

    DHCP:为PXE客户端配置网络并指明tftp服务器的地址;

    TFTP:为PXE客户端提供系统启动所需文件;

    文件服务器:为客户端提供系统安装所需要文件,如FTP、NFS、HTTP等;

3.安装配置DHCP服务

yum install dhcp -y
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  /etc/dhcp/dhcpd.conf

修改/etc/dhcp/dhcpd.conf配置文件为一下内容:

ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
subnet 192.168.202.0 netmask 255.255.255.0 {
        option routers                  192.168.202.2;
        option subnet-mask              255.255.255.0;
        option domain-name-servers      192.168.202.2;
        option time-offset              -18000; # Eastern Standard Time
        range dynamic-bootp 192.168.202.60 192.168.202.100;
        default-lease-time 21600;
        max-lease-time 43200;
        next-server 192.168.202.129;    #指定tftp server服务器的地址
        filename "pxelinux.0";    #指定Bootstrap文件
}

启动DHCP服务并添加开机自启动:

service dhcpd start
chkconfig dhcpd on

4.安装配置tftp服务

yum install tftp* -y

修改/etc/xinetd.d/tftp配置文件如下:

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no    #将yes改为no即可
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

启动tftp服务并添加开机自启动:

service xinetd start
chkconfig xinetd on

5.设置PXE启动文件

安装syslinux获取PXE引导安装主程序文件pxelinux.0:

yum install syslinux -y
cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot

挂载镜像文件并辅助PXE启动文件:

mount /dev/cdrom /mnt    #挂载镜像文件
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #开机引导菜单
cp /mnt/p_w_picpaths/pxeboot/initrd.img /var/lib/tftpboot/
cp /mnt/p_w_picpaths/pxeboot/vmlinuz /var/lib/tftpboot/
cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot #图形化安装菜单

修改/var/lib/tftpboot/pxelinux.cfg/default文件:

#default vesamenu.c32
default ks    #更改默认启动的是label ks标记的内核
prompt 1    #显示'boot:'提示符,为0时不显示,直接启动default参数指定的内容
timeout 600    #设置超时时间

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.5!
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
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label ks
  kernel vmlinuz
  append ks=ftp://192.168.202.129/pub/ks/ks.cfg initrd=initrd.img
      #告诉系统从哪里获取ks文件
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

注意:如果ISO镜像文件直接通过解压复制到系统中,安装过程中将会出现以下错误:

Unable to read package metadata, This may be due ro a missing repodata directory.Please ensure that your install tree has bee correctly generated.

出现这个错误的主要原因是repodata文件夹下的那些文件缺少扩展名,所以必须使用UltraISO等专业工具提取iso镜像文件内容。

6.安装配置FTP服务

yum install vsftpd -y

拷贝系统安装镜像文件到文件服务器:

cp -rf /mnt/* /var/ftp/pub

注意:iso镜像文件也可以在windows中用UltraISO等工具提取文件在复制到文件服务器中来。

启动ftp服务器并添加开机自启动:

service vsftpd start
chkconfig vsftpd on

7.生成ks文件

安装system-config-kickstart软件包:

yum install system-config-kickstart -y
system-config-kickstart &> /dev/null &    #开始进行图形化配置

配置完成后将ks.cfg文件保存至/var/lib/tftpboot/pxelinux.cfg/default文件中指定的ks文件路径下。

注:system-config-kickstart界面不支持LVM的创建,如果需要创建LVM,可以直接手动编辑生成的配置文件。

8.测试无人值守方式安装系统

配置一台新的虚拟机,修改BIOS设置为从网络启动系统即可。

参考资料:

http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html

http://jiechao2012.blog.51cto.com/3251753/1153353

http://instance.iteye.com/blog/1687413

http://blog.csdn.net/Andy_YF/article/details/7749282

http://www.linuxidc.com/Linux/2013-07/87456p2.htm

http://petmaster.blog.51cto.com/5408825/1668940

http://cwtea.blog.51cto.com/4500217/834991/