Files
immortalwrt_image_builder/README.md
T
2026-06-27 16:15:37 +08:00

163 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/<version>/targets/x86/64/
```
NanoPi R2S 对应下载路径:
```text
https://downloads.immortalwrt.org/releases/<version>/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
```