前言
PXE是作为Intel的有线管理体系的一部分,Intel 和 Systemsoft于1999年9月20日公布其规格(版本2.1)。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。 PXE 客户机(client)这个术语是指机器在PXE启动过程中的角色。一个PXE 客户机(client)可以是一台服务器、桌面级电脑、笔记本电脑或者其他装有PXE启动代码的机器。
一、部署PXE远程安装服务
1、启动步骤详解
1、服务器加电启动,从DHCP服务器获取IP地址并加载(PXEClient)。 2、通过TFTP服务器获取网络引导程序(pxelinux.0)。 3、引导程序读取配置文件(pxelinux.cfg本例中文件名为:default)。 4、引导程序加载文件系统初始化(initrd)程序和内核初始镜像(vmlinuz)、自动应答程序(ks.cfg)。 5、按自动应答文件中指定的网络安装方式,以FTP方式安装linux系统。
2、使用工具
A、tftp-server B、vsftpd C、syslinux D、dhcpd
3、 PXE安装过程
wKiom1SX4kHh1RWYAAHds9-3LXA997.jpg 第一步:PXE client向DHCPserver发送请求 首先,开机启动PXE安装,此时PXE client会通过 PXE Boot ROM(自动芯片)以UDP(简单用户数据协议)的形式在网络中发送一个广播请求,请求DHCP服务器分配IP地址等相关信息。 第二步:DHCP服务器应答PXE client DHCP验证是否是合法的PXE client的请求,验证通过后,回应PXE client,回应中包含了为PXE client分配的ip之地址、TFTP(pxelinux启动程序)的位置,以及配置文件所在的位置。 第三步:PXE client请求下载启动文件 客户端收到DHCP的回应后,向TFTP服务器请求传送启动系统安装所需要的文件,这些文件包括:pxelinux0、pxelinux.cnf/default(内核文件)、vmlinuz、initrd.img等文件 第四步:TFTP服务器响应客户端请求并传送文件 当 TFTP收到客户端的请求之后,发给客户端所需要的启动文件,BootROM由TFTP通讯协议从BootServer下载启动安装程序所必须的文件 (pxelinux0、pxelinux.cnf/default),default文件下载完之后会根据该文件定义的引导顺序,启动linux安装程序 的引导内核。 第五步:请求下载自动应答文件(ftp服务器) PXE client通 过default文件成功的引导linux安装内核后,安装程序首先确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS、HTTP、 FTP),则会在这个时候初始化网络,并定位安装系统所需的二进制包以及配置文件的位置,接着会读取该文件中指定的自动应答文件ks.cfg,然后根据 ks.cfg中的文件位置请求下载相关文件。 第六步:根据ks.cfg文件内容进行安装系统 将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包
二、部署PXE远程安装服务
第一步在服务器设置双网卡
目的为了虚拟机能上网 能下载软件
代码语言:javascript复制'第一步,在服务器设置双网卡'
在centos 7添加一个网络适配器,并设置为仅主机模式。 '用来装机,做服务器的网卡'
原本的网络适配器保持NAT模式不变。 '用来安装yum包'
第二步,设置添加的网卡IP地址,关闭防火墙
代码语言:javascript复制'第二步,设置添加的网卡IP地址,关闭防火墙'
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# ls
[root@localhost network-scripts]# vim ifcfg-ens36
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens36"
UUID="fe60a0ac-7d04-46a3-b29c-633a50b88f33" 'UUDI删除掉'
DEVICE="ens36"
ONBOOT="yes"
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig '发现设置成功'
[root@localhost network-scripts]# systemctl stop firewalld.service
[root@localhost network-scripts]# setenforce 0
第三步,设置DHCP服务
代码语言:javascript复制'第三步,设置DHCP服务'
[root@localhost ~]#yum install dhcp* -y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.20 192.168.100.30;
option routers 192.168.100.100;
option domain-name-servers 6.6.6.6;
next-server 192.168.100.100; '指定TFTP服务器地址'
filename "pxelinux.0"; 'filename:指定要下载的引导程序文件'
}
第四步:设置TFTP–配置安装tftp-server
代码语言:javascript复制'第四步:设置TFTP--配置安装tftp-server'
[root@localhost ~]# yum install tftp-server -y
[root@localhost ~]# rpm -ql tftp-server
/etc/xinetd.d/tftp '配置文件'
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot '站点'
[root@localhost network-scripts]# vim /etc/xinetd.d/tftp '编辑配置文件'
disable = no '将此改成no'
[root@localhost network-scripts]# cd /var/lib/tftpboot '进入站点'
[root@localhost tftpboot]# ls
## 第五步:安装并设置syslinux
第五步:安装并设置syslinux
代码语言:javascript复制'第五步:安装并设置syslinux'
[root@localhost tftpboot]# yum install syslinux -y '安装syslinux'
[root@localhost tftpboot]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot '将syslinux中的pxelinux.0复制过来'
[root@localhost tftpboot]# ls
pxelinux.0
[root@localhost tftpboot]# yum install vsftpd -y
[root@localhost tftpboot]# rpm -ql vsftpd '查看站点'
...省略内容
/var/ftp
/var/ftp/pub
[root@localhost tftpboot]# mkdir /var/ftp/centos7 '创建centos7目录用来挂载'
[root@localhost tftpboot]# cd /var/ftp
[root@localhost ftp]# ls
centos7 pub
[root@localhost ftp]# ls centos7 '发现镜像文件中没有东西'
'挂载之前先点击已连接'
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7/ '挂载'
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ftp]# df -hT
[root@localhost ftp]# ls centos7 '再次查看centos7文件,发现有了内容'
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
第六步,在镜像中复制出文件
代码语言:javascript复制'第六步,在镜像中复制出文件'
[root@localhost ftp]# cd centos7/images
[root@localhost images]# cd pxeboot
[root@localhost pxeboot]# ls '发现目标文件,准备复制'
initrd.img TRANS.TBL vmlinuz
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/ '将文件复制到tftp站点中'
[root@localhost pxeboot]# ls /var/lib/tftpboot
initrd.img pxelinux.0 vmlinuz
第七步,设置默认配置文件
‘第七步,设置默认配置文件’ [root@localhost pxeboot]# cd /var/lib/tftpboot [root@localhost tftpboot]# ls initrd.img pxelinux.0 vmlinuz [root@localhost tftpboot]# mkdir pxelinux.cfg ‘创建pxelinux配置文件’ [root@localhost tftpboot]# cd pxelinux.cfg/ [root@localhost pxelinux.cfg]# vim default ‘创建默认配置文件’ ‘输入以下内容’ default auto prompt 1
label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux text kernel vmlinuz append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
[root@localhost pxelinux.cfg]#systemctl start dhcpd [root@localhost pxelinux.cfg]#systemctl start tftp [root@localhost pxelinux.cfg]#systemctl start vsftpd
第八步 开启裸金属虚拟机
三、实现Kickstart无人值守安装
1、准备安装应答文件
kickstart无人值守技术 创建应答文件,预先定义好各种安装设置 免去交互设置过程,从而实现全自动化安装 通过添加%post脚本,完成安装后的各种配置操作 应答文件的内容
2、实现批量自动装机
代码语言:javascript复制[root@localhost ~]# yum install system-config-kickstart -y
'安装kickstart工具'
3、开启kickstart软件
代码语言:javascript复制[root@localhost ~]# cd /var/ftp
[root@localhost ftp]# ls
centos7 ks.cfg pub
[root@localhost ftp]# cd
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 下载 公共 图片 文档 桌面 模板 视频 音乐
[root@localhost ~]# vim anaconda-ks.cfg
...'复制以下内容'
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony
kexec-tools
%end
[root@localhost ~]# vim /var/ftp/ks.cfg '复制的粘贴到此'
[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# ls
default
[root@localhost pxelinux.cfg]# vim default
..
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cf
g '在原本此段内容后面输入ks=ftp://192.168.100.100/ks.cf
g'
[root@localhost pxelinux.cfg]# systemctl restart dhcpd '重启服务'
[root@localhost pxelinux.cfg]# systemctl restart tftp
[root@localhost pxelinux.cfg]# systemctl restart vsftpd