【栏目介绍:“玩转OurBMC”是OurBMC社区开创的知识分享类栏目,主要聚焦于社区和BMC全栈技术相关基础知识的分享,全方位涵盖了从理论原理到实践操作的知识传递。OurBMC社区将通过“玩转OurBMC”栏目,帮助开发者们深入了解到社区文化、理念及特色,增进开发者对BMC全栈技术的理解。

欢迎各位关注“玩转OurBMC”栏目,共同探索OurBMC社区的精彩世界。同时,我们诚挚地邀请各位开发者向“玩转OurBMC”栏目投稿,共同学习进步,将栏目打造成为汇聚智慧、激发创意的知识园地。】

在 BMC 对服务器的监控与管理过程中,为了实现对服务器的更优化管理,往往需要与其它工具紧密协同工作,以增强监控的全面性、提高管理的灵活性,并促进问题的快速解决。本期内容,我们将对 PXE 技术安装操作系统方法 进行介绍。通过全面阐述 PXE 的基本概念,并结合实际应用案例的深入分析,以帮助读者熟练掌握 PXE 技术的使用方法,从而在实际操作中游刃有余。

PXE 基本介绍

PXE(Preboot Execution Environment)是一种网络引导技术,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或整个操作系统。PXE 的主要优点包括规模化、自动化和远程实现,可以同时装配多台服务器,自动化安装系统,并且不需要光盘、U盘等安装介质。

以下是 PXE 安装操作系统的环境准备:

1、DHCP 服务器:提供客户端 IP 地址和 PXE 引导文件的路径。

2、TFTP 服务器:用于传输 PXE 引导文件(例如,引导加载程序、内核和初始 RAM 磁盘)。

3、HTTP/FTP/NFS 服务器:用于存储操作系统安装文件。

4、PXE 支持的客户端:客户端计算机需要支持 PXE 引导。

PXE 应用实例分析

使用 PXE 安装操作系统至少需要两台设备,一台作为 PXE 服务端提供安装镜像,另一台作为 PXE 客户端执行系统安装。两个机器通过一根网线直连(前提网络功能正常)。这里以 CentOS 作为服务端系统为例:

1、在 PXE 服务器上安装 DHCP、TFTP 和 HTTP/FTP 服务

#安装 DHCP 服务器

#sudo yum install -y dhcp*

#安装 TFTP 服务器

#sudo yum install -y tftp-server

#安装 HTTP 服务器

#sudo yum install -y httpd

2、 在 PXE 服务器上配置 DHCP、TFTP 和 HTTP/FTP 服务

(1)配置DHCP服务:

编辑 DHCP 服务端的配置文件 /etc/dhcp/dhcpd.conf,以下是配置实例,请注意,您需要根据自己的实际环境替换其中的IP地址和其他参数:

ea56cb126d8ca77b7442c02947ca1e77.png

  • subnet 192.168.188.0 netmask 255.255.255.0 声明了一个子网,其IP地址为192.168.188.0,子网掩码为255.255.255.0
  • range 192.168.188.140 192.168.188.240 指定了客户端可以获取的IP地址范围
  • next-server 192.168.188.136 指定了TFTP服务器的IP地址,需要根据自己的环境替换这个值
  • filename "grubaa64.efi" 指定了PXE启动文件,该文件用于加载grub.cfg

(2)配置 HTTP 服务

① 下载并挂载镜像:从https://vault.centos.org/8.2.2004/isos/aarch64/下载镜像CentOS-8.2.2004-aarch64-dvd1.iso并放到/opt下,挂载该镜像到/mnt。

#mount /opt/CentOS-8.2.2004-aarch64-dvd1.iso /mnt
#cd /mnt 

② 准备Web服务器,并在Web服务器默认访问路径下创建文件夹用于存放安装源。

#cd /var/www/html
#mkdir centos
#cp -rf /mnt/*   centos

③ 准备Kickstart文件:创建一个文件夹用于存放Kickstart(ks)文件,复制/root目录下的anaconda-ks.cfg文件到这个新目录下,并为ks配置文件加读权限。

#mkdir ksdir
#cp /root/anaconda-ks.cfg ks8.cfg   ksdir
#chmod +r ks8.cfg

ks8.cfg为自动安装的配置文件,修改ks文件如下图所示:

ce0d4ca24f1350d733dd4ceb0a933366.png

