PXE支持系统安装

在企业中经常会用到的一种自动安装系统的方法就是pxe安装,他是怎么实现的呢。

PXE全称Preboot Excution Environment中文翻译:预启动执行环境,是由Intel公司研发基于Client/Server 的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。PXE可以引导和安装Windows,linux等多种系统。

要完成这项工作需要多种服务同时完成,例如dhcp,tftp等服务,他的工作原理是:

Client向PXE Server 上的DHCP 发送IP 地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0 的位置信息一并传送给Client。

Client向PXE Server 上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP 收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。

Client 执行接收到的pxelinux.0 文件

Client向TFTP Server 发送针对本机的配置信息文件(在TFTP 服务的

pxelinux.cfg 目录下),TFTP将配置文件发回Client ,继而Client 根据配置文件执行后续操作。

Client 向TFTP 发送Linux 内核请求信息,TFTP 接收到消息之后将内核文件发送给Client

Client 向TFTP 发送根文件请求信息,TFTP 接收到消息之后返回Linux根文件系统

Client启动Linux内核

Client下载安装源文件,读取自动化安装脚本


首先准备一下:关闭防火墙和selinux,DHCP服务器设置静态ip

·yum 安装DHCP,tftp-server,syslinux

因本人在虚拟机上实验,两个虚拟机一个centos6一个centos7,7当服务器端6为DHCP服务器,还有一个实验开机。



·在centos7上需要把http的相关功能启动。

systemctl enable httpd       ---> 开机启动
systemctl start httpd        ---> 启动服务
mkdir /var/www/html/centos/7     -->创建目录
mount /dev/sr0 /var/www/html/centos/7   -->挂载光盘在该目录上

这样就有了centos7的yum源了。(如果需要安装centos其他版本挂载其他光盘就好)

接下来要准备kickstart文件(在每个系统家目录下有anaconda-ks.cfg文件,该文件为世纪路安装系统的过程可以把它拿过来修改当启动文件)

cp ~/anaconda-ks.cfg /var/www/html/ks/centos7.cfg   -->把该文件拷贝到ks目录下(ks自己创建的目录)

跟上面一样,若需要其他系统启动添加其他.cfg结尾文件。



·重点我感觉在tftp服务器端配置:

mkdir /var/lib/tftpboot/pxelinux.cfg/   -->tftpboot为tftp默认目录pxelinux.cfg为自己创建
cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
cp /misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /misc/cd/isolinux/isolinux.cfg
/var/lib/tftpboot/pxelinux.cfg/default

安装syslinux包时有两个文件是必要的(虽然都是必要的。。。。)/usr/share/syslinux{pxelinux.0,menu.c32}这两个文件需要放在tftp默认目录下(tftpboot下)。

这样tftp里面启动文件也有了initrd.img和vmlinuz文件也有了这样差不多就齐全了。

差不多是这个样子:

/var/lib/tftpboot/
├── initrd.img
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│      └── default
└── vmlinuz



·在centos6里面配置了一个dhcp服务端,在配置文件里面

subnet 192.168.192.0 netmask 255.255.255.0 {
        range 192.168.192.100 192.168.192.200;
    option routers 192.168.37.254;(客户端自动获取ip时分配默认网关,下面dns一样)
    option domain-name-servers 8.8.8.8 8.8.4.4;
    option domain-name "magedu.com";(域名)
    filename "pxelinux.0";
    next-server 192.168.100.100;
}

subnet后面跟上dhcp地址的网段,range为范围,其他的都不是很重要,但要pxe功能的实现少不了两行命令:

filename "pxelinux.0";

next-server 192.168.100.100; 指向下一跳地址(也就是tftp的地址)

这样就齐全了。可以通过网络启动来自动安装系统了。

(其中ks文件路径指向需注意,这里就不涉及了)