Linux如何配置PXE网络启动_Linux DHCP+TFTP+HTTP服务搭建【部署】
发布时间 - 2026-01-30 00:00:00 点击率:次需部署DHCP、TFTP、HTTP三服务:一、DHCP分配IP并指定TFTP地址与pxelinux.0;二、TFTP提供pxelinux.0、vmlinuz、initrd.img;三、HTTP提供安装源及ks.cfg;四、配置pxelinux.cfg/default启动菜单;五、可选Kickstart实现无人值守安装。
如果您希望在局域网内通过网络启动多台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.cfg;sudo chmod -R 755 /var/lib/tftpboot;sudo 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/centos8;sudo mount -o loop /path/to/CentOS-8-x86_64-1905-dvd1.iso /var/www/html/centos8。
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 Instal 
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状态码。
# linux
# redis
# centos
# html
# apache
# seo
# 防火墙
# app
# ipv6
# 端口
# ubuntu
# cURL
# auto
# 接口
# var
# append
# 作用域
# default
# background
# http
# debian
# 客户端
# 配置文件
# 软件包
# 可选
# 启动菜单
# 如果您
# 下一页
# 均为
# 将其
# 所需
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
Laravel如何保护应用免受CSRF攻击?(原理和示例)
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
如何快速搭建高效可靠的建站解决方案?
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
zabbix利用python脚本发送报警邮件的方法
如何在Windows 2008云服务器安全搭建网站?
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
如何在不使用负向后查找的情况下匹配特定条件前的换行符
nginx修改上传文件大小限制的方法
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
Laravel如何使用Eloquent进行子查询
如何在云服务器上快速搭建个人网站?
免费视频制作网站,更新又快又好的免费电影网站?
Laravel如何创建自定义中间件?(Middleware代码示例)
浅谈javascript alert和confirm的美化
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Python高阶函数应用_函数作为参数说明【指导】
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
php485函数参数是什么意思_php485各参数详细说明【介绍】
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
高性能网站服务器部署指南:稳定运行与安全配置优化方案
原生JS实现图片轮播切换效果
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
Laravel storage目录权限问题_Laravel文件写入权限设置
历史网站制作软件,华为如何找回被删除的网站?
如何用5美元大硬盘VPS安全高效搭建个人网站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
如何在橙子建站上传落地页?操作指南详解
如何用狗爹虚拟主机快速搭建网站?
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
如何获取PHP WAP自助建站系统源码?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
js实现获取鼠标当前的位置
Laravel中的Facade(门面)到底是什么原理
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
如何选择PHP开源工具快速搭建网站?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
深圳网站制作的公司有哪些,dido官方网站?