上图所示的ks文件的参数详解如下:

  • url --url=http://192.168.188.136/centos/8/isos/aarch64/ 配置网络安装源,此处的其他配置选项为cdrom(以本地CD-ROM为源安装系统)。
  • keyboard --vckeymap=cn --xlayouts='cn' 配置键盘样式。
  • lang zh_CN.UTF-8 配置系统语言为中文,编码方式utf-8。
  • network --bootproto=dhcp --device=enp5s0 --onboot=on --ipv6=auto --no-activate 配置网络信息。其中 --bootproto=dhcp指定ip获取方式为dhcp(默认值),--device=xxx设置客户端安装时使用的网卡为enp5s0,--onboot=on 系统启动时自启动网卡。
  • network --hostname=localhost.localdomain 设置安装的系统的主机名。
  • reboot 安装完成后自动重启(该选项可缺省)。
  • rootpw --iscrypted $6$9LFQG/EX.saU/Lhe$Yl/e1PVwdoBoOBNs.NL4JRWmMT.L49B3.bJo/uXQgWy6OCG5yme.Ww5D0TtBsRt02ZY9OMRFXtpopeX/4roLl/ 设置root账户密码。
  • xconfig --startxonboot 安装时显示可视化界面,修改此行为skipx则不显示可视化界面。
  • services --disabled="chronyd" 可选参数,设置禁用或允许列出的服务,--disabled 设置服务为禁用,--enabled 启动服务。
  • timezone Asia/Shanghai --isUtc --nontp 设置时区信息。
  • bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda 系统引导配置,其中 --append 指定内核参数.要指定多个参数,使用空格分隔它们。--location指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition,none。--boot-drive 指定在BIOS引导顺序中居首的驱动器。
  • autopart --type=lvm 可选参数,自动创建分区,大于1GB的根分区(/),交换分区和适合于不同体系结构的引导分区.一个或多个缺省分区的大小可以用part指令重新定义。--type=lvm指定逻辑卷管理。
  • clearpart --none --initlabel 从系统中不清除分区(修改--none为--all会清除所有分区),--initlable 是初始化磁盘标签。
  • part / --fstype="ext4" --ondisk=sda --size=10240 是磁盘分区信息,其中--fstype为分区设置文件系统类型.有效的类型为ext2,ext3,swap, xfs和vfat。--ondisk=sda 设置分区所在的磁盘为一个具体的磁盘sda。--size以MB为单位的分区最小值.在此处指定一个整数值,如10240不加MB。
  • %packages是指定自定义安装的包(一行一个)以%end结束,@^graphical-server-environment表示安装的是带图形化界面的服务器,此处可选@core进行最小安装、net-tools安装网络工具。

注意autopart参数和part/partition参数不能同时出现,否则会在安装过程中报错中止。

④ 验证配置:

打开Web浏览器并访问您的HTTP服务器的地址(例如,http://your-server-ip/centos/ 应该列出CentOS安装源的文件)。同样,http://your-server-ip/ksdir/ks8.cfg 应该能够下载Kickstart文件。

⑤ 调整防火墙:

如果您的服务器有防火墙运行,请确保HTTP(端口80)和HTTPS(端口443,如果适用)是开放的。

(3)配置 TFTP 服务

复制启动相关文件到/var/lib/tftpboot/中。

#cd /mnt
#cp -r images/pxeboot/* /var/lib/tftpboot/
#cp EFI/BOOT/grubaa64.efi /var/lib/tftpboot/
#cp EFI/BOOT/grub.cfg /var/lib/tftpboot/

修改启动菜单,执行命令:

#vim /var/lib/tftpboot/grub.cfg

修改后的菜单配置文件如下图所示:

f32e8d906b04deb1cca2d7eb699ca490.png

其中192.168.188.136是服务端的IP地址。

3、启动 PXE 服务端

服务端确保所有服务已启动并运行:

#systemctl disable firewalld
#systemctl stop firewalld.service
#systemctl start NetworkManager
#systemctl start dhcpd
#systemctl start tftp
#systemctl start httpd
#systemctl stop NetworkManager

4、系统安装

将需要安装 CentOS 的客户端设置为从网络启动(PXE 启动),通常在 BIOS/UEFI 中设置网络启动为第一启动项。

587b1cb3075aaeaa3a5446ddae6af08d.jpg

注意事项:

(1)防火墙配置:确保防火墙允许 DHCP、TFTP 和 HTTP/FTP 服务的端口。

(2)网络配置:确保 PXE 服务器和客户端在同一个子网内,或者 DHCP 服务器能够正确地传递 next-server 和 filename 选项。

(3)镜像版本:根据需要安装的 CentOS 版本,调整相应的配置文件路径。

本期内容以 PXE 技术为核心,通过理论讲解与实践案例相结合的方式,全面展示了其在操作系统部署领域的强大功能与广泛应用前景。希望帮主读者更好利用 PXE 技术实现计算机通过网络从远程服务器下载并安装操作系统,从而极大地提升运维效率与灵活性。

**欢迎大家关注OurBMC社区,了解更多BMC技术干货。
OurBMC社区官方网站:**
https://www.ourbmc.cn/


OurBMC
28 声望19 粉丝

OurBMC社区是由基础软硬件企业、第三方机构、高等院校、个人开发者等各方共同参与建设的开源社区,社区基于开放、平等、协作、创新的基本原则,携手社区成员,共同构建自主、先进、软硬一体的BMC技术全栈,共同推...