feat: 增加构建新三路由固件脚本

This commit is contained in:
Olia Lisa
2026-06-28 10:26:03 +08:00
parent 5deda07401
commit 502113f2a6
+156
View File
@@ -0,0 +1,156 @@
#!/bin/bash
set -e
install_dependencies() {
apt install -y build-essential libncurses-dev zlib1g-dev gawk git \
gettext libssl-dev xsltproc rsync wget unzip python3 qemu-utils mkisofs zstd
}
download_imagebuilder() {
local version="$1"
local target="ramips/mt7621"
local file="immortalwrt-imagebuilder-$version-ramips-mt7621.Linux-x86_64.tar.zst"
local url="https://downloads.immortalwrt.org/releases/$version/targets/ramips/mt7621/$file"
local folder="immortalwrt-imagebuilder-$version-ramips-mt7621.Linux-x86_64"
local marker="$folder/.ready"
if [ -f "$marker" ]; then
echo "$(pwd)/$folder"
return 0
fi
if [ -d "$folder" ] && [ ! -f "$marker" ]; then
rm -rf "$folder"
fi
wget -O "$file" "$url" >&2
tar -I zstd -xvf "$file" >&2
touch "$marker"
echo "$(pwd)/$folder"
}
build() {
# =============================================================
# 设备 Profile(必须与 ImageBuilder 支持的设备一致)
# =============================================================
PROFILE="d-team_newifi-d2"
# =============================================================
# 自定义文件目录(映射到固件 rootfs)
# =============================================================
FILES_DIR="files"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
BUILDER_DIR="$1"
# =============================================================
# 固件输出目录
# =============================================================
OUTPUT_DIR="$BUILDER_DIR/newifi3_output"
PROJECT_OUTPUT_DIR="$SCRIPT_DIR/newifi3_output"
# =============================================================
# 固件名称标识
# =============================================================
EXTRA_IMAGE_NAME="newifi3"
# =============================================================
# 插件包列表(按需增删)
# =============================================================
PKG_LIST=(
openssh-sftp-server
luci-i18n-vlmcsd-zh-cn
luci-i18n-argon-config-zh-cn
luci-i18n-arpbind-zh-cn
luci-i18n-package-manager-zh-cn
# 代理插件
luci-i18n-homeproxy-zh-cn
sing-box
)
PACKAGES=$(printf "%s " "${PKG_LIST[@]}")
# =============================================================
# 颜色输出
# =============================================================
GREEN="\033[0;32m"
YELLOW="\033[1;33m"
RED="\033[0;31m"
NC="\033[0m"
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN} ImmortalWrt Image Builder 开始构建${NC}"
echo -e "${GREEN}========================================${NC}"
echo -e " Device : Newifi D2"
echo -e " Target : ramips/mt7621"
echo -e " Profile : ${PROFILE}"
echo -e " Output : ${OUTPUT_DIR}"
echo ""
cd "$BUILDER_DIR"
mkdir -p "$FILES_DIR"
# =============================================================
# 复制自定义 files 目录(如果存在)
# =============================================================
if [ -d "${SCRIPT_DIR}/files" ]; then
cp -rf "${SCRIPT_DIR}/files/." "$BUILDER_DIR/files/"
fi
# =============================================================
# 校验 ImageBuilder 环境
# =============================================================
if [ ! -f "Makefile" ]; then
echo -e "${RED}未找到 Makefile,请在 ImageBuilder 目录运行${NC}"
exit 1
fi
mkdir -p "$OUTPUT_DIR"
# =============================================================
# 开始构建固件
# =============================================================
make image \
PROFILE="$PROFILE" \
PACKAGES="$PACKAGES" \
FILES="$FILES_DIR" \
BIN_DIR="$OUTPUT_DIR" \
EXTRA_IMAGE_NAME="$EXTRA_IMAGE_NAME"
# =============================================================
# 输出目录整理
# =============================================================
if [ "$OUTPUT_DIR" != "$PROJECT_OUTPUT_DIR" ]; then
if [ -e "$PROJECT_OUTPUT_DIR" ]; then
BACKUP="${PROJECT_OUTPUT_DIR}.bak.$(date +%Y%m%d%H%M%S)"
mv "$PROJECT_OUTPUT_DIR" "$BACKUP"
fi
mv "$OUTPUT_DIR" "$PROJECT_OUTPUT_DIR"
fi
echo ""
echo -e "${GREEN}构建完成${NC}"
echo -e "固件输出: ${PROJECT_OUTPUT_DIR}"
}
project_dir="$(cd "$(dirname "$0")" && pwd)"
cd "$project_dir"
# 要构建的 ImmortalWrt 版本, 可以在 https://github.com/immortalwrt/immortalwrt 查询版本号
version="25.12.0"
# 安装依赖
install_dependencies
# 下载并解压 Image Builder,返回解压后的目录路径
builder_dir="$(download_imagebuilder "$version")"
# 构建固件
build "$builder_dir"