一、PXE简介

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。


简单来讲,配置好一台安装服务器,就可以利用PXE进行批量安装系统,可以极大得提高安装部署效率,本文主要详细介绍linux系统的批量安装,这里仅以CentOS 6举例。


二、部署思路

     总共四台机器,一台机器需要我们手动配置成安装服务器,另外三台机器使用PXE进行批量安装。需要准备CentOS 6的安装光盘镜像,如果没有联网的话,还需要自行搭建本地yum源。首先我们的安装服务器需要配置DHCP服务给客户端分配地址,客户端获取地址后,通过TFTP下载配置文件、初始化镜像等,然后根据配置文件,通过HTTP或者FTP下载安装镜像,进行自动安装。


三、服务配置

为简化操作,关闭selinux和防火墙


setenforce 0


service iptables stop


安装相关服务,如果采用ftp,可以将httpd替换成安装vsftp,后面配置vsftp就行了


yum install -y dhcp syslinux httpd tftp-server




配置DHCP


vi /etc/dhcp/dhcpd.conf




ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
subnet 192.168.11.0 netmask 255.255.255.0 {      //配置子网
  range 192.168.11.61 192.168.11.65;                  //设定地址池
  option routers 192.168.11.1;                        //设置客户端默认网关
  option subnet-mask 255.255.255.0;                  //设定子网掩码
  next-server 192.168.11.19;                        //指定tftp服务器地址
  filename "pxelinux.0";                     //指明PXE文件位置,这个在申请ip的时候会发送给安装主机
} 
host wh001 {                             //对指定主机分配指定IP地址,这样安装完成后,可以直接通过ssh进行远程管理
  hardware ethernet 00:0C:29:8E:4D:96;        //MAC地址          
  fixed-address 192.168.11.61;                  //设定IP
}
host wh002 {
  hardware ethernet 00:0C:29:C0:42:11;
  fixed-address 192.168.11.62;
}
host wh003 {
  hardware ethernet 00:0C:29:0F:12:1B;
  fixed-address 192.168.11.63;
}



service dhcpd start



设定HTTP(vsftp)


mkdir /mnt/iso1
mount /dev/sr0 /mnt/iso1      //挂载CentOS 6镜像到/mnt/iso1目录下
cp -rp /mnt/iso1 /var/www/html   //将CentOS 6安装文件拷贝到httpd的默认网站目录下,这样就可以直接访问镜像安装文件了
service httpd restart

如果安装的是vsftp的话,需要修改添加匿名用户的家目录:


vi /etc/vsftpd/vsftpd.conf


添加:


anon_root=/var/www/html/


service vsftpd restart




设定TFTP


vi /etc/xinetd.d/tftp


将下面两项值改成这样:


diable = no


server_args = -s /tftpboot


创建tftp服务目录,拷贝相关启动文件。


mkdir /tftpboot
cp /usr/share/syslinux/pxelinux.0	/tftpboot/
cp /usr/share/syslinux/chain.c32	/tftpboot/
cp /usr/share/syslinux/mboot.c32	/tftpboot/
cp /usr/share/syslinux/memdisk	    /tftpboot/
cp /usr/share/syslinux/menu.c32	    /tftpboot/
cp /var/www/html/iso1/images/pxeboot/vmlinuz	    /tftpboot/
cp /var/www/html/iso1/images/pxeboot/initrd.img	        /tftpboot/
service xinetd restart

配置ks#.cfg文件


又称Kickstart文件,主要用于Linux系统的自动化安装,这个文件简单说就是安装配置文件,决定了硬盘如何分区、密码设置、服务、安装脚本等等重要信息。root目录下就有一个ks.cfg文件,我们直接对其修改就行。


cd /var/www/html
cp /root/anaconda-ks.cfg ksdir/ks6.cfg
chmod +r ksdir/ks6.cfg    centos 6的kickstart文件
vim ksdir/ks6.cfg

ks6.cfg具体内容:

#version=DEVEL
install                        //设定是进行安装操作
text                           //基于字符界面安装
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6   //配置网卡
rootpw  123456                        //设定root密码,有个加密选项,--iscrpted,但我没有实验成功
firewall --service=ssh                      //打开防火墙,并开启ssh端口
url --url=http://192.168.11.19/iso1                //设定安装镜像源,如果用的是ftp就是ftp的地址
selinux --disabled                          //关闭selinux服务
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
zerombr                                 //清楚mbr
clearpart --all                          //清除所有分区
reboot                               //安装完成后重启
part /boot --fstype=ext4 --size=400       //设定boot分区大小
part swap  --size=4000                 //设定交换分区大小
part / --fstype=ext4 --grow --size=200       //设定/分区为剩下所有空间


%packages --nobase      //设定需要安装的组件,这里最小化安装,仅仅安装了核心
@core                 
%end
%pre                     //预安装脚本
%end
%post                    //后安装脚本
%end



设定PXE引导配置文件


mkdir /tftpboot/pxelinux.cfg


vi     /tftpboot/pxelinux.cfg/default


此文件定义的就是CentOS安装时首屏显示的内容。本例简单的配置如下:



default menu.c32
prompt 0
timeout 600                  //设定等待时间,单位0.1S
menu title PXE MENU


label LinuxOnHTTP
  menu label Install CentOS over http automatically    //设定标签显示内容
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.70.83/ksdir/ks6.cfg   //设定配置文件网络位置

四、最终效果

启动三台客户机后,客户机通过DHCP服务获取到IP地址,进行PXE菜单,等待设定的60秒后,自动进入第一个安装项,进行自动安装,安装完成后自动重启,重启完成后,可以直接通过指定的IP远程客户机,进行进一步的配置。


centos7 自动安装命令 centos7批量自动安装_centos7 自动安装命令


centos7 自动安装命令 centos7批量自动安装_centos6_02

centos7 自动安装命令 centos7批量自动安装_自动部署_03


centos7 自动安装命令 centos7批量自动安装_linux_04


centos7 自动安装命令 centos7批量自动安装_linux_05


centos7 自动安装命令 centos7批量自动安装_centos6_06


centos7 自动安装命令 centos7批量自动安装_centos6_07