# ImmortalWrt Image Builder 这是一个用于快速构建 ImmortalWrt 固件的自动化项目,基于 ImmortalWrt 官方 Image Builder 生成自定义固件。 当前仓库提供两个构建脚本: - `x86-64.sh`:构建 x86/64 通用固件 - `r2s.sh`:构建 FriendlyARM NanoPi R2S 固件 脚本会自动安装构建依赖、下载对应版本的 Image Builder、复制 `files/` 目录中的自定义文件,并执行固件构建。 ## 环境要求 建议在 Debian/Ubuntu 或 WSL Ubuntu 环境中运行。 最好找一个独立的环境执行代码. 官方说最好找一个非root用户执行代码. 怕是root权限太大, 怕出现误删文件的情况. ## 使用方法 克隆本仓库: ```bash git clone https://gitea.9001003.xyz/William/immortalwrt_image_builder.git cd immortalwrt_image_builder ``` ### 构建 x86-64 固件 ```bash sudo bash x86-64.sh ``` 构建完成后,固件文件会生成到: ```text output/ ``` ### 构建 NanoPi R2S 固件 ```bash sudo bash r2s.sh ``` 构建完成后,固件文件会生成到: ```text r2s_output/ ``` 如果输出目录已经存在,脚本会先将旧目录备份为带时间戳的 `.bak` 目录,再移动新的构建结果。 ## 默认配置 ### x86-64 - ImmortalWrt 版本:`25.12.0` - Target:`x86/64` - Profile:`generic` - 根分区大小:`600 MB` - 输出目录:`output/` ### NanoPi R2S - ImmortalWrt 版本:`25.12.0` - Target:`rockchip/armv8` - Profile:`friendlyarm_nanopi-r2s` - 根分区大小:`600 MB` - 输出目录:`r2s_output/` ## 自定义固件 ### 修改 ImmortalWrt 版本 编辑对应脚本中的 `version` 变量: ```bash version="25.12.0" ``` 例如改为: ```bash version="24.10.2" ``` 请确认该版本在 ImmortalWrt 官方下载站中存在,否则 Image Builder 下载会失败。 x86-64 对应下载路径: ```text https://downloads.immortalwrt.org/releases//targets/x86/64/ ``` NanoPi R2S 对应下载路径: ```text https://downloads.immortalwrt.org/releases//targets/rockchip/armv8/ ``` ### 修改预装软件包 编辑对应脚本中 `build()` 函数里的 `PKG_LIST` 数组。 示例: ```bash PKG_LIST=( openssh-sftp-server vim-full curl luci-i18n-firewall-zh-cn ) ``` 如果要从固件中移除某个包,可以在包名前加 `-`,例如: ```bash -dropbear ``` ### 修改根分区大小 脚本最后会调用 `build` 函数并传入根分区大小,单位为 MB。 示例: ```bash rootfs_partsize=500 # 根分区大小,单位为 MB build $builder_dir $rootfs_partsize ``` ### 添加自定义文件 仓库中的 `files/` 目录会被复制到固件根文件系统。 例如: ```text files/etc/uci-defaults/99-sshd-root-login ``` 构建后会出现在固件中的: ```text /etc/uci-defaults/99-sshd-root-login ``` 这个机制适合放置默认配置、初始化脚本、SSH 配置、LuCI 配置等文件。 ## 注意事项 - 不建议直接使用 `curl | bash` 运行脚本,因为脚本依赖仓库中的 `files/` 目录。 - 如果下载或安装依赖失败,请检查网络、系统源以及当前用户权限。 - 如需查看某个目标支持的全部 profile,可进入解压后的 Image Builder 目录执行: ```bash make info ```