diff --git a/README.md b/README.md index 69a9fff..b513b9b 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,158 @@ # ImmortalWrt Image Builder -这是一个用于快速构建 ImmortalWrt 固件的自动化项目,基于 ImmortalWrt 官方 Image Builder 生成 x86_64 平台固件。它适合用于定制个人或家庭网络环境中的 OpenWrt/ImmortalWrt 系统. +这是一个用于快速构建 ImmortalWrt 固件的自动化项目,基于 ImmortalWrt 官方 Image Builder 生成自定义固件。 -## 使用说明 +当前仓库提供两个构建脚本: -#### x86-64 固件构建 +- `x86-64.sh`:构建 x86/64 通用固件 +- `r2s.sh`:构建 FriendlyARM NanoPi R2S 固件 + +脚本会自动安装构建依赖、下载对应版本的 Image Builder、复制 `files/` 目录中的自定义文件,并执行固件构建。 + +## 环境要求 + +建议在 Debian/Ubuntu 或 WSL Ubuntu 环境中运行。 + + +## 使用方法 + +克隆本仓库: ```bash -curl -fsSL https://gitea.9001003.xyz/William/immortalwrt_image_builder/raw/branch/main/x86-64.sh | bash +git clone https://gitea.9001003.xyz/William/immortalwrt_image_builder.git +cd immortalwrt_image_builder ``` -构建完成后,固件文件会生成在 `output/` 目录中。 - -#### r2s 固件构建 +### 构建 x86-64 固件 ```bash -curl -fsSL https://gitea.9001003.xyz/William/immortalwrt_image_builder/raw/branch/main/r2s.sh | bash +sudo bash x86-64.sh ``` -构建完成后,固件文件会生成在 `r2s_output/` 目录中。 +构建完成后,固件文件会生成到: -## 其他问题 +```text +output/ +``` -- 如何修改构建固件的版本? +### 构建 NanoPi R2S 固件 - 以 `x86-64` 固件为例, 在 `main.sh` 中修改 `version` 变量: +```bash +sudo bash r2s.sh +``` - ```bash - version="25.12.0" - ``` +构建完成后,固件文件会生成到: - 例如要构建其他版本,就把版本号改成 ImmortalWrt 官方下载站中存在的版本: +```text +r2s_output/ +``` - ```bash - version="24.10.2" - ``` +如果输出目录已经存在,脚本会先将旧目录备份为带时间戳的 `.bak` 目录,再移动新的构建结果。 - 保存后重新执行: +## 默认配置 - ```bash - bash main.sh - ``` +### x86-64 - 脚本会根据该版本号下载对应的 x86-64 Image Builder: +- ImmortalWrt 版本:`25.12.0` +- Target:`x86/64` +- Profile:`generic` +- 根分区大小:`500 MB` +- 输出目录:`output/` - ```text - https://downloads.immortalwrt.org/releases//targets/x86/64/ - ``` +### NanoPi R2S -- 如何修改构建插件? +- ImmortalWrt 版本:`25.12.0` +- Target:`rockchip/armv8` +- Profile:`friendlyarm_nanopi-r2s` +- 根分区大小:`500 MB` +- 输出目录:`r2s_output/` - 修改脚本代码中的 build()函数`PKG_LIST`变量 +## 自定义固件 -- 如何修改固件根分区大小 +### 修改 ImmortalWrt 版本 - 修改代码中的`rootfs_partsize`变量 +编辑对应脚本中的 `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 +```