Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4a6a532f27 | |||
| c3a3434ba8 | |||
| e07883f397 | |||
| 50548588fd | |||
| 466ed7e68e | |||
| 2b5e4bb622 | |||
| 21d3646b44 | |||
| 627536df85 | |||
| 1647ffad99 | |||
| e2b56a69bd |
356
build.sh
356
build.sh
@@ -93,9 +93,9 @@ validate_password() {
|
||||
# 显示使用帮助
|
||||
show_usage() {
|
||||
clear
|
||||
echo -e "${BOLD}${BLUE_COLOR}╔══════════════════════════════════════════════════════════════╗${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║ 📚 使用帮助 📚 ║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}╚══════════════════════════════════════════════════════════════╝${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}============================================================${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR} 📚 使用帮助 📚${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}============================================================${RESET}"
|
||||
echo ""
|
||||
echo -e "${BOLD}${CYAN_COLOR}📖 使用方法:${RESET}"
|
||||
echo -e " ${BOLD}bash $0 <architecture> [build_mode]${RESET}"
|
||||
@@ -156,34 +156,35 @@ case "$build_mode_input" in
|
||||
;;
|
||||
esac
|
||||
|
||||
# 打印
|
||||
# 打印横幅
|
||||
show_banner() {
|
||||
clear
|
||||
echo -e ""
|
||||
echo -e "${BOLD}${BLUE_COLOR}╔══════════════════════════════════════════════════════════════════╗${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} ZeroWRT 自动化构建系统 ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}╠══════════════════════════════════════════════════════════════════╣${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET}${BOLD}${BLUE_COLOR} ██████╗███████╗██████╗ ██████╗ ██╗ ██╗██████╗ ████████╗ ${RESET}${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET}${BOLD}${CYAN_COLOR} ╚══███╔╝██╔════╝██╔══██╗██╔═══██╗██║ ██║██╔══██╗╚══██╔══╝ ${RESET}${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET}${BOLD}${CYAN_COLOR} ███╔╝ █████╗ ██████╔╝██║ ██║██║ █╗ ██║██████╔╝ ██║ ${RESET}${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET}${BOLD}${YELLOW_COLOR} ███╔╝ ██╔══╝ ██╔══██╗██║ ██║██║███╗██║██╔══██╗ ██║ ${RESET}${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET}${BOLD}${YELLOW_COLOR} ███████╗███████╗██║ ██║╚██████╔╝╚███╔███╔╝██║ ██║ ██║ ${RESET}${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET}${BOLD}${YELLOW_COLOR} ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ ${RESET}${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET}${BOLD}${YELLOW_COLOR} Open Source · Tailored · High Performance ${RESET}${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}╠══════════════════════════════════════════════════════════════════╣${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} 🛠️ 开发者: $author ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} 🌐 博客: $blog ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} 💡 理念: 开源 · 定制化 · 高性能 ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} 📦 版本: $version ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}╠══════════════════════════════════════════════════════════════════╣${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} 🔧 构建开始: $(date '+%Y-%m-%d %H:%M:%S') ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} ⚡ 处理器核心: $cpu_cores 个 ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} 🐧 系统用户: $(whoami) ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} 🔬 GCC 版本: $gcc ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║${RESET} 🚀 编译模式: $build_mode ${BOLD}${BLUE_COLOR}║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}╚══════════════════════════════════════════════════════════════════╝${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}==============================================================${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR} ZeroWRT 自动化构建系统${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}==============================================================${RESET}"
|
||||
echo -e ""
|
||||
echo -e "${BOLD}${BLUE_COLOR} ███████╗███████╗██████╗ ██████╗ ██╗ ██╗██████╗ ████████╗${RESET}"
|
||||
echo -e "${BOLD}${CYAN_COLOR} ╚══███╔╝██╔════╝██╔══██╗██╔═══██╗██║ ██║██╔══██╗╚══██╔══╝${RESET}"
|
||||
echo -e "${BOLD}${CYAN_COLOR} ███╔╝ █████╗ ██████╔╝██║ ██║██║ █╗ ██║██████╔╝ ██║ ${RESET}"
|
||||
echo -e "${BOLD}${YELLOW_COLOR} ███╔╝ ██╔══╝ ██╔══██╗██║ ██║██║███╗██║██╔══██╗ ██║ ${RESET}"
|
||||
echo -e "${BOLD}${YELLOW_COLOR} ███████╗███████╗██║ ██║╚██████╔╝╚███╔███╔╝██║ ██║ ██║ ${RESET}"
|
||||
echo -e "${BOLD}${YELLOW_COLOR} ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ ${RESET}"
|
||||
echo -e ""
|
||||
echo -e "${BOLD}${YELLOW_COLOR} Open Source · Tailored · High Performance${RESET}"
|
||||
echo -e ""
|
||||
echo -e "${BOLD}${BLUE_COLOR}--------------------------------------------------------------${RESET}"
|
||||
echo -e "${BOLD}${CYAN_COLOR}🛠️ 开发者: $author${RESET}"
|
||||
echo -e "${BOLD}${CYAN_COLOR}🌐 博客: $blog${RESET}"
|
||||
echo -e "${BOLD}${CYAN_COLOR}💡 理念: 开源 · 定制化 · 高性能${RESET}"
|
||||
echo -e "${BOLD}${CYAN_COLOR}📦 版本: $version${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}--------------------------------------------------------------${RESET}"
|
||||
echo -e "${BOLD}${GREEN_COLOR}🔧 构建开始: $(date '+%Y-%m-%d %H:%M:%S')${RESET}"
|
||||
echo -e "${BOLD}${GREEN_COLOR}⚡ 处理器核心: $cpu_cores 个${RESET}"
|
||||
echo -e "${BOLD}${GREEN_COLOR}🐧 系统用户: $(whoami)${RESET}"
|
||||
echo -e "${BOLD}${GREEN_COLOR}🔬 GCC 版本: $gcc${RESET}"
|
||||
echo -e "${BOLD}${GREEN_COLOR}🚀 编译模式: $build_mode${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}==============================================================${RESET}"
|
||||
echo -e ""
|
||||
}
|
||||
|
||||
@@ -237,8 +238,8 @@ prepare_source_code() {
|
||||
# 显示克隆进度
|
||||
echo -e " ${BOLD}${CYAN_COLOR}⟳${RESET} ${BOLD}正在下载源代码,请稍候...${RESET}"
|
||||
|
||||
# 克隆源代码(隐藏所有错误输出)
|
||||
if git -c advice.detachedHead=false clone --depth=1 --branch "v$tag_version" --single-branch --quiet "$git_url" && cd openwrt 2>/dev/null; then
|
||||
# 克隆源代码
|
||||
if git -c advice.detachedHead=false clone --depth=1 --branch "v$tag_version" --single-branch --no-tags --quiet "$git_url" && cd openwrt 2>/dev/null; then
|
||||
echo -e " ${BOLD}${MAGENTA_COLOR}│${RESET}"
|
||||
echo -e " ${BOLD}${GREEN_COLOR}✓${RESET} ${BOLD}源代码克隆成功${RESET}"
|
||||
echo -e " ${BOLD}${YELLOW_COLOR}➤${RESET} ${BOLD}存储位置: ${GREEN_COLOR}$(pwd)/openwrt${RESET}"
|
||||
@@ -511,9 +512,18 @@ prepare_source_code() {
|
||||
} >> .config
|
||||
|
||||
echo -e " ${BOLD}${MAGENTA_COLOR}├─ ${GREEN_COLOR}✓${RESET} ${BOLD}GCC ${gcc} 配置完成${RESET}"
|
||||
|
||||
# 配置 OTA 在线更新
|
||||
echo -e " ${BOLD}${MAGENTA_COLOR}├─ 🌐 配置 OTA 在线更新...${RESET}"
|
||||
{
|
||||
echo -e "\n# OTA Online Update"
|
||||
echo -e "CONFIG_PACKAGE_luci-app-ota=y\n"
|
||||
} >> .config
|
||||
|
||||
echo -e " ${BOLD}${MAGENTA_COLOR}├─ ${GREEN_COLOR}✓${RESET} ${BOLD}OTA 在线更新配置完成${RESET}"
|
||||
|
||||
# 生成 defconfig
|
||||
echo -e " ${BOLD}${MAGENTA_COLOR}├─ ⚙️ 生成 defconfig...${RESET}"
|
||||
echo -e " ${BOLD}${MAGENTA_COLOR}├─ 🔄 生成 defconfig...${RESET}"
|
||||
if make defconfig > /dev/null 2>&1; then
|
||||
echo -e " ${BOLD}${MAGENTA_COLOR}├─ ${GREEN_COLOR}✓${RESET} ${BOLD}defconfig 生成成功${RESET}"
|
||||
else
|
||||
@@ -537,9 +547,9 @@ prepare_source_code() {
|
||||
|
||||
# 编译执行函数
|
||||
compile_source_code() {
|
||||
echo -e "${BOLD}${BLUE_COLOR}╔══════════════════════════════════════════════════════════════╗${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║ 🚀 编译阶段开始 🚀 ║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}╚══════════════════════════════════════════════════════════════╝${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}============================================================${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR} 🚀 编译阶段开始 🚀${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}============================================================${RESET}"
|
||||
echo ""
|
||||
|
||||
# 显示编译配置信息
|
||||
@@ -672,9 +682,9 @@ compile_source_code() {
|
||||
esac
|
||||
|
||||
echo ""
|
||||
echo -e "${BOLD}${BLUE_COLOR}╔══════════════════════════════════════════════════════════════╗${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}║ 🎉 编译阶段完成 🎉 ║${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}╚══════════════════════════════════════════════════════════════╝${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}============================================================${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR} 🎉 编译阶段完成 🎉${RESET}"
|
||||
echo -e "${BOLD}${BLUE_COLOR}============================================================${RESET}"
|
||||
echo ""
|
||||
|
||||
# 显示完成信息
|
||||
@@ -689,10 +699,10 @@ compile_source_code() {
|
||||
### 私有源打包 ###
|
||||
private_source_packaging() {
|
||||
echo -e "\n"
|
||||
echo -e "${BOLD}${MAGENTA_COLOR}╭──────────────────────────────────────────────╮${RESET}"
|
||||
echo -e "${BOLD}${MAGENTA_COLOR}│${RESET} 📦 ${CYAN_COLOR}私有源打包阶段${RESET} ${BOLD}${MAGENTA_COLOR}│${RESET}"
|
||||
echo -e "${BOLD}${MAGENTA_COLOR}╰──────────────────────────────────────────────╯${RESET}"
|
||||
echo
|
||||
echo -e "${BOLD}${MAGENTA_COLOR}────────────────────────────────────────────────${RESET}"
|
||||
echo -e "${BOLD}${MAGENTA_COLOR} 📦 ${CYAN_COLOR}私有源打包阶段${RESET}${BOLD}${MAGENTA_COLOR} ${RESET}"
|
||||
echo -e "${BOLD}${MAGENTA_COLOR}────────────────────────────────────────────────${RESET}"
|
||||
echo ""
|
||||
|
||||
echo -e "${YELLOW_COLOR}⟳ 正在获取内核版本信息...${RESET}"
|
||||
get_kernel_version=$(cat include/kernel-6.12)
|
||||
@@ -707,31 +717,268 @@ private_source_packaging() {
|
||||
cp -a bin/targets/x86/*/packages "$kmodpkg_name"
|
||||
rm -f "$kmodpkg_name"/Packages*
|
||||
cp -a bin/packages/x86_64/base/rtl88*-firmware*.ipk "$kmodpkg_name"/ 2>/dev/null || true
|
||||
|
||||
echo
|
||||
echo -e "${YELLOW_COLOR}🔏 正在执行签名操作...${RESET}"
|
||||
chmod -R 777 kmod-ipk kmod-sign
|
||||
bash kmod-sign "$kmodpkg_name"
|
||||
|
||||
echo -e "${YELLOW_COLOR}📦 正在打包文件...${RESET}"
|
||||
tar zcf "x86_64-${kmodpkg_name}.tar.gz" "$kmodpkg_name"
|
||||
rm -rf "$kmodpkg_name"
|
||||
|
||||
elif [ "$platform" = "rockchip" ]; then
|
||||
echo -e "${BLUE_COLOR}→ 检测到平台:rockchip${RESET}"
|
||||
cp -a bin/targets/rockchip/armv8*/packages "$kmodpkg_name"
|
||||
rm -f "$kmodpkg_name"/Packages*
|
||||
cp -a bin/packages/aarch64_generic/base/rtl88*-firmware*.ipk "$kmodpkg_name"/ 2>/dev/null || true
|
||||
|
||||
echo
|
||||
echo -e "${YELLOW_COLOR}🔏 正在执行签名操作...${RESET}"
|
||||
chmod -R 777 kmod-ipk kmod-sign
|
||||
bash kmod-sign "$kmodpkg_name"
|
||||
|
||||
echo -e "${YELLOW_COLOR}📦 正在打包文件...${RESET}"
|
||||
tar zcf "aarch64-${kmodpkg_name}.tar.gz" "$kmodpkg_name"
|
||||
rm -rf "$kmodpkg_name"
|
||||
fi
|
||||
}
|
||||
|
||||
echo
|
||||
echo -e "${YELLOW_COLOR}🔏 正在执行签名操作...${RESET}"
|
||||
bash kmod-sign "$kmodpkg_name"
|
||||
|
||||
echo -e "${YELLOW_COLOR}📦 正在打包文件...${RESET}"
|
||||
tar zcf "aarch64-${kmodpkg_name}.tar.gz" "$kmodpkg_name"
|
||||
rm -rf "$kmodpkg_name"
|
||||
|
||||
echo
|
||||
echo -e "${GREEN_COLOR}🎉 打包完成!${RESET}"
|
||||
echo -e "生成文件:${BOLD}${CYAN_COLOR}aarch64-${kmodpkg_name}.tar.gz${RESET}"
|
||||
echo -e "${DIM}──────────────────────────────────────────────${RESET}\n"
|
||||
### 生成 OTA 文件
|
||||
generate_ota_file() {
|
||||
echo -e "\n"
|
||||
echo -e "${BOLD}${MAGENTA_COLOR}============================================================${RESET}"
|
||||
echo -e "${BOLD}${MAGENTA_COLOR} 📱 生成 OTA 文件${RESET}"
|
||||
echo -e "${BOLD}${MAGENTA_COLOR}============================================================${RESET}"
|
||||
echo ""
|
||||
|
||||
if [ "$platform" = "x86_64" ]; then
|
||||
echo -e " ${BOLD}${YELLOW_COLOR}➤${RESET} ${BOLD}平台: ${GREEN_COLOR}x86_64${RESET}"
|
||||
mkdir -p ota
|
||||
OTA_URL="https://github.com/QuickWrt/ZeroWrt/releases/download"
|
||||
VERSION=$(sed 's/v//g' version.txt)
|
||||
SHA256=$(sha256sum bin/targets/x86/64*/*-generic-squashfs-combined-efi.img.gz | awk '{print $1}')
|
||||
|
||||
echo -e " ${BOLD}${YELLOW_COLOR}➤${RESET} ${BOLD}生成固件信息...${RESET}"
|
||||
cat > ota/x86_64.json <<EOF
|
||||
{
|
||||
"x86_64": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256",
|
||||
"url": "$OTA_URL/v$VERSION/openwrt-$VERSION-x86-64-generic-squashfs-combined-efi.img.gz"
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
echo -e " ${BOLD}${GREEN_COLOR}✓${RESET} ${BOLD}x86_64 OTA 文件生成成功${RESET}"
|
||||
echo -e " ${BOLD}${YELLOW_COLOR}➤${RESET} ${BOLD}文件位置: ${GREEN_COLOR}ota/fw.json${RESET}"
|
||||
|
||||
elif [ "$platform" = "rockchip" ]; then
|
||||
echo -e " ${BOLD}${YELLOW_COLOR}➤${RESET} ${BOLD}平台: ${GREEN_COLOR}rockchip${RESET}"
|
||||
mkdir -p ota
|
||||
OTA_URL="https://github.com/QuickWrt/ZeroWrt/releases/download"
|
||||
VERSION=$(sed 's/v//g' version.txt)
|
||||
|
||||
echo -e " ${BOLD}${YELLOW_COLOR}➤${RESET} ${BOLD}计算各设备固件哈希值...${RESET}"
|
||||
SHA256_armsom_sige3=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-armsom_sige3-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_armsom_sige7=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-armsom_sige7-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_t4=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopc-t4-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_t6=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopc-t6-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r2c_plus=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r2c-plus-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r2c=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r2c-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r2s=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r2s-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r3s=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r3s-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r4s=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r4s-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r4se=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r4se-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r5c=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r5c-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r5s=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r5s-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r6c=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r6c-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r6s=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r6s-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r76s=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r76s-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_huake_guangmiao_g4c=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-huake_guangmiao-g4c-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r66s=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-lunzn_fastrhino-r66s-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_r68s=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-lunzn_fastrhino-r68s-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_radxa_rock_5a=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-radxa_rock-5a-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_radxa_rock_5b=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-radxa_rock-5b-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_xunlong_orangepi_5_plus=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-xunlong_orangepi-5-plus-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
SHA256_xunlong_orangepi_5=$(sha256sum bin/targets/rockchip/armv8*/openwrt-$VERSION-rockchip-armv8-xunlong_orangepi-5-squashfs-sysupgrade.img.gz | awk '{print $1}')
|
||||
|
||||
echo -e " ${BOLD}${YELLOW_COLOR}➤${RESET} ${BOLD}生成 Rockchip 设备 OTA 配置文件...${RESET}"
|
||||
cat > ota/rockchip.json <<EOF
|
||||
{
|
||||
"armsom,sige3": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_armsom_sige3",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-armsom_sige3-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"armsom,sige7": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_armsom_sige7",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-armsom_sige7-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopc-t4": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_t4",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopc-t4-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopc-t6": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_t6",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopc-t6-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopi-r2c-plus": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r2c_plus",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r2c-plus-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopi-r2c": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r2c",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r2c-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopi-r2s": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r2s",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r2s-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopi-r3s": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r3s",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r3s-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopi-r4s": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r4s",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r4s-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopi-r4se": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r4se",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r4se-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopi-r5c": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r5c",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r5c-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopi-r5s": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r5s",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r5s-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopi-r6c": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r6c",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r6c-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopi-r6s": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r6s",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r6s-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"friendlyarm,nanopi-r76s": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r76s",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-friendlyarm_nanopi-r76s-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"huake,guangmiao-g4c": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_huake_guangmiao_g4c",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-huake_guangmiao-g4c-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"lunzn,fastrhino-r66s": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r66s",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-lunzn_fastrhino-r66s-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"lunzn,fastrhino-r68s": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_r68s",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-lunzn_fastrhino-r68s-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"radxa,rock-5a": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_radxa_rock_5a",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-radxa_rock-5a-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"radxa,rock-5b": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_radxa_rock_5b",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-radxa_rock-5b-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"xunlong,orangepi-5-plus": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_xunlong_orangepi_5_plus",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-xunlong_orangepi-5-plus-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
],
|
||||
"xunlong,orangepi-5": [
|
||||
{
|
||||
"build_date": "$CURRENT_DATE",
|
||||
"sha256sum": "$SHA256_xunlong_orangepi_5",
|
||||
"url": "$OTA_URL/OpenWrt-v$VERSION/openwrt-$VERSION-rockchip-armv8-xunlong_orangepi-5-squashfs-sysupgrade.img.gz"
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
echo -e " ${BOLD}${GREEN_COLOR}✓${RESET} ${BOLD}Rockchip OTA 文件生成成功${RESET}"
|
||||
echo -e " ${BOLD}${YELLOW_COLOR}➤${RESET} ${BOLD}文件位置: ${GREEN_COLOR}ota/rockchip.json${RESET}"
|
||||
echo -e " ${BOLD}${YELLOW_COLOR}➤${RESET} ${BOLD}支持设备数量: ${GREEN_COLOR}20 个${RESET}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e " ${BOLD}${GREEN_COLOR}🎉 OTA 文件生成完成!${RESET}"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# 主执行逻辑
|
||||
main() {
|
||||
show_usage
|
||||
validate_password
|
||||
if [ "$(whoami)" != "runner" ]; then
|
||||
validate_password
|
||||
fi
|
||||
show_banner
|
||||
setup_build_environment
|
||||
setup_curl_progress
|
||||
@@ -739,6 +986,7 @@ main() {
|
||||
compile_source_code
|
||||
if [[ "$build_mode_input" != "toolchain-only" ]]; then
|
||||
private_source_packaging
|
||||
generate_ota_file
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
29
install.sh
29
install.sh
@@ -2,7 +2,7 @@
|
||||
set -euo pipefail
|
||||
|
||||
# =============================================================================
|
||||
# 颜色配置
|
||||
# 🎨 颜色配置
|
||||
# =============================================================================
|
||||
RED='\033[1;31m'
|
||||
GREEN='\033[1;32m'
|
||||
@@ -12,21 +12,20 @@ CYAN='\033[1;36m'
|
||||
RESET='\033[0m'
|
||||
|
||||
# =============================================================================
|
||||
# 基本信息
|
||||
# 📦 基本信息
|
||||
# =============================================================================
|
||||
VERSION="v24"
|
||||
REPO="QuickWrt/QuickWrt"
|
||||
ASSET="QuickWrt.tar.gz"
|
||||
|
||||
# =============================================================================
|
||||
# 工具函数
|
||||
# 🧰 工具函数
|
||||
# =============================================================================
|
||||
log() { echo -e "${BLUE}ℹ️ $*${RESET}"; }
|
||||
ok() { echo -e "${GREEN}✅ $*${RESET}"; }
|
||||
err() { echo -e "${RED}❌ $*${RESET}" && exit 1; }
|
||||
|
||||
# =============================================================================
|
||||
# 获取最新 release tag
|
||||
# 🔍 获取最新 release tag
|
||||
# =============================================================================
|
||||
get_latest_release() {
|
||||
curl -s "https://api.github.com/repos/${REPO}/releases/latest" \
|
||||
@@ -34,7 +33,7 @@ get_latest_release() {
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# 菜单函数
|
||||
# 🧭 菜单函数
|
||||
# =============================================================================
|
||||
show_menu() {
|
||||
local title="$1"
|
||||
@@ -53,7 +52,7 @@ show_menu() {
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# 交互选择
|
||||
# 💡 交互选择模式
|
||||
# =============================================================================
|
||||
interactive_mode() {
|
||||
log "进入交互模式选择编译参数..."
|
||||
@@ -71,7 +70,6 @@ interactive_mode() {
|
||||
BUILD_MODE="${mode_options[$((mode_choice-1))]}"
|
||||
|
||||
echo -e "\n${GREEN}✅ 已选择:${RESET}"
|
||||
echo -e " • 版本号 : ${CYAN}${VERSION}${RESET}"
|
||||
echo -e " • 架构 : ${CYAN}${TARGET_ARCH}${RESET}"
|
||||
echo -e " • 编译模式 : ${CYAN}${BUILD_MODE}${RESET}\n"
|
||||
|
||||
@@ -79,15 +77,15 @@ interactive_mode() {
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# 执行 build.sh
|
||||
# ⚙️ 执行 build.sh
|
||||
# =============================================================================
|
||||
run_build() {
|
||||
log "执行: ./build.sh ${VERSION} ${TARGET_ARCH} ${BUILD_MODE}"
|
||||
./build.sh "${VERSION}" "${TARGET_ARCH}" "${BUILD_MODE}"
|
||||
log "执行: ./build.sh ${TARGET_ARCH} ${BUILD_MODE}"
|
||||
bash ./build.sh "${TARGET_ARCH}" "${BUILD_MODE}"
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# 主逻辑
|
||||
# 🚀 主逻辑
|
||||
# =============================================================================
|
||||
main() {
|
||||
log "检查系统依赖..."
|
||||
@@ -107,15 +105,14 @@ main() {
|
||||
mkdir QuickWrt
|
||||
tar -xzf "${ASSET}" -C QuickWrt || err "解压失败"
|
||||
|
||||
# 进入构建目录
|
||||
cd QuickWrt || err "进入 QuickWrt 失败"
|
||||
|
||||
# 如果解压后有一个顶层目录,则进入该目录
|
||||
# 如果解压后有一个顶层目录则进入
|
||||
if [ $(ls -1 | wc -l) -eq 1 ] && [ -d "$(ls -1)" ]; then
|
||||
log "检测到顶层目录,进入: $(ls -1)"
|
||||
cd "$(ls -1)" || err "进入解压目录失败"
|
||||
fi
|
||||
|
||||
|
||||
# 检查必要文件
|
||||
[ -f "./build.sh" ] || err "未找到构建脚本: build.sh"
|
||||
[ -d "./scripts" ] || err "未找到 scripts 目录"
|
||||
@@ -123,7 +120,7 @@ main() {
|
||||
chmod +x ./build.sh
|
||||
chmod +x ./scripts/*.sh 2>/dev/null || log "为 scripts 目录下的脚本设置执行权限"
|
||||
|
||||
# 交互模式选择
|
||||
# 进入交互模式
|
||||
interactive_mode
|
||||
}
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ git clone https://$github/UnblockNeteaseMusic/luci-app-unblockneteasemusic packa
|
||||
sed -i 's/解除网易云音乐播放限制/网易云音乐解锁/g' package/new/luci-app-unblockneteasemusic/root/usr/share/luci/menu.d/luci-app-unblockneteasemusic.json
|
||||
|
||||
# Theme
|
||||
git clone https://$github/sbwml/luci-theme-argon package/new/luci-theme-argon --depth=1
|
||||
git clone https://$github/QuickWrt/luci-theme-argon package/new/luci-theme-argon --depth=1
|
||||
curl -s $mirror/openwrt/img/bg.webp > package/new/luci-theme-argon/luci-theme-argon/htdocs/luci-static/argon/img/bg.webp
|
||||
sed -i "s/#5e72e4/#31a1a1/g" package/new/luci-theme-argon/luci-app-argon-config/root/etc/config/argon
|
||||
sed -i "s/#483d8b/#31a1a1/g" package/new/luci-theme-argon/luci-app-argon-config/root/etc/config/argon
|
||||
|
||||
Reference in New Issue
Block a user