PXE就是预启动执行环境,是一种引导启动的方式。这种协议一般由两部分构成,一部分是服务器端,一个是客户端。简单来说,我们通过这种方式可以自己创建一个“安装源”,在安装系统的时候只要能找到这个“源”便可以实现系统的安装。在实现无人值守的安装前,我们必须要搭建一些服务,来实现“安装源”的建立,例如ftp、http、tftp、dhcp等。
1)客户机的网卡支持PXE协议,且主板支持网络引导,目前绝大多数服务器和PC都支持此项。
2)网络中有一台DHCP服务器,以便为客户机自动分配ip,指定引导文件位置
3)服务器通过TFTP(简单文件传输协议)提供引导镜像文件的下载。
PXE客户端通过网卡向局域网内发送ip请求,然后DHCP服务器会提供给给它一个ip地址和系统安装所需要的文件,接下使用接收到的文件进行系统安装。而安装的过程又需要其他服务器提供的资源,例如:yum源,内核文件等,当主机拿到这些资源,便可以顺利的安装了。最终结果是:任意一台主机在选着网络启动时会获取DHCP服务器分发的ip,通过通过获取到的ip地址与局域网内的TFTP服务器通信并获取启动文件,与FTP或者HTTP通信并获取yum源文件及内核文件等。之后开始自动安装,而这个过程不需要人在做任何操作。
服务器端要求:
安装源(系统盘文件);
TFTP服务;
DHCP服务;
Linux内核;
能够向客户机裸机发送PXE引导程序;
启动菜单及无人应答文件等。
客户端要求:
客户端的网卡支持PXE协议,且主板支持网络引导(现在多数都支持);
设置BIOS允许从Network或LAN启动;
这里挂载光盘配置yum源省略,直接安装ftp
yum install -y install vsftpd*
修改vsftp配置文件允许root和匿名用户登录
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
将黑白名单中的root用户删除,允许root登录ftp
vim /etc/vsftpd/user_list
vim /etc/vsftpd/ftpusers
开启vsftp服务
[root@localhost yum.repos.d]# systemctl start vsftpd #启动ftp服务
[root@localhost yum.repos.d]# systemctl enable vsftpd #设置为开机自启
将镜像cp到ftp路径
[root@localhost yum.repos.d]# mkdir /var/ftp/centos7
[root@localhost yum.repos.d]# cp -rf /mnt/cdrom/* /var/ftp/centos7/
安装tftp服务
[root@localhost yum.repos.d]# yum -y install tftp-server
编辑TFTP配置文件
[root@localhost yum.repos.d]# vim /etc/xinetd.d/tftp
[root@localhost yum.repos.d]# systemctl start tftp #启动TFTP服务
[root@localhost yum.repos.d]# systemctl enable tftp
[root@localhost ~]# cd /mnt/cdrom/images/pxeboot/
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/
[root@localhost ~]# cp /usr/share/syslinux/pxe
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var//lib/tftpboot/
利用kickstart工具配置自动应答文件
[root@localhost ~]# yum -y install system-config-kickstart
打开kickstart软件进行基本配置
安装后脚本设置
cd /etc/yum.repos.d
mkdir bak
mv *.repos bak #移走原始源文件
echo -e "[base]" > aa.repo
echo -e "baseurl=ftp://172.16.15.53/centos7">>aa.repo #写入本地源文件
echo -e "gpgcheck=0">>aa.repo
在ks.cfg文件末尾添加如下语句(即最小化安装)
[root@localhost ~]# vim /var/ftp/ks.cfg
%packages
@^minimal
%end
[root@localhost ~]# mkdir /var/lib/tftpboot//pxelinux.cfg/
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
写入如下配置
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://172.16.15.53/centos7 ks=ftp://172.16.15.53/ks.cfg
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://172.16.15.53/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://172.16.15.53/centos7
[root@localhost ~]# yum -y install dhcp
编辑网卡配置
[root@localhost ~]$ vim /etc/sysconfig/network-scripts/ifcfg-ens33
编辑dhcp配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
subnet 172.16.15.0 netmask 255.255.255.0 {
range 172.16.15.1 172.16.15.200;
option domain-name-servers 8.8.8.8;
option domain-name "internal.example.org";
option routers 172.16.15.53;
option broadcast-address 172.16.15.255;
default-lease-time 21600;
max-lease-time 43200;
next-server 172.16.15.53; #指定tftp服务器的地址
filename "pxelinux.0"; #指定pxe引导程序的文件名
}
好了,到现在为止服务器的搭建已经完成了,接下来需要把所有涉及到的服务全部重启一遍,然后关闭安全机制(selinux)和防火墙
启动客户端,将会自动寻找dhcp服务器
出现boot回车继续
接下来就是漫长的等待自动安装的过程
安装成功
请关注客户端自动安装失败的报错。一般问题出在几个点:
dhcp是否搭建好并能正确获取到ip地址
服务器镜像文件是否cp到ftp路径下
ftp是否能够root和匿名访问
ftp下文件是否有访问权限
几个服务的配置文件是否正确(包括ip地址,路径等)
安全机制和防火墙是否关闭
各项服务是否已经重启
注:本教程适合有一定基础的朋友看,因为我比较懒,有些细节并没有写的很清楚。有问题可以call我呦