Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 60e539a694 | |||
| 6e4c2f37c5 |
@@ -1,57 +1,158 @@
|
|||||||
# ImmortalWrt Image Builder
|
# 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
|
```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/` 目录中。
|
### 构建 x86-64 固件
|
||||||
|
|
||||||
#### r2s 固件构建
|
|
||||||
|
|
||||||
```bash
|
```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
|
||||||
|
```
|
||||||
|
|
||||||
|
构建完成后,固件文件会生成到:
|
||||||
|
|
||||||
|
```text
|
||||||
|
r2s_output/
|
||||||
|
```
|
||||||
|
|
||||||
|
如果输出目录已经存在,脚本会先将旧目录备份为带时间戳的 `.bak` 目录,再移动新的构建结果。
|
||||||
|
|
||||||
|
## 默认配置
|
||||||
|
|
||||||
|
### x86-64
|
||||||
|
|
||||||
|
- ImmortalWrt 版本:`25.12.0`
|
||||||
|
- Target:`x86/64`
|
||||||
|
- Profile:`generic`
|
||||||
|
- 根分区大小:`500 MB`
|
||||||
|
- 输出目录:`output/`
|
||||||
|
|
||||||
|
### NanoPi R2S
|
||||||
|
|
||||||
|
- ImmortalWrt 版本:`25.12.0`
|
||||||
|
- Target:`rockchip/armv8`
|
||||||
|
- Profile:`friendlyarm_nanopi-r2s`
|
||||||
|
- 根分区大小:`500 MB`
|
||||||
|
- 输出目录:`r2s_output/`
|
||||||
|
|
||||||
|
## 自定义固件
|
||||||
|
|
||||||
|
### 修改 ImmortalWrt 版本
|
||||||
|
|
||||||
|
编辑对应脚本中的 `version` 变量:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
version="25.12.0"
|
version="25.12.0"
|
||||||
```
|
```
|
||||||
|
|
||||||
例如要构建其他版本,就把版本号改成 ImmortalWrt 官方下载站中存在的版本:
|
例如改为:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
version="24.10.2"
|
version="24.10.2"
|
||||||
```
|
```
|
||||||
|
|
||||||
保存后重新执行:
|
请确认该版本在 ImmortalWrt 官方下载站中存在,否则 Image Builder 下载会失败。
|
||||||
|
|
||||||
```bash
|
x86-64 对应下载路径:
|
||||||
bash main.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
脚本会根据该版本号下载对应的 x86-64 Image Builder:
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
https://downloads.immortalwrt.org/releases/<version>/targets/x86/64/
|
https://downloads.immortalwrt.org/releases/<version>/targets/x86/64/
|
||||||
```
|
```
|
||||||
|
|
||||||
- 如何修改构建插件?
|
NanoPi R2S 对应下载路径:
|
||||||
|
|
||||||
修改脚本代码中的 build()函数`PKG_LIST`变量
|
```text
|
||||||
|
https://downloads.immortalwrt.org/releases/<version>/targets/rockchip/armv8/
|
||||||
|
```
|
||||||
|
|
||||||
- 如何修改固件根分区大小
|
### 修改预装软件包
|
||||||
|
|
||||||
修改代码中的`rootfs_partsize`变量
|
编辑对应脚本中 `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
|
||||||
|
```
|
||||||
|
|||||||
@@ -217,6 +217,9 @@ cd "$project_dir"
|
|||||||
# 要构建的 ImmortalWrt 版本, 可以在 https://github.com/immortalwrt/immortalwrt 查询版本号
|
# 要构建的 ImmortalWrt 版本, 可以在 https://github.com/immortalwrt/immortalwrt 查询版本号
|
||||||
version="25.12.0"
|
version="25.12.0"
|
||||||
|
|
||||||
|
# 根分区大小(单位: MB)
|
||||||
|
rootfs_partsize=500
|
||||||
|
|
||||||
# 安装依赖
|
# 安装依赖
|
||||||
install_dependencies
|
install_dependencies
|
||||||
|
|
||||||
@@ -224,4 +227,4 @@ install_dependencies
|
|||||||
builder_dir="$(download_imagebuilder "$version")"
|
builder_dir="$(download_imagebuilder "$version")"
|
||||||
|
|
||||||
# 构建固件
|
# 构建固件
|
||||||
build $builder_dir 500 # 500 表示根分区大小为 500MB
|
build $builder_dir $rootfs_partsize
|
||||||
|
|||||||
Reference in New Issue
Block a user