最近本人工作中遇到有自动化装机需求,所以使用到了PXE。考虑到不同引导模式下引导文件会有差异,需要定制化开发,这才想到利用IPXE来个性化编译自己的引导文件。
之所以写这篇文章就是因为网上的好多教程都不是很对,很容易踩坑白费力气,且浪费大把时间。本文小编一一实践过来的,特此记录所有步骤和报错原因,供有需要的人参考。
一、IPXE官网地址
IPXE官网网址:https://ipxe.org/download
二、准备编译环境
注意: 这里官网并未提及到编译环境所使用的gcc版本,网上的好多教程都未提及到,本人亲测的centos7以下环境都未成功过,最后选择安装了Centos Stream 9,此系统gcc版本为11.4.1。
环境 | gcc版本 | 编译结果 |
---|---|---|
centos7 | 4.8.5 | 未通过 |
centos7 | 7.X.X | 未通过 |
centos7 | 9.3.0 | 未通过 |
Centos Stream 9 | 11.4.1 | 通过 |
操作系统:CentOS Stream 9
内核版本:5.14.0-425.el9.x86_64 #1
(一)安装编译所需的软件包
yum install gcc binutils make perl liblzma mtools mkisofs xz-devel perl
此处报错信息提示未找到liblzma,不用管。
(二)下载IPXE源码
git clone https://github.com/ipxe/ipxe.git
github仓库地址:https://github.com/ipxe/ipxe.git
若在服务器上下载失败,可手动利用特殊手段下载到源码包,上传到服务器中即可。
(三)编译IPXE源码
解压IPXE源码包,执行命令。
cd ipxe/src
make
三、常见问题及解决方法
1、报错genfsimg权限不够
make: util/genfsimg: 权限不够
make: *** [arch/x86/Makefile.pcbios:68:bin/ipxe.iso] 错误 127
解决方法:genfsimg原文件没有可执行权限,添加执行权限即可。
chmod 755 util/genfsimg
2、报错 Can’t locate FindBin.pm in @INC (you may need to install the FindBin module)
解决方法:perl软件包未安装,进行安装即可。
yum install perl
3、报错 cc1: error: unrecognized command line option ‘-XXXXXXXX’ [-Werror]
解决方法:此报错多半是因为gcc版本不对,需要升级gcc版本。