本文将介绍如何进行Openwrt编译,
第一页会介绍手动操作执行编译,
第二页会介绍借助GitHub Action进行编译,
建议在了解手动操作的基础上再尝试GitHub Action托管编译。
手动编译
部署环境
准备一个Ubuntu,打开终端(Ubuntu Server最小安装的纯tty也可,编译过程不依赖图形界面)
安装所有依赖
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync
拉取源码并进入工程目录
本文采用lede源作为基础仓库,你也可以考虑使用openwrt官方源或其他第三方源开始
cd ~
git clone https://github.com/coolsnowwolf/lede
cd lede
取消被默认注释的feeds(可选)
sed -i -e '/^#/d' feeds.conf.default
添加自定义feeds (可选)
echo 'src-git onliner https://github.com/rufengsuixing/luci-app-onliner' >> feeds.conf.default
或
sed -i '$a src-git onliner https://github.com/rufengsuixing/luci-app-onliner' feeds.conf.default
更新并安装feeds
./scripts/feeds update -a && ./scripts/feeds install -a
进行一些自定义修改
# 修改默认IP
sed -i 's/192.168.1.1/192.168.50.5/g' package/base-files/files/bin/config_generate
# 修改默认主题
sed -i 's/bootstrap/argon/g' feeds/luci/collections/luci/Makefile
# 使用原版argon主题
rm -rf ./feeds/luci/themes/luci-theme-argon
git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git ./package/luci-theme-argon
git clone https://github.com/jerrykuku/luci-app-argon-config.git ./package/luci-app-argon-config
# 更改默认壁纸
wget -O ./package/luci-theme-argon/htdocs/luci-static/argon/img/bg1.jpg https://github.com/xylz0928/luci-mod/raw/main/Background/MontereyDark.jpg
# 更改默认图标
svn co https://github.com/xylz0928/luci-mod/trunk/feeds/luci/modules/luci-base/htdocs/luci-static/resources/icons ./package/lucimod
mv package/lucimod/* feeds/luci/modules/luci-base/htdocs/luci-static/resources/icons/
# 注释默认防火墙规则(取消拦截DNS)
sed -i "s/echo 'iptables/echo '# iptables/g" ./package/lean/default-settings/files/zzz-default-settings
sed -i "s/echo '\[ -n/echo '# \[ -n/g" ./package/lean/default-settings/files/zzz-default-settings
# 修改版本号
modelmark=R`TZ=UTC-8 date +%Y-%m-%d -d +"0"days`' by xylz0928'
sed -i "s/DISTRIB_REVISION='R[0-9]*\.[0-9]*\.[0-9]*/DISTRIB_REVISION='$modelmark/g" ./package/lean/default-settings/files/zzz-default-settings
# 本文末会介绍如何修改 默认banner(SSH登录的欢迎信息)
添加第三方或自定义软件包
# 添加 Serverchan
git clone https://github.com/tty228/luci-app-serverchan.git package/luci-app-serverchan
# 添加 Pushbot (全能推送)
rm -rf ./feeds/luci/applications/luci-app-pushbot
git clone https://github.com/zzsj0928/luci-app-pushbot package/luci-app-pushbot
# 添加 Onliner
git clone https://github.com/rufengsuixing/luci-app-onliner.git package/luci-app-onliner
# 添加 OpenAppFilter
git clone https://github.com/destan19/OpenAppFilter.git package/OpenAppFilter
# 添加 Dockerman
git clone https://github.com/lisaac/luci-app-dockerman package/luci-app-dockerman
# 添加 ADGuard Home
svn co https://github.com/sirpdboy/sirpdboy-package/trunk/luci-app-adguardhome ./package/luci-app-adguardhome
chmod -R 755 ./package/luci-app-adguardhome/*
svn co https://github.com/sirpdboy/sirpdboy-package/trunk/adguardhome ./package/adguardhome
chmod -R 755 ./package/adguardhome/*
# 添加 WOL Plus
svn co https://github.com/sundaqiang/openwrt-packages/trunk/luci-app-wolplus ./package/luci-app-wolplus
chmod -R 755 ./package/luci-app-wolplus/*
# 添加 socat(端口转发)
svn co https://github.com/sirpdboy/sirpdboy-package/trunk/luci-app-socat ./package/luci-app-socat
chmod -R 755 ./package/luci-app-socat/*
# 添加高级设置
svn co https://github.com/sirpdboy/sirpdboy-package/trunk/luci-app-advanced ./package/luci-app-advanced
chmod -R 755 ./package/luci-app-advanced/*
# 添加关机 (x86生效)
git clone https://github.com/esirplayground/luci-app-poweroff package/luci-app-poweroff
# 还有几个源稍后添加
设置配置及选择软件包
make menuconfig
下载编译依赖工具库并编译
make download && make -j1 V=s
重新编译
git pull
./scripts/feeds update -a && ./scripts/feeds install -a
# cd package / git pull
make -j16 V=s
附: 如何修改默认banner
# 修改tty banner
echo " -----------------------------------------------------" >> /tmp/mark
echo " █ █ ▚ ▟ █ " >> /tmp/mark
echo " █████ █ █████████ █ █████████ " >> /tmp/mark
echo " █ ▃ ██ ██████ ██ █ █ ██ " >> /tmp/mark
echo " ██ ▃ ██ █ █ █████████ ██████ ██ ████████ " >> /tmp/mark
echo " ██ █ █ █ ██████ ███▟ █ ██ " >> /tmp/mark
echo " ██ █ ██ █ █ █ █ █ ██ " >> /tmp/mark
echo " ▞ ▚ ▚ ▚ █ █ █ █ █ ████████████ " >> /tmp/mark
echo " ▞▞▞ ▚▚▚ ▚▚▚ ▚▚▚ ▟ ██████ █████ ██ " >> /tmp/mark
echo " ██ " >> /tmp/mark
echo " -----------------------------------------------------" >> /tmp/mark
echo " _________ _ ___ ___ ___ " >> /tmp/mark
echo " / /\ | | | __| \| __| " >> /tmp/mark
echo " / LE / \ | |__| _|| |) | _| " >> /tmp/mark
echo " / DE / \ |____|___|___/|___| " >> /tmp/mark
echo " /________/ LE \ " >> /tmp/mark
echo " \ \ DE / -----------------------------------" >> /tmp/mark
echo " \ LE \ / %D %V, %C " >> /tmp/mark
echo " \ DE \ / timestamp " >> /tmp/mark
echo " \________\/ -----------------------------------" >> /tmp/mark
> ./package/base-files/files/etc/banner
cat /tmp/mark >> ./package/base-files/files/etc/banner
# 修改版本号-tty
sed -i "s/timestamp/Built on '$(TZ=UTC-8 date +%Y-%m-%d)' by xylz0928/g" ./package/base-files/files/etc/banner