#!/bin/bash -e # 定义一个函数,用来克隆指定的仓库和分支 clone_repo() { # 参数1是仓库地址,参数2是分支名,参数3是目标目录 repo_url=$1 branch_name=$2 target_dir=$3 # 克隆仓库到目标目录,并指定分支名和深度为1 git clone -b $branch_name --depth 1 $repo_url $target_dir } # 定义一些变量,存储仓库地址和分支名 immortalwrt_repo="https://github.com/immortalwrt/immortalwrt" openwrt_repo="https://github.com/openwrt/openwrt.git" # 开始克隆仓库,并行执行 clone_repo $immortalwrt_repo openwrt-24.10 immortalwrt & clone_repo $openwrt_repo openwrt-24.10 openwrt & # 等待所有后台任务完成 wait # Enter source code cd openwrt # Init feeds ./scripts/feeds update -a ./scripts/feeds install -a # Nginx sed -i "s/large_client_header_buffers 2 1k/large_client_header_buffers 4 32k/g" feeds/packages/net/nginx-util/files/uci.conf.template sed -i "s/client_max_body_size 128M/client_max_body_size 2048M/g" feeds/packages/net/nginx-util/files/uci.conf.template sed -i '/client_max_body_size/a\\tclient_body_buffer_size 8192M;' feeds/packages/net/nginx-util/files/uci.conf.template sed -i '/client_max_body_size/a\\tserver_names_hash_bucket_size 128;' feeds/packages/net/nginx-util/files/uci.conf.template sed -i '/ubus_parallel_req/a\ ubus_script_timeout 600;' feeds/packages/net/nginx/files-luci-support/60_nginx-luci-support sed -ri "/luci-webui.socket/i\ \t\tuwsgi_send_timeout 600\;\n\t\tuwsgi_connect_timeout 600\;\n\t\tuwsgi_read_timeout 600\;" feeds/packages/net/nginx/files-luci-support/luci.locations sed -ri "/luci-cgi_io.socket/i\ \t\tuwsgi_send_timeout 600\;\n\t\tuwsgi_connect_timeout 600\;\n\t\tuwsgi_read_timeout 600\;" feeds/packages/net/nginx/files-luci-support/luci.locations # uwsgi sed -i 's,procd_set_param stderr 1,procd_set_param stderr 0,g' feeds/packages/net/uwsgi/files/uwsgi.init sed -i 's,buffer-size = 10000,buffer-size = 131072,g' feeds/packages/net/uwsgi/files-luci-support/luci-webui.ini sed -i 's,logger = luci,#logger = luci,g' feeds/packages/net/uwsgi/files-luci-support/luci-webui.ini sed -i '$a cgi-timeout = 600' feeds/packages/net/uwsgi/files-luci-support/luci-*.ini sed -i 's/threads = 1/threads = 2/g' feeds/packages/net/uwsgi/files-luci-support/luci-webui.ini sed -i 's/processes = 3/processes = 4/g' feeds/packages/net/uwsgi/files-luci-support/luci-webui.ini sed -i 's/cheaper = 1/cheaper = 2/g' feeds/packages/net/uwsgi/files-luci-support/luci-webui.ini # rpcd sed -i 's/option timeout 30/option timeout 60/g' package/system/rpcd/files/rpcd.config sed -i 's#20) \* 1000#60) \* 1000#g' feeds/luci/modules/luci-base/htdocs/luci-static/resources/rpc.js # make olddefconfig wget -qO - https://raw.githubusercontent.com/oppen321/ZeroWrt-Action/refs/heads/master/patch/linux/0003-include-kernel-defaults.mk.patch | patch -p1 # 更换为 ImmortalWrt Uboot 以及 Target rm -rf ./target/linux/rockchip cp -rf ../immortalwrt/target/linux/rockchip ./target/linux/rockchip rm -rf package/boot/{rkbin,uboot-rockchip,arm-trusted-firmware-rockchip} cp -rf ../immortalwrt/package/boot/uboot-rockchip ./package/boot/uboot-rockchip cp -rf ../immortalwrt/package/boot/arm-trusted-firmware-rockchip ./package/boot/arm-trusted-firmware-rockchip sed -i '/REQUIRE_IMAGE_METADATA/d' target/linux/rockchip/armv8/base-files/lib/upgrade/platform.sh curl -L -o include/kernel-6.6 https://raw.githubusercontent.com/immortalwrt/immortalwrt/refs/heads/openwrt-24.10/include/kernel-6.6 # default-settings git clone --depth=1 -b openwrt-24.10 https://github.com/oppen321/default-settings package/default-settings # Luci diagnostics.js sed -i "s/openwrt.org/www.qq.com/g" feeds/luci/modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js # TTYD sed -i 's/services/system/g' feeds/luci/applications/luci-app-ttyd/root/usr/share/luci/menu.d/luci-app-ttyd.json sed -i '3 a\\t\t"order": 50,' feeds/luci/applications/luci-app-ttyd/root/usr/share/luci/menu.d/luci-app-ttyd.json sed -i 's/procd_set_param stdout 1/procd_set_param stdout 0/g' feeds/packages/utils/ttyd/files/ttyd.init sed -i 's/procd_set_param stderr 1/procd_set_param stderr 0/g' feeds/packages/utils/ttyd/files/ttyd.init # luci pushd feeds/luci curl -s https://raw.githubusercontent.com/oppen321/ZeroWrt-Action/refs/heads/master/patch/luci/0001-luci-mod-status-firewall-disable-legacy-firewall-rul.patch | patch -p1 popd # module curl -O https://raw.githubusercontent.com/oppen321/ZeroWrt-Action/refs/heads/master/patch/linux/0001-linux-module-video.patch git apply 0001-linux-module-video.patch # 移除 SNAPSHOT 标签 sed -i 's,-SNAPSHOT,,g' include/version.mk sed -i 's,-SNAPSHOT,,g' package/base-files/image-config.in sed -i '/CONFIG_BUILDBOT/d' include/feeds.mk sed -i 's/;)\s*\\/; \\/' include/feeds.mk # 替换软件包 rm -rf feeds/packages/lang/golang rm -rf feeds/packages/utils/coremark rm -rf feeds/packages/net/{zerotier,xray-core,v2ray-core,v2ray-geodata,sing-box} rm -rf feeds/luci/applications/luci-app-alist # golong1.24依赖 git clone --depth=1 -b 24.x https://github.com/sbwml/packages_lang_golang feeds/packages/lang/golang # helloworld git clone --depth=1 -b helloworld https://github.com/oppen321/openwrt-package package/helloworld # 加载软件源 git clone --depth=1 https://github.com/oppen321/openwrt-package package/openwrt-package # 更改 Argon 主题背景 sed -i 's/bing/none/' package/openwrt-package/luci-app-argon-config/root/etc/config/argon # update feeds ./scripts/feeds update -a ./scripts/feeds install -a # Load devices Config if [ "$model" = "OpenWrt_Rockchip_v24.10" ]; then curl -s https://git.kejizero.online/zhao/files/raw/branch/main/toolchain/Configs/immortalwrt_rockchip.config > .config elif [ "$model" = "OpenWrt_X86_64_v24.10" ]; then curl -s https://git.kejizero.online/zhao/files/raw/branch/main/toolchain/Configs/immortalwrt_x86_64.config > .config fi # gcc14 & 15 if [ "$USE_GCC13" = y ]; then export USE_GCC13=y gcc_version=13 elif [ "$USE_GCC14" = y ]; then export USE_GCC14=y gcc_version=14 fi # gcc config echo -e "\n# gcc ${gcc_version}" >> .config echo -e "CONFIG_DEVEL=y" >> .config echo -e "CONFIG_TOOLCHAINOPTS=y" >> .config echo -e "CONFIG_GCC_USE_VERSION_${gcc_version}=y\n" >> .config # Compile make defconfig make -j$cores toolchain/compile || make -j$cores toolchain/compile V=s || exit 1 # Create folder mkdir toolchain-cache # Compression toolchain case "$model" in "OpenWrt_Rockchip_v24.10" | "OpenWrt_X86_64_v24.10") if [ -z "$gcc_version" ]; then echo "Error: GCC version not set!" exit 1 fi if [ "$model" = "OpenWrt_Rockchip_v24.10" ]; then output_file="toolchain_musl_openwrt_rockchip_gcc-${gcc_version}.tar.zst" elif [ "$model" = "OpenWrt_X86_64_v24.10" ]; then output_file="toolchain_musl_openwrt_X86_64_gcc-${gcc_version}.tar.zst" fi tar -I zstd -cvf "toolchain-cache/${output_file}" build_dir dl tmp staging_dir ;; *) echo "Error: Unknown model '$model'!" exit 1 ;; esac