摘要

本篇教程将会带您进行基础的openwrt路由系统自定义编译

基础的需求:

  • 一台安装了Ubuntu18.04及更高版本系统的设备

  • 至少80GB的空闲磁盘空间

  • 至少4GB的空闲物理内存

  • 网络能够畅通无阻访问全球或设置了网络代理

  • 熟悉ctrl+c和ctrl+v

若您不满足基础需求的任一条件,可以使用站长已编译完成的作品,该作品的功能请参阅以下内容说明;

下载地址:alist私有云若跳转页面提示需要登录,点击“以游客身份浏览”即可

基础模块仓库

以下是编译需要的模块仓库,标注“*”的是必须的,其他的是可选功能

目标功能

进行编译前首先想好目标功能,需要实现什么功能,以下列表是本次教程将会包含的功能

  • docker以及ui管理面板

  • 科学上网【open clash、pass wall】

  • 路由信息全能推送【PushBot,原serverchan作者原创插件tty228/luci-app-serverchan

  • 解锁网易云灰色音乐

  • 动态dns

  • KMS服务器【用于验证激活Windows、office】

  • 分流助手【分流国内、国外】

  • usb打印机

  • 网络共享功能【nfs、cifs、samba等】

  • 全功能VPN服务器【SoftEther VPN,支持OpenVPN, IPsec, L2TP, MS-SSTP, L2TPv3 和 EtherIP】

  • qos功能

  • 网络加速【Turbo ACC 网络加速】

  • 多线多播

  • 负载均衡

  • 带宽监控

  • 路由信息监控【netdata】

  • argon主题设置

编译

Tips:

  1. 禁用root用户进行编译

  2. 复制粘贴前检查代码路径,如果你是在用户目录下直接clone的源码,可以照抄下方的代码

  • 更新系统

 sudo apt update -y
 sudo apt full-upgrade -y
  • 安装编译所需的软体

 sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
 bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
 git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
 libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
 mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
 libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
 vim wget xmlto xxd zlib1g-dev python3-setuptools
  • 克隆源码

 git clone https://github.com/coolsnowwolf/lede
  • 替换主题【Argon】

 cd lede/package/lean  
 rm -rf luci-theme-argon  
 git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git
  • 下载open clash【文件非常大,截止文章更新2023-11-21,大概需要下载19GB的内容】

 mkdir ~/lede/package/luci-app-openclash
 cd ~/lede/package/luci-app-openclash
 git init
 git remote add -f origin https://github.com/vernesong/OpenClash.git
 git config core.sparsecheckout true
 echo "luci-app-openclash" >> .git/info/sparse-checkout
 git pull --depth 1 origin master
 git branch --set-upstream-to=origin/master master
  • 添加pass wall

返回到lede文件夹,cd ~/lede找到 feeds.conf.default,打开文件后添加下面两行代码

 src-git passwallpkg https://github.com/xiaorouji/openwrt-passwall-packages.git
 src-git passwall2 https://github.com/xiaorouji/openwrt-passwall2.git
  • 更新feeds

 ./scripts/feeds update -a && ./scripts/feeds install -a
  • 配置编译功能&插件

 make menuconfig
  • 下载DL库

这一步需要一些时间完成下载,确保网络稳定,如果这一步下载的不全,会在编译过程中补全,但是容易出现一些奇怪的问题,比如下载超时编译就直接报错等,对网络环境稳定性担心的,可以重复执行以下代码2~3次,确保没有遗漏的下载

 make -j8 download V=s
  • 开始编译

 make -j1 V=s

二次编译

  • 更新主程序源码

 cd ~/lede && git pull
  • 更新open clash源码

 cd ~/lede/package/luci-app-openclash && git pull
  • 更新主题源码

 cd ~/lede/package/lean/luci-theme-argon && git pull
  • 更新feeds

 cd ~/lede && ./scripts/feeds update -a && ./scripts/feeds install -a
  • 下载DL库

 make -j8 download
  • 开始编译

 make -j1 V=s

重新配置

 rm -rf ./tmp && rm -rf .config
 make menuconfig
 make -j$(($(nproc) + 1)) V=s