0

0

Linux如何配置PXE网络启动_Linux DHCP+TFTP+HTTP服务搭建【部署】

裘德小鎮的故事

裘德小鎮的故事

发布时间:2026-01-30 10:13:02

|

227人浏览过

|

来源于php中文网

原创

需部署DHCP、TFTP、HTTP三服务:一、DHCP分配IP并指定TFTP地址与pxelinux.0;二、TFTP提供pxelinux.0、vmlinuz、initrd.img;三、HTTP提供安装源及ks.cfg;四、配置pxelinux.cfg/default启动菜单;五、可选Kickstart实现无人值守安装。

linux如何配置pxe网络启动_linux dhcp+tftp+http服务搭建【部署】

如果您希望在局域网内通过网络启动多台Linux主机,需依赖PXE(Preboot Execution Environment)机制,该机制要求DHCP分配IP并告知客户端TFTP服务器地址与启动文件名,TFTP提供引导程序(如pxelinux.0),HTTP或NFS提供完整安装环境。以下是完成此部署的具体步骤:

一、安装并配置DHCP服务

DHCP服务负责为客户端分配IP地址,并指定下一页启动所需的TFTP服务器地址及初始引导文件名(filename)。必须确保DHCP作用域未与其他网络设备冲突,且option 66与option 67正确指向后续部署的TFTP服务。

1、执行命令安装isc-dhcp-server:sudo apt install isc-dhcp-server(Ubuntu/Debian)或sudo yum install dhcp-server(CentOS 7)。

2、编辑主配置文件/etc/dhcp/dhcpd.conf,添加如下段落(假设局域网为192.168.10.0/24,TFTP服务器IP为192.168.10.5):subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.100 192.168.10.200; option routers 192.168.10.1; option domain-name-servers 192.168.10.1; option tftp-server-name "192.168.10.5"; filename "pxelinux.0"; }

3、指定监听接口,修改/etc/default/isc-dhcp-server中INTERFACESv4值为"ens33"(以实际网卡名为准)。

4、重启服务并检查状态:sudo systemctl restart isc-dhcp-server && sudo systemctl status isc-dhcp-server

二、部署TFTP服务并放置引导文件

TFTP服务用于传输体积小但关键的初始引导组件,包括pxelinux.0、内核vmlinuz和初始化内存盘initrd.img。其根目录必须可被DHCP所声明的路径访问,且需启用tftpd-hpa的secure模式对应路径限制。

1、安装tftpd-hpa:sudo apt install tftpd-hpa(Ubuntu/Debian)或sudo yum install tftp-server(CentOS 7)。

2、创建TFTP根目录并赋权:sudo mkdir -p /var/lib/tftpboot/pxelinux.cfgsudo chmod -R 755 /var/lib/tftpbootsudo chown -R nobody:nogroup /var/lib/tftpboot

3、复制syslinux引导文件:下载syslinux软件包后提取pxelinux.0,或直接安装syslinux并拷贝:sudo apt install syslinux-common && sudo cp /usr/lib/PXELINUX/pxelinux.0 /var/lib/tftpboot/

4、将Linux发行版的vmlinuz与initrd.img放入/var/lib/tftpboot/centos8/(路径可自定义),例如:sudo cp /mnt/isolinux/vmlinuz /var/lib/tftpboot/centos8/sudo cp /mnt/isolinux/initrd.img /var/lib/tftpboot/centos8/

三、配置HTTP服务提供安装源

HTTP服务替代传统NFS,用于向PXE客户端提供完整的安装树(如CentOS的AppStream、BaseOS目录),避免TFTP传输大文件的低效与失败风险。客户端在加载内核后,通过HTTP URL获取安装介质内容。

1、安装Apache:sudo apt install apache2(Ubuntu/Debian)或sudo yum install httpd(CentOS 7)。

2、挂载ISO镜像至Web根目录子路径:sudo mkdir -p /var/www/html/centos8sudo mount -o loop /path/to/CentOS-8-x86_64-1905-dvd1.iso /var/www/html/centos8

英特尔AI工具
英特尔AI工具

英特尔AI与机器学习解决方案

下载

3、设置SELinux策略(仅CentOS/RHEL):sudo setsebool -P httpd_can_network_connect 1;若启用防火墙,放行80端口sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --reload

4、启动并启用HTTP服务:sudo systemctl enable apache2 && sudo systemctl start apache2(Ubuntu)或sudo systemctl enable httpd && sudo systemctl start httpd(CentOS)。

四、构建PXELINUX启动菜单

pxelinux.cfg目录下的配置文件控制启动项显示与内核参数传递。默认查找顺序为MAC地址文件 → IP十六进制文件 → default文件。使用default可统一管理所有客户端启动行为。

1、生成默认配置文件:sudo nano /var/lib/tftpboot/pxelinux.cfg/default

2、写入标准启动条目(以CentOS 8为例):default menu.c32 timeout 300 menu title PXE Network Boot menu background splash.png label linux menu label Install CentOS 8 kernel centos8/vmlinuz append initrd=centos8/initrd.img inst.ks=http://192.168.10.5/centos8/ks.cfg inst.ks.device=link inst.repo=http://192.168.10.5/centos8/

3、如需图形化菜单,下载menu.c32并放入/var/lib/tftpboot/:sudo cp /usr/lib/syslinux/modules/bios/menu.c32 /var/lib/tftpboot/

4、验证文件权限:ls -l /var/lib/tftpboot/应显示pxelinux.0、menu.c32、centos8/目录及pxelinux.cfg/default均为可读。

五、准备Kickstart自动安装应答文件(可选但推荐)

Kickstart文件(.ks)使无人值守安装成为可能,定义分区方案、软件包选择、root密码等。HTTP服务须将其暴露于可公开访问路径,供内核启动时通过inst.ks参数拉取。

1、创建ks.cfg文件:sudo nano /var/www/html/centos8/ks.cfg

2、填入最小化有效配置(示例):#version=RHEL8 firewall --disabled keyboard --vckeymap=us --xlayouts='us' rootpw --plaintext redhat network --bootproto=dhcp --device=link --onboot=off --ipv6=auto --no-activate firstboot --disable ignoredisk --only-use=sda reboot url --url="http://192.168.10.5/centos8/" text skipx zerombr clearpart --all --initlabel autopart --type=lvm %packages @^minimal-environment %end

3、设置文件属主与权限:sudo chown root:root /var/www/html/centos8/ks.cfg && sudo chmod 644 /var/www/html/centos8/ks.cfg

4、测试HTTP可访问性:curl -I http://192.168.10.5/centos8/ks.cfg应返回HTTP 200状态码。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

441

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

178

2023.10.30

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1155

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

213

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1929

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

22

2026.01.19

append用法
append用法

append是一个常用的命令行工具,用于将一个文件的内容追加到另一个文件的末尾。想了解更多append用法相关内容,可以阅读本专题下面的文章。

344

2023.10.25

python中append的用法
python中append的用法

在Python中,append()是列表对象的一个方法,用于向列表末尾添加一个元素。想了解更多append的更多内容,可以阅读本专题下面的文章。

1074

2023.11.14

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.1万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号