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.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

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

l 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状态码。


# 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官方网站?