news 2026/5/2 16:32:33

27.PXE高效批量网络装机

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
27.PXE高效批量网络装机

1.挂载镜像文件:

mkdir -p /mnt/cdrom

mount /dev/sr0 /mnt/cdrom

2.安装必要组件:

sudo yum install -y httpd dhcp tftp-server syslinux xinetd

配置 TFTP 服务(传输引导文件)

TFTP 用于传输 pxelinux.0、vmlinuz、initrd.img 等小文件。

3. 启用 TFTP

3.1开启服务

sudo systemctl enable tftp.socket

sudo systemctl start tftp.socket

默认根目录:/var/lib/tftpboot

3.2. 复制引导文件

创建目录结构

sudo mkdir -p /var/lib/tftpboot/pxelinux.cfg

复制 syslinux 引导文件

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

sudo cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/

sudo cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/ # CentOS 7 需要

从 ISO 复制内核和 initrd

sudo cp /mnt/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

4.复制到 Apache 目录

sudo mkdir -p /var/www/html/centos7 sudo cp -r /mnt/cdrom/* /var/www/html/centos7/
sudo systemctl enable --now httpd sudo systemctl enable --now dhcpd sudo systemctl enable --now tftp.socket

dhcpd启动可能失败

从日志可以明确dhcpd启动失败的原因:配置文件中未为网络接口(virbr0、ens33)配置对应的子网声明,导致服务无可用监听接口而退出。

问题核心

日志中“* No subnet declaration for virbr0”“* No subnet declaration for ens33”说明:/etc/dhcp/dhcpd.conf未定义这些接口所属的子网段配置,dhcpd无法确定为哪些网段分配IP。

解决步骤

  1. 编辑dhcpd配置文件
    打开/etc/dhcp/dhcpd.conf,添加对应接口的子网声明(以ens33的192.168.43.0网段为例):
subnet 192.168.43.0 netmask 255.255.255.0 { range 192.168.43.100 192.168.43.200; # IP分配范围 option routers 192.168.43.1; # 网关 option domain-name-servers 8.8.8.8; # DNS服务器 }
  1. 重启dhcpd服务
systemctl restart dhcpd

5.配置 DHCP 服务

sudo tee /etc/dhcp/dhcpd.conf <<EOF

subnet 192.168.10.0 netmask 255.255.255.0 {

range 192.168.10.100 192.168.10.200;

option routers 192.168.10.2;

option domain-name-servers 8.8.8.8;

option subnet-mask 255.255.255.0;

PXE 关键配置 ↓

next-server 192.168.10.67; # TFTP 服务器 IP(本机)

filename “pxelinux.0”; # 引导文件名

}

EOF

7.创建 PXE 启动菜单

sudo tee /var/lib/tftpboot/pxelinux.cfg/default <<‘EOF’

default menu.c32

prompt 0

timeout 300

menu title ########## PXE Boot Menu ##########

label 1

menu label ^1) Install CentOS 7 (Auto)

kernel vmlinuz

append initrd=initrd.img method=http://192.168.10.67/centos7 ks=http://192.168.10.67/ks.cfg

label 2

menu label ^2) Install CentOS 7 (Manual)

kernel vmlinuz

append initrd=initrd.img method=http://192.168.10.67/centos7

EOF

8.创建 Kickstart 文件(关键!)

sudo tee /var/www/html/ks.cfg <<‘EOF’

#version=DEVEL

auth --enableshadow --passalgo=sha512

url --url="http://192.168.84.139/centos7"

keyboard --vckeymap=us --xlayouts=‘us’

rootpw 123456

lang en_US.UTF-8

network --bootproto=dhcp --device=eth0 --onboot=on

reboot

firewall --disabled

selinux --disabled

skipx

timezone Asia/Shanghai --isUtc

手动分区

clearpart --all --initlabel

part /boot --size=500 --fstype=xfs

part swap --size=4096 --fstype=swap

part / --grow --fstype=xfs

%packages

@^minimal

%end

EOF

9.重启所有服务

sudo systemctl restart httpd dhcpd tftp.socket

10.客户机设置(VMware)

  1. 开机按F2→ BIOS → Boot Order
  2. Network BootPXE移到第一位
  3. 保存退出(F10)

11.启动安装

  • 客户机将自动:
    1. 获取 IP(DHCP)
    2. 下载<font style="color:rgb(17, 17, 51);background-color:rgba(175, 184, 193, 0.2);">pxelinux.0</font>(TFTP)
    3. 加载内核和 initrd(TFTP)
    4. 从 HTTP 获取安装源和<font style="color:rgb(17, 17, 51);background-color:rgba(175, 184, 193, 0.2);">ks.cfg</font>
    5. 自动分区(LVM)→ 安装系统 → 重启

重点:PXE装机时,虚拟机内存不能只给1G,要2G以上,不然会一直报错

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:15:39

企业数字化转型必经的四大阶段:从入门到精通!

互联网时代&#xff0c;你见过多少昔日巨头倒下的身影&#xff1f;诺基亚、柯达、百年老店西尔斯…这些曾经叱咤风云的企业&#xff0c;如今只能成为商学院里的案例。它们的陨落有着共同的原因&#xff1a;错过了数字化转型的浪潮。 数字化转型并非简单地购买几台设备、上线几…

作者头像 李华
网站建设 2026/5/1 14:32:55

SSH会话管理实战:识别与清理非法连接的完整指南

引言&#xff1a;SSH安全的重要性 在当前的云原生和远程办公时代&#xff0c;SSH&#xff08;Secure Shell&#xff09;已成为系统管理的基石。然而&#xff0c;不当的SSH会话管理不仅会导致资源浪费&#xff0c;更可能成为安全攻击的入口。最近一起真实案例中&#xff0c;某企…

作者头像 李华
网站建设 2026/5/1 5:59:19

毕设成品 stm32 RFID智能仓库管理系统(源码+硬件+论文)

文章目录 0 前言1 主要功能3 核心软件设计4 实现效果5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系…

作者头像 李华
网站建设 2026/5/1 11:47:31

mongodb备份的脚本

一、mongodump 备份脚本#!/bin/bash # 每日全量备份 MongoDB&#xff0c;保留 7 天################ 可改配置 ################ MONGO_HOST"localhost" MONGO_PORT"27017" MONGO_USER"" # 如未启用 auth 留空 MONGO_PASS"&qu…

作者头像 李华
网站建设 2026/5/1 16:16:24

“为什么wait和notify必须在同步块中调用?Java面试必看!”

文章目录 为什么 wait 和 notify 必须在同步块中调用&#xff1f;Java 面试必看&#xff01;1. 故事引入&#xff1a;线程世界的“监狱”与“通风口”2. 理论基础&#xff1a;Java 内存模型中的“锁”机制2.1 对象监视器&#xff1a;同步块的“灵魂”2.2 wait() 和 notify() 的…

作者头像 李华