平时处理问题时经常会遇到客户的PXE服务器无法进入的相关问题,定位起来需要我们较好的了解PXE,这样根据异常打印和出问题的阶段就能初步判断问题方向,所以为了加深理解,我使用Centos7.6作为本端服务器系统完成了PXE服务器的部署,这是个很有意思的东西,之前试过几次都失败了,这次总算成功了,总结一下方法

1.关闭防火墙和安全子系统,不关闭的话客户端访问过来拿系统文件时会受阻

systemctl stop firewalld
systemctl disable firewalld
vi /etc/sysconfig/selinux
enforcing改为disable

2.配置yum源,安装相关服务
在/etc/yum.repo.d路径下删掉原先文件
Vi local.repo
内容如下

[localREPO]
name=localhost8
baseurl=file:///mnt/BaseOS
enable=1
gpgcheck=0

然后yum makecache ,之后安装服务
a) yum –y install dhcpd (为PXE分配IP)没有dhcpd的话dhcp
b) yum –y install tftp tftp-server (为PXE提供配置文件获取路径)
c) yum –y install httpd (为PXE提供镜像获取地址)
d) yum –y install syslinux (为获取legacy pxe启动文件pxelinux.0)

3.设置用来连接客户端机器的网口静态IP,如下图

通过PXE启动使用服务器上的操作系统镜像 服务器如何设置pxe启动_centos

4.配置dhcp服务,如下图

通过PXE启动使用服务器上的操作系统镜像 服务器如何设置pxe启动_linux_02

5.配置tftp服务,路径和文件系统结构如下图

通过PXE启动使用服务器上的操作系统镜像 服务器如何设置pxe启动_linux_03

Legacy pxe文件配置如下

cd /var/lib/tftpboot

mkdir legacy_pxe uefi_pxe

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/legacy_pxe/

cd legacy_pxe

 mkdir centos_7.6 centos_8.4 pxelinux.cfg 创建该三个文件夹

 cp /mnt/cdrom/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/legacy_pxe/centos_7.6(根据系统的实际挂载点来)

 centos 8的启动文件与centos7配置方式一致

 cp /mnt/cdrom/isolinux/vesamenu.c32 /var/lib/tftpboot/legacy_pxe

 cd /var/lib/tftpboot/legacy_pxe/pxelinux.cfg

 vim default

 chmod –R 777 /var/lib/tftpboot/legacy_pxe

pxelinux.cfg/default进行如下图修改

通过PXE启动使用服务器上的操作系统镜像 服务器如何设置pxe启动_服务器_04

UEFI文件配置如下

cp /mnt/cdrom/EFI/BOOT/{grub.cfg, grubx64} /var/lib/tftpboot/uefi_pxe

 initrd.img与vmlinuz两个文件配置方式与legacy pxe的配置方式一致

 修改grub.cfg文件如下图:vim /var/lib/tftpboot/uefi_pxe/grub.cfg

 chmod –R 777 /var/lib/tftpboot/uefi_pxe

通过PXE启动使用服务器上的操作系统镜像 服务器如何设置pxe启动_centos_05

6.配置httpd服务
  a) cd /var/www/html
  b) mkdir centos_7.6 centos_8.4
  c) mount <centos 7.6 iso文件> /var/www/html/centos_7.6
  d) mount <centos 8.4 iso 文件> /var/www/html/centos_8.4
7.启动所有服务,设置所有服务开机自启
  systemctl start dhcpd
  systemctl enable dhcpd
  systemctl start tftp
  systemctl enable tftp
  systemctl start httpd
  systemctl enable httpd

常见问题

  1. 容易出问题的地方就在于配置文件,格式不对就会导致失败。
  2. 如果拿vesamenu.c32时,没有完全拷贝完导致缺失的话,会在引导时报 vesamenu.c32 is not a C32 文件。所以要保证cp的时候两边的文件大小一致
  3. 对tftpboot下面文件夹的赋权很重要,没有权限的话也会导致引导时不能正确访问

目前还遗留了个问题,海光OS无法正常被获取安装

通过PXE启动使用服务器上的操作系统镜像 服务器如何设置pxe启动_linux_06

怀疑是OS本身权限的问题,公版7.6和8.4都可以正常获取安装了,咨询海光确认这个版本的海光OS确实有因权限导致的问题,拿到更新的海光OS后再验证问题就不在了。

通过PXE启动使用服务器上的操作系统镜像 服务器如何设置pxe启动_运维_07

legacy和uefi的效果图分别如下,非常漂亮。

通过PXE启动使用服务器上的操作系统镜像 服务器如何设置pxe启动_linux_08

通过PXE启动使用服务器上的操作系统镜像 服务器如何设置pxe启动_centos_09