#!/bin/bash # 设置颜色 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' BLUE='\033[0;34m' NC='\033[0m' # 无颜色 # 克隆 OpenWrt 源码 echo -e "${YELLOW}克隆 OpenWrt 源码...${NC}" git clone -b openwrt-24.10 --single-branch --filter=blob:none https://github.com/openwrt/openwrt # 更新 feeds 并安装 cd openwrt || exit echo -e "${GREEN}更新并安装 feeds...${NC}" ./scripts/feeds update -a ./scripts/feeds install -a # 修改默认IP echo -e "${YELLOW}修改默认IP${NC}" sed -i 's/192.168.1.1/10.0.0.1/g' package/base-files/files/bin/config_generate # profile echo -e "${YELLOW}profile${NC}" sed -i 's#\\u@\\h:\\w\\\$#\\[\\e[32;1m\\][\\u@\\h\\[\\e[0m\\] \\[\\033[01;34m\\]\\W\\[\\033[00m\\]\\[\\e[32;1m\\]]\\[\\e[0m\\]\\\$#g' package/base-files/files/etc/profile sed -ri 's/(export PATH=")[^"]*/\1%PATH%:\/opt\/bin:\/opt\/sbin:\/opt\/usr\/bin:\/opt\/usr\/sbin/' package/base-files/files/etc/profile sed -i '/PS1/a\export TERM=xterm-color' package/base-files/files/etc/profile # TTYD echo -e "${YELLOW}TTYD${NC}" 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 # bash echo -e "${YELLOW}Bash${NC}" sed -i 's#ash#bash#g' package/base-files/files/etc/passwd sed -i '\#export ENV=/etc/shinit#a export HISTCONTROL=ignoredups' package/base-files/files/etc/profile mkdir -p files/root curl -so files/root/.bash_profile https://git.kejizero.online/zhao/files/raw/branch/main/root/.bash_profile curl -so files/root/.bashrc https://git.kejizero.online/zhao/files/raw/branch/main/root/.bashrc # Nginx echo -e "${YELLOW}Nginx${NC}" 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 echo -e "${YELLOW}uwsgi${NC}" 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 echo -e "${YELLOW}rpcd${NC}" 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 # mwan3 echo -e "${YELLOW}负载均衡${NC}" sed -i 's/MultiWAN 管理器/负载均衡/g' feeds/luci/applications/luci-app-mwan3/po/zh_Hans/mwan3.po ## echo -e "\nmsgid \"Control\"" >> feeds/luci/modules/luci-base/po/zh_Hans/base.po echo -e "msgstr \"控制\"" >> feeds/luci/modules/luci-base/po/zh_Hans/base.po echo -e "\nmsgid \"NAS\"" >> feeds/luci/modules/luci-base/po/zh_Hans/base.po echo -e "msgstr \"网络存储\"" >> feeds/luci/modules/luci-base/po/zh_Hans/base.po echo -e "\nmsgid \"VPN\"" >> feeds/luci/modules/luci-base/po/zh_Hans/base.po echo -e "msgstr \"魔法网络\"" >> feeds/luci/modules/luci-base/po/zh_Hans/base.po ## rm -rf ./feeds/extraipk/theme/luci-theme-argon-18.06 rm -rf ./feeds/extraipk/theme/luci-app-argon-config-18.06 rm -rf ./feeds/extraipk/theme/luci-theme-design rm -rf ./feeds/extraipk/theme/luci-theme-edge rm -rf ./feeds/extraipk/theme/luci-theme-ifit rm -rf ./feeds/extraipk/theme/luci-theme-opentopd rm -rf ./feeds/extraipk/theme/luci-theme-neobird rm -rf ./package/feeds/extraipk/luci-theme-argon-18.06 rm -rf ./package/feeds/extraipk/luci-app-argon-config-18.06 rm -rf ./package/feeds/extraipk/theme/luci-theme-design rm -rf ./package/feeds/extraipk/theme/luci-theme-edge rm -rf ./package/feeds/extraipk/theme/luci-theme-ifit rm -rf ./package/feeds/extraipk/theme/luci-theme-opentopd rm -rf ./package/feeds/extraipk/theme/luci-theme-neobird ##取消bootstrap为默认主题 sed -i '/set luci.main.mediaurlbase=\/luci-static\/bootstrap/d' feeds/luci/themes/luci-theme-bootstrap/root/etc/uci-defaults/30_luci-theme-bootstrap sed -i 's/luci-theme-bootstrap/luci-theme-kucat/g' feeds/luci/collections/luci/Makefile sed -i 's/luci-theme-bootstrap/luci-theme-kucat/g' feeds/luci/collections/luci-nginx/Makefile ##加入作者信息 sed -i "s/DISTRIB_DESCRIPTION='*.*'/DISTRIB_DESCRIPTION='ZeroWrt-$(date +%Y%m%d)'/g" package/base-files/files/etc/openwrt_release sed -i "s/DISTRIB_REVISION='*.*'/DISTRIB_REVISION=' By OPPEN321'/g" package/base-files/files/etc/openwrt_release sed -i "2iuci set istore.istore.channel='ae86_daodao'" package/emortal/default-settings/files/99-default-settings sed -i "3iuci commit istore" package/emortal/default-settings/files/99-default-settings ##WiFi sed -i "s/MT7986_AX6000_2.4G/ZeroWrt-2.4G/g" package/mtk/drivers/wifi-profile/files/mt7986/mt7986-ax6000.dbdc.b0.dat sed -i "s/MT7986_AX6000_5G/ZeroWrt-5G/g" package/mtk/drivers/wifi-profile/files/mt7986/mt7986-ax6000.dbdc.b1.dat sed -i "s/MT7981_AX3000_2.4G/ZeroWrt-2.4G/g" package/mtk/drivers/wifi-profile/files/mt7981/mt7981.dbdc.b0.dat sed -i "s/MT7981_AX3000_5G/ZeroWrt-5G/g" package/mtk/drivers/wifi-profile/files/mt7981/mt7981.dbdc.b1.dat ##New WiFi sed -i "s/ImmortalWrt-2.4G/ZeroWrt-2.4G/g" package/mtk/applications/mtwifi-cfg/files/mtwifi.sh sed -i "s/ImmortalWrt-5G/ZeroWrt-5G/g" package/mtk/applications/mtwifi-cfg/files/mtwifi.sh ##更新FQ rm -rf feeds/luci/applications/luci-app-passwall/* cp -af feeds/extraipk/patch/wall-luci/luci-app-passwall/* feeds/luci/applications/luci-app-passwall/ rm -rf feeds/luci/applications/luci-app-ssr-plus/* cp -af feeds/extraipk/patch/wall-luci/luci-app-ssr-plus/* feeds/luci/applications/luci-app-ssr-plus/ rm -rf feeds/luci/applications/luci-app-openclash/* cp -af feeds/extraipk/patch/wall-luci/luci-app-openclash/* feeds/luci/applications/luci-app-openclash/ ##MosDNS rm -rf feeds/packages/net/mosdns/* cp -af feeds/extraipk/op-mosdns/mosdns/* feeds/packages/net/mosdns/ rm -rf feeds/packages/net/v2ray-geodata/* cp -af feeds/extraipk/op-mosdns/v2ray-geodata/* feeds/packages/net/v2ray-geodata/ ##Adblock # rm -rf feeds/luci/applications/luci-app-adblock/* # cp -af feeds/extraipk/luci-app-adblock/* feeds/luci/applications/luci-app-adblock/ ##FQ全部调到VPN菜单 sed -i 's/services/vpn/g' package/feeds/luci/luci-app-ssr-plus/luasrc/controller/*.lua sed -i 's/services/vpn/g' package/feeds/luci/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/*.lua sed -i 's/services/vpn/g' package/feeds/luci/luci-app-ssr-plus/luasrc/view/shadowsocksr/*.htm sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/controller/*.lua sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/passwall/*.lua sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/model/cbi/passwall/client/*.lua sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/model/cbi/passwall/server/*.lua sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/view/passwall/app_update/*.htm sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/view/passwall/socks_auto_switch/*.htm sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/view/passwall/global/*.htm sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/view/passwall/haproxy/*.htm sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/view/passwall/log/*.htm sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/view/passwall/node_list/*.htm sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/view/passwall/rule/*.htm sed -i 's/services/vpn/g' package/feeds/luci/luci-app-passwall/luasrc/view/passwall/server/*.htm sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/controller/*.lua sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/passwall2/*.lua sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/model/cbi/passwall2/client/*.lua sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/model/cbi/passwall2/server/*.lua sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/view/passwall2/app_update/*.htm sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/view/passwall2/socks_auto_switch/*.htm sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/view/passwall2/global/*.htm sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/view/passwall2/haproxy/*.htm sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/view/passwall2/log/*.htm sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/view/passwall2/node_list/*.htm sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/view/passwall2/rule/*.htm sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-passwall2/luasrc/view/passwall2/server/*.htm sed -i 's/services/vpn/g' package/feeds/luci/luci-app-vssr/luasrc/controller/*.lua sed -i 's/services/vpn/g' package/feeds/luci/luci-app-vssr/luasrc/model/cbi/vssr/*.lua sed -i 's/services/vpn/g' package/feeds/luci/luci-app-vssr/luasrc/view/vssr/*.htm sed -i 's/services/vpn/g' package/feeds/luci/luci-app-openclash/luasrc/controller/*.lua sed -i 's/services/vpn/g' package/feeds/luci/luci-app-openclash/luasrc/*.lua sed -i 's/services/vpn/g' package/feeds/luci/luci-app-openclash/luasrc/model/cbi/openclash/*.lua sed -i 's/services/vpn/g' package/feeds/luci/luci-app-openclash/luasrc/view/openclash/*.htm sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-bypass/luasrc/controller/*.lua sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-bypass/luasrc/model/cbi/bypass/*.lua sed -i 's/services/vpn/g' package/feeds/extraipk/luci-app-bypass/luasrc/view/bypass/*.htm # 一键配置拨号 echo -e "${YELLOW}一键配置拨号${NC}" git clone --depth=1 https://github.com/sirpdboy/luci-app-netwizard package/luci-app-netwizard # 修改名称 echo -e "${YELLOW}修改名称${NC}" sed -i 's/OpenWrt/ZeroWrt/' package/base-files/files/bin/config_generate # Theme echo -e "${YELLOW}Theme${NC}" git clone https://github.com/sirpdboy/luci-theme-kucat package/luci-theme-kucat -b js # luci-app-partexp echo -e "${YELLOW}luci-app-partexp${NC}" git clone --depth=1 https://github.com/sirpdboy/luci-app-partexp package/luci-app-partexp # 进阶设置 echo -e "${YELLOW}进阶设置${NC}" git clone https://github.com/sirpdboy/luci-app-advancedplus package/luci-app-advancedplus # NTP echo -e "${YELLOW}NTP${NC}" sed -i 's/0.openwrt.pool.ntp.org/ntp1.aliyun.com/g' package/base-files/files/bin/config_generate sed -i 's/1.openwrt.pool.ntp.org/ntp2.aliyun.com/g' package/base-files/files/bin/config_generate sed -i 's/2.openwrt.pool.ntp.org/time1.cloud.tencent.com/g' package/base-files/files/bin/config_generate sed -i 's/3.openwrt.pool.ntp.org/time2.cloud.tencent.com/g' package/base-files/files/bin/config_generate # ZeroWrt选项菜单 echo -e "${YELLOW}ZeroWrt选项菜单${NC}" mkdir -p files/bin curl -L -o files/bin/ZeroWrt https://git.kejizero.online/zhao/files/raw/branch/main/bin/ZeroWrt chmod +x files/bin/ZeroWrt mkdir -p files/root curl -L -o files/root/version.txt https://git.kejizero.online/zhao/files/raw/branch/main/bin/version.txt chmod +x files/root/version.txt ./scripts/feeds update -a ./scripts/feeds install -a # 加载 .config echo -e "${YELLOW}加载 .config${NC}" echo -e "${YELLOW}加载自定义配置...${NC}" curl -skL https://raw.githubusercontent.com/oppen321/ZeroWrt/refs/heads/master/configs/x86_64.config -o .config # 生成默认配置 echo -e "${GREEN}生成默认配置...${NC}" make defconfig # 编译 ZeroWrt echo -e "${BLUE}开始编译 ZeroWrt...${NC}" echo -e "${YELLOW}使用所有可用的 CPU 核心进行并行编译...${NC}" make -j$(nproc) || \ echo -e "${RED}并行编译失败,回退到单核编译...${NC}" && make -j1 || \ echo -e "${RED}单核编译失败,启用详细输出调试...${NC}" && make -j1 V=s # 输出编译完成的固件路径 echo -e "${GREEN}编译完成!固件已生成至:${NC} bin/targets"