ImmortalWrt自定义固件编译方法之一:ImageBuilder
Image Builder是一个预编译环境,适用于创建自定义映像,无需从源代码编译,支持下载预编译软件包并将其集成进固件中。
- Image Builder仅在64位Linux中运行
- 测试环境为Ubuntu 24.04,设备为x86/64
- 以非root用户运行
安装依赖
sudo apt update |
sudo apt update |
其余系统参阅Build system setup
获取Image Builder
进入ImmortalWrt Download页面
选择需要编译的版本

建议选择最新的Release版本
选择设备型号


获取Immage Builder并解压缩
在Supplementary Files下找到immortalwrt-imagebuilder-23.05.4-x86-64.Linux-x86_64.tar.xz,鼠标右键复制链接地址,在Ubuntu中输入以下命令:
wget https://downloads.immortalwrt.org/releases/24.10.1/targets/x86/64/immortalwrt-imagebuilder-24.10.1-x86-64.Linux-x86_64.tar.zst # 链接地址为刚鼠标右键复制所得 |
Image Builder 统一命名为 immortalwrt-imagebuilder[-<version>]-<platform>.Linux-<ib_arch>.tar.xz
使用Immage Builder编译固件
Immage Builder可使用的变量:
变量 | 描述 |
---|---|
PROFILE | 指定需要构建的设备 |
PACKAGES | 需要集成进固件的软件包列表 |
FILES | 要集成的自定义文件的目录 |
BIN_DIR | 固件输出文件夹(默认 bin) |
EXTRA_IMAGE_NAME | 自定义附加固件文件名 |
DISABLED_SERVICES | /etc/init.d 中要禁用的服务名称,如 dnsmasq 的 dhcp |
确定设备
PROFILE 变量指定要构建的目标固件,运行 make info可以获取可用的设备列表以及默认软件包配置。
PROFILE="generic" |
增加或删除软件包
PACKAGES="pkg1 pkg2 pkg3 -pkg4 -pkg5 -pkg6" |
- 示例为增加pkg1、pkg2、pkg3,并去除 pkg4、pkg5、pkg6
- 可通过以下地址获取ImmortalWrt所有可用软件包
- https://downloads.immortalwrt.org/releases/23.05.4/packages/x86_64/packages/
- https://downloads.immortalwrt.org/releases/23.05.4/packages/x86_64/luci/
- 在Image Builder中,opkg不会自动安装翻译文件,如需安装LuCI插件和翻译包,要优先写翻译包的名称。如luci-i18n-zerotier-zh-cn
自定义软件包
如果想要把ImmortalWrt没有的软件包集成到固件中,可将ipk文件放到根目录下的packages文件夹中,并将其添加到PACKAGES变量中。
自定义文件夹
FILES变量允许将自定义配置文件包含在构建的固件中,比如修改默认的LAN IP地址,在files/etc/uci-defaults目录下(如不存在请新建)新建99-custom文件
|
自定义配置
有一些配置无法通过变量来指定,需要通过手动修改.config文件,
将Root filesystem images中的CONFIG_ISO_IMAGES=y
# CONFIG_ISO_IMAGES is not set
还可以修改kernel和rootfs的大小:
CONFIG_TARGET_KERNEL_PARTSIZE=64 |
添加自定义软件源
编辑根目录的repositories.conf文件,注释掉option check_signature
并加入自己软件源即可
## Place your custom repositories here, they must match the architecture and version. |
kenzok8这个软件源更新比较快,尴尬的是因为下载量大服务器的流量不够用,二是https证书经常过期
构建固件
选择好配置文件、插件和自定义文件夹后,使用make image命令构建固件:
make image PROFILE="profile-name" PACKAGES="pkg1 pkg2 pkg3 -pkg4 -pkg5 -pkg6" FILES="files" |
编译好的固件存放于bin目录下
清理编译
要清理临时构建文件和生成的固件,使用make clean命令
例子
make image \ |
如骗译过程中报qcow2 error错误,可使用以下命令修复:
sudo apt install qemu-utils |