ipxe编译(分别编译基于bios+ipxe、uefi+ipxe的方式)

1,085次阅读
没有评论

一、IPXE官网地址

IPXE官网网址:https://ipxe.org/download

二、编译环境

Debian12全新安装环境,使用root账号登录后,安装必要的软件包

apt install nano git build-essential perl liblzma-dev
apt install mkisofs #不生成ISO不需要
apt install syslinux #不生成ISO不需要

三、IPXE源码下载

git clone https://github.com/ipxe/ipxe.git

四、自定义功能

1、启用ipxe的console命令,让ipxe支持调整分辨率 以及 支持自定义背景图片

cd /root/ipxe/src
sed -i 's/\/\/#define\ IMAGE_PNG/#define\ IMAGE_PNG/' config/general.h
sed -i 's/\/\/#define\ CONSOLE_CMD/#define\ CONSOLE_CMD/' config/general.h
sed -i 's/\/\/#define\tCONSOLE_FRAMEBUFFER/#define\tCONSOLE_FRAMEBUFFER/' config/console.h

2、启用ipxe的ping命令

cd /root/ipxe/src
sed -i 's/\/\/#define\ PING_CMD/#define\ PING_CMD/' config/general.h
sed -i 's/\/\/#define\ IPSTAT_CMD/#define\ IPSTAT_CMD/' config/general.h

3、NFS 协议支持

sed -i 's/#undef\tDOWNLOAD_PROTO_NFS/#define\tDOWNLOAD_PROTO_NFS/' config/general.h

4、poweroff 与reboot 命令支持

sed -i 's/\/\/#define\ REBOOT_CMD/#define\ REBOOT_CMD/' config/general.h
sed -i 's/\/\/#define\ POWEROFF/#define\ POWEROFF/' config/general.h

5、 params 命令支持 (开启他,可以传参 platform ${builtin/platform} 的 pcbios 和 efi 参数值)

sed -i 's/\/\/#define\ PARAM_CMD/#define\ PARAM_CMD/' config/general.h

6、启用sanboot 部分协议

sed -i 's/\/\/#undef\tSANBOOT_PROTO_ISCSI/#define\tSANBOOT_PROTO_ISCSI/' config/general.h
sed -i 's/\/\/#undef\tSANBOOT_PROTO_HTTP/#define\tSANBOOT_PROTO_HTTP/' config/general.h

五、为IPXE添加嵌入脚本

在 ipxe/src中创建一个脚本 boot.ipxe,内容为

#!ipxe
dhcp
chain --autofree tftp://${next-server}/bios.cfg

其中bios.cfg在每次编译时不同模块时,请修改名称。

六、编译IPXE

1.编译标准 iPXE(BIOS) 镜像: 运行以下命令编译一个标准的 iPXE 镜像:

make bin/undionly.kpxe EMBED=boot.ipxe
cp bin/undionly.kpxe /root/bios.kpxe

2.编译标准 iPXE(UEFI64)镜像:运行以下命令编译标准的 UEFI64镜像:
修改boot.ipxe文件中的bios.cfg为uefi.cfg

sed -i 's/bios.cfg/uefi.cfg/' boot.ipxe
make bin-x86_64-efi/ipxe.efi EMBED=boot.ipxe
cp bin-x86_64-efi/ipxe.efi /root/boot.efi

3.编译iPXE(ARM64)镜像:运行以下命令编译标准的 ARM64镜像:
修改boot.ipxe文件中的boot.cfg为arm64.cfg

sed -i 's/boot.cfg/arm64.cfg/' boot.ipxe
apt install gcc-aarch64-linux-gnu
make CROSS=aarch64-linux-gnu- bin-arm64-efi/ipxe.efi EMBED=boot.ipxe
cp bin-arm64-efi/ipxe.efi /root/arm64.efi
正文完
 0
评论(没有评论)
验证码