PXE简介
PXE (preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。
在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。
1.环境准备
1.首先准备至少两台虚拟机,其中一台作为服务器使用。(基本所有配置操作都是在服务器上客户端机器不需要配置。)然后还需要至少一个安装源(系统安装镜像文件)
将两台虚拟机网卡配置为仅主机模式(主要是和外网隔离,以面影响实体机的DHCP服务)
2.记录下主机ip
3.关闭VMware的DHCP服务:
在VMware主界面点击“编辑→虚拟网络编辑器”
在打开的界面中选中仅主机模式的连接并取消选中使用本地DHCP服务(如果勾选框灰色,点击更改设置给他管理员权限)。
4.给服务器分配一个IP地址,地址建议为静态地址。配置文件如下:
TYPE=Ethernet BOOTPROTO=static IPADDR=192.168.11.2 PREFIX=24 GATEWAY=192.168.11.1 NAME=ens33 DEVICE=ens33 ONBOOT=yes.5.编辑Win下的虚拟网卡配置以便和虚拟机可以通信打开控制面板→网络和共享中心→更改适配器设置
通常仅主机的连接名称为VMnet1
2.检查服务器相关设置
确保SELinux和防火墙处于关闭状态。
将/etc/selinux/config文件中的SELINUX=xxx改为SELINUX=disabled并重启。
可通过命令getenforce查看,如果是disabled或permissive即为关闭状态
执行以下两条命令确保关闭防火墙
systemctl stop firewalld systemctl disable firewalld
安装必要软件
在界面输入命令安装相关软件并启动服务
yum install httpd dhcp syslinux tftp-server systemctl start httpd tftp.socket systemctl enable dhcpd tftp.socket httpd
使用ss -tan 确认TCP80端口已开启
使用ss -unl 确认UDP69端口已开启
3.准备安装源
我们将HTTP作为安装源,将事先准备好的安装镜像挂载到HTTP目录下可以访问即可。
具体实现:
1.使用mkdir -p /var/www/html/Centos/7创建文件夹
2.将光盘挂载到/var/www/html/Centos/7目录下
3.在/etc/fstab文件中添加自动挂载信息,通常为
/etc/sr0 /var/www/html/Centos/7 iso9660 default 0 0
4.使用df -h确认挂载信息
5.在主机使用浏览器访问http://192.168.11.2/Centos/7 确认可以看到挂载的安装文件.
4.准备自动应答文件
自动应答文件的生成可以通过在图形界面下安装system-config-kickstart包使用这个工具在图形界面下生成。
(或者,系统安装完成后默认在root家目录有一个叫anaconda-ks.cfg的文件,也可以直接修改这个文件。)
5.配置DHCP服务器
默认情况下DHCP服务在安装完成之后配置文件是空的,也因此DHCP服务必须进行一定的配置才可以启动,DHCP的服务配置文件路径是:/etc/dhcp/dhcpd.conf
网段:服务器可以分配的地址的网段,可以指定多个
掩码:网段对应的掩码
默认租期:以秒为单位默认的IP地址的租期
最长租期:客户端可以请求一个租期,此项设定用于对此进行限制以秒为单位
地址池:服务器在可分配网段中可以分配的IP地址的范围
DNS:用于客户机从DHCP服务器获取的DNS地址
option domain-name-servers 114.114.114.114 default-lease-time 600; max-lease-time 7200; subnet 192.168.11.0 netmask 255.255.255.0 { range 192.168.11.3 192.168.11.124; }
对于一个DHCP服务器以上内容足够了,不过对于PXE还少了两个重要的选项,
next-server 192.168.11.2
filename "pxelinux.0"
next-server用来指定TFTP服务器的位置
filename用来指定要访问TFTP服务器上的哪个文件
option domain-name-servers 114.114.114.114 default-lease-time 600; max-lease-time 7200; subnet 192.168.11.0 netmask 255.255.255.0 { next-server 192.168.11.2; filename "pxelinux.0"; range 192.168.11.3 192.168.11.124; }
6.将相关文件复制到TFTP共享目录
TFTP的共享目录在/var/lib/tftpboot/下,
在此创建一个7的目录
复制光盘目录中isolinux下的initrd.img和vmlinuz到/var/lib/tftpboot/7目录下
在共享目录下创建一个名为pxelinux.cfg的文件夹并将光盘目录中isolinux下的isolinux.cfg复制到pxelinux.cfg目录下并且命名为default
将/usr/share/syslinux/menu.c32复制到/var/lib/tftpboot目录下,此文件是菜单背景文件
将/usr/share/syslinux/pxelinux.0复制到/var/lib/tftpboot目录下
修改default文件
default menu.c32 timeout 600 display boot.msg label linux menu label ^Install CentOS 7 kernel 7/vmlinuz append initrd=7/initrd.img ks=http://192.168.11.2/anaconda-ks.cfg label local menu default menu label Boot from ^local drive localboot 0xffff menu end
7.启动测试