深深的蓝
深蓝个人网站

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

一、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)
未经允许不得转载:深深的蓝 » ipxe编译(分别编译基于bios+ipxe、uefi+ipxe的方式)

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册