Files
immortalwrt_image_builder/hiwifi-b70.sh
T
2026-07-24 15:56:41 +08:00

179 lines
5.4 KiB
Bash
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.
#!/bin/bash
set -e
source common.sh
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() {
# =============================================================
# 设备 ProfileHiWiFi HC5962 / 极路由B70
# =============================================================
PROFILE="hiwifi_hc5962"
# =============================================================
# 自定义文件目录(映射到固件 rootfs)
# =============================================================
FILES_DIR="files"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
BUILDER_DIR="$1"
# ────────────────────────────────────────────
# lan口ip
# ────────────────────────────────────────────
LAN_IP="${2}"
# =============================================================
# 插件包列表
# =============================================================
PACKAGES="${3}"
# =============================================================
# 固件输出目录
# =============================================================
OUTPUT_DIR="$BUILDER_DIR/hiwifi_b70_output"
PROJECT_OUTPUT_DIR="$SCRIPT_DIR/hiwifi_b70_output"
# =============================================================
# 固件名称标识
# =============================================================
EXTRA_IMAGE_NAME="hc5962"
# =============================================================
# 颜色输出
# =============================================================
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 : HiWiFi HC5962 (B70)"
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
# 如果存在 LAN IP 设置脚本,则修改默认 LAN 地址
LAN_SETTING_FILE="${BUILDER_DIR}/files/etc/uci-defaults/98-network-setting"
if [ -e "$LAN_SETTING_FILE" ]; then
# 根据用户输入的 LAN_IP 修改默认 IP
sed -i \
"s/^update_lan_ip .*/update_lan_ip ${LAN_IP}/" \
"$LAN_SETTING_FILE"
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}"
}
# 要构建的 ImmortalWrt 版本, 可以在 https://github.com/immortalwrt/immortalwrt 查询版本号
default_version="25.12.1"
version=$(ask_input "请输入 ImmortalWrt 版本" "$default_version")
# lan口ip
default_lan_ip="192.168.1.1"
lan_ip=$(input_lan_ip "$default_lan_ip")
# =============================================================
# 插件包列表
# - 前面加 - 表示从固件中移除该包,例如 -dnsmasq
# - 每行一个,方便增删注释
# =============================================================
pkg_list=(
vim
nano-full
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[@]}") # 动态拼接成字符串
# 进入项目根目
project_dir="$(cd "$(dirname "$0")" && pwd)"
cd "$project_dir"
install_dependencies
builder_dir="$(download_imagebuilder "$version")"
build "$builder_dir" "$lan_ip" "$packages"