简介(个人理解)
PXE的全称是preboot execute environment,是通过网络引导至安装操作系统所需的镜像、IP地址等资源进行系统的自动化部署的技术。 以下是具体部署操作:
1、环境准备
准备一台centos 7 操作系统虚拟机
更改网络模式为NAT模式,并且取消DHCP自动获取IP功能
打开虚拟机设置,继续检查网络设置,将网络设置为如下内容:
2、服务器配置
1、初始环境
进入主机关闭防火墙以及selinux
systemctl stop firewlld
systemctl disable firewalld
systemctl status firewalld
[root@localhost ~]# systemctl stop firewlld #关闭防火墙
[root@localhost ~]# systemctl disable firewalld #开机自关闭
[root@localhost ~]# systemctl status firewalld #检查防火墙状态
2、yum安装服务
yum -y install tftp tfpt-server httpd syslinux
3、配置DHCP
进入配置文件
vi /etc/dhcp/dhcpd.conf
进入以后在末尾添加以下内容
subnet 192.168.128.0 netmask 255.255.255.0 {
option routers 192.168.171.1;
option domain-name-servers 192.168.171.1;
range 192.168.171.20 192.168.171.200;
next-server 192.168.171.10;
filename "pxelinux.0";
具体含义如下图:
启动DHCP服务
[root@localhost ~]# systemctl start httpd #启动服务
[root@localhost ~]# systemctl status httpd #检查状态,结果如下:
4、搭建http服务
[root@localhost ~]# mkdir /var/www/html/Centos #创建文件夹
[root@localhost ~]#mount /dev/sr0 /var/www/html/Centos #挂载(临时挂载)
如果需要进行永久挂载,则进入配置文件添加,操作如下:
[root@localhost ~]#vim /etc/fstab #进入挂载配置文件
文本末尾加入: /dev/sr0 /var/www/html/Centos iso9660 defaults 0 0
如图:
加入后保存退出
5、配置tftp服务
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /var/www/html/Centos/isolinux/{vmlinuz,*.c32,initrd.img} /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
vim /var/lib/tftpboot/pxelinux.cfg/default
#cp 的作用是为了保证不影响原文件的内容(不建议新手在原文件的基础上做改动)
进入文件后,输入以下内容:
default linux
prompt 0
timeout 10
label linux
kernel vmlinuz
Append initrd=initrd.img ip=dhcp method=http://192.168.171.10/Centos ks=http://192.168.171.10/ks.cfg
如图:
启动并检查服务状态
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl status tftp #查看方法同上
6、生成ks.cfg文件
cp /root/anaconda-ks.cfg /var/www/html/ks.cfg
vim /var/www/html/ks.cfg
文件里面写入以下内容:(特别注意网卡与IP与自己相符,我的IP是192.168.171.10,注意改为自己的IP地址)
ignoredisk --only-use=sda
autopart --type=lvm
clearpart --all
graphical
url --url="http://192.168.171.10/Centos/"
rootpw --plaintext P@ssw0rd01!
keyboard --vckeymap=cn --xlayouts='cn'
lang zh_CN.UTF-8
selinux --disabled
network --bootproto=dhcp --device=ens33 --ipv6=auto --activate
network --hostname=localhost.localdomain
xconfig --startxonboot
firstboot --disable
services --enabled="chronyd"
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all
# Disk partitioning information
reboot
eula --agreed
%packages
@^graphical-server-environment
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict
--nochanges --notempty
%end
7、修改文件权限,启动http服务
chmod a+r /var/www/html/ks.cfg #修改权限
启动并查看服务状态
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl status httpd
三、客户端验证
创建一个新的虚拟机,在不做镜像文件挂载的情况下开机,让其在所搭建的服务下进行镜像索引以及IP地址的获取,如果虚拟机可以自动跳转至安装步骤,则恭喜你,PXE部署已经成功,可以进行系统的批量部署了。
四、bug小结
(一)部署PXE过程中找不到服务的情况:
1、检查httpd、dhcpd、tftp服务是否为开启状态
启动命令:systemctl start {服务名称}
检查命令:systemctl status {服务名称},若出现active(running)则服务已经开启
2、DHCP服务器地址出错
由于DHCP服务也是装在本机上的,因此,在这,服务器地址就是本机地址
(二)、如以下的报错情况适用这类检查:
检查/dev/sr0 的挂载目录
因为前面利用yum下载的原因,有可能/dev/sr0可能已经挂载至其他目录,此时你应该先卸载然后再执行挂载命令
查看命令:df -h
卸载挂载命令:umount /dev/sr0 /{被挂载目录} #这里我挂载的是我的本地yum源
重新挂载:mount /dev/sr0 /var/www/html/Centos
至此,此次pxe(系统安装引导)部署完成。有做得不对的地方还请大神给予指正。