一、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远程客户机,进行进一步的配置。