一、说明
什么是PXE?
PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服 务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。
进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。
运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器,DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。
部署PXE需要哪些服务?
DHCP服务,分配IP地址,定位引导程序
DNS服务,为客户机分配主机名
TFTP服务,提供引导程序下载
HTTP服务(或ftp/nfs),提供yum安装源
客户机应具备的哪些条件?
网卡ROM必须支持PXE协议
主板支持网络启动
PXE工作流程图
PXE+Kickstart安装过程
二、实验环境
操作系统:CentOS7.3 (GNOME桌面版)
pxeServer: 192.168.2.2
三、设置pxeServer网络
我们配置pxe的安装网段为 192.168.2.0/24,设置在自定义网络VMnet1
设置VMware网络,禁用VMnet1的本地DHCP
配置pxeServer在VMnet1网络中的静态IP为192.168.2.2
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
#############################
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens33"
ONBOOT="yes"
IPADDR="192.168.2.2"
NETMASK="255.255.255.0"
GATEWAY="192.168.2.1"
###############################
# systemctl restart network
# ip addr list
四、在pxeServer上搭建本地yum源
用CentOS7.3 镜像搭建本地yum源,如果ISO映像文件路径中没有,可自行上传搭建。
# mount /dev/cdrom /mnt/
# mkdir /etc/yum.repos.d/backup
# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
# vim /etc/yum.repos.d/pxe.repo
#######################
[development]
// 注意:此处[]内容必须为development
name=pxe
baseurl=file:///mnt
enabled=1
gpgcheck=0
#########################
# yum clean all
# yum repolist
设置开机自动挂载
# vim /etc/fstab
#####################################
/dev/cdrom /mnt iso9660 defaults 0 0
#####################################
# mount -a
五、在pxeServer上安装软件包
# yum -y install dhcp httpd xinetd tftp-server
配置httpd,为客户端装机提供http网络yum源
# mkdir /var/www/html/CentOS7/
# cp -r /mnt/* /var/www/html/CentOS7/
创建kickstarts文件目录
# mkdir /var/www/html/kickstarts
配置xinetd,对服务tftp访问进行控制
# vim /etc/xinetd.d/tftp
将配置文件中 yes改成no,开启服务
配置DHCP,为客户端装机提供IP
# vim /etc/dhcp/dhcpd.conf
##################################
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.110 192.168.2.150;
filename "pxelinux.0";
next-server 192.168.2.2;
}
###################################
配置pxe装机文件
# yum -y install syslinux
# rpm -ql syslinux |grep pxe
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot
# cp /var/www/html/CentOS7/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/
# ll /var/lib/tftpboot/
在tftp的根目录下新建pxe文件夹和文件
# mkdir /var/lib/tftpboot/pxelinux.cfg
# vim /var/lib/tftpboot/pxelinux.cfg/default
########################################################################
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS7.x PXE
LABEL linux_auto
MENU LABEL Install CentOS7.x x86_64 Auto
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://192.168.2.2/CentOS7/ ks=http://192.168.2.2/kickstarts/centos7.cfg
LABEL linux
MENU LABEL Install CentOS7.x x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=http://192.168.2.2/CentOS7/
###########################################################################
五、生成 kickstarts应答文件
# yum -y install system-config-kickstart
# system-config-kickstart
# cp /root/centos7.cfg /var/www/html/kickstarts/
六、关闭pxeServer防火墙,启动服务
# setenforce 0
# sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
# systemctl stop firewalld
# systemctl disable firewalld
# systemctl start xinetd httpd dhcpd tftp
# systemctl enable xinetd httpd dhcpd tftp
# systemctl status xinetd httpd dhcpd tftp
七、创建虚拟机,启动PXE 安装
# systemctl get-default
# systemctl set-default graphical.target
# reboot
八、参考
PXE 装机详解
https://blog.51cto.com/1992tao/1870431
通过PXE网络安装CentOS7操作系统
https://o-my-chenjian.com/2018/07/11/Install-CentOS7-By-Using-PXE
CentOS 7 安装大全 之 PXE网络篇
https://blog.csdn.net/sqa_star/article/details/84029965
https://www.cnblogs.com/f-ck-need-u/p/7342919.html
PXE 和 Kickstart 部署记录
https://blog.tankywoo.com/2014/01/13/pxe-and-kickstart-deploy-operation.html
kickstart文件
https://www.jianshu.com/p/46993025012d
图形化生成kickstart文件
https://blog.51cto.com/13150617/1973002
kickstart-由于下载软件包信息失败,软件包选择被禁止
https://blog.51cto.com/zaa47/1927790
https://www.linuxidc.com/Linux/2018-07/153260.htm
基于DHCP、PXE和kickstart自动安装设置CentOS 7.3
http://hmli.ustc.edu.cn/doc/linux/centos-autoinstall.htm
KICKSTART无人值守安装
https://blog.oldboyedu.com/autoinstall-kickstart
PXE Kickstart 无人值守安装系统
http://www.opsroad.com/759.html
CentOS7安装后重启出现Initial setup of CentOS Linux 7 (core)
https://blog.csdn.net/jyusun/article/details/70231416
如何执行 KICKSTART 安装?
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-howto#sect-kickstart-installation-starting