pm狗都会的OpenWrt编译方法

date
Mar 22, 2020
slug
shou-gong-ke-pmgou-du-hui-de-openwrtbian-yi-fan-5920f5e0
status
Published
tags
happy hacking
经验分享
summary
软路由 值得努力
type
Post
notion image
版本记录
1.0.2:新增 本地二次编译时使用的脚本,经过「passwall」下架事件后,建议大家定期更新/编译自己的软件版本,以防万一;
1.0.1:总所周知的原因, passwall 作者已将脚本从 GitHub 上删除,换言之截至本次更新时【20-04-30】,「开源」的网络工具只剩下 「plus」 一种,你仍然可以从 GitHub 上获取到;
1.0.0:提供了按照实操步骤所需要的基本脚本语言;
 

【背景】

 
如果你打不开上面的链接,可能你真的需要本文/本文以外的一些帮助。 简言之,OpenWrt允许用户对操作系统进行自定义和配置,同时开源意味着相对的透明/社区活跃。当然,更高的可自定义,意味着更高的学习/操作成本。作为产品狗,站在巨人的肩膀上,整理了网上纷杂的教程,已经自己踩坑的一些经验,输出下面的一些经验,以供参考吧。

【优势】

快,稳定,安全性。
  • 对于路由器,我试过梅林,NAS虚拟机,lede,最后狠下心自己编译OpenWrt固件。占用资源少,是最大的优势。
  • lede的软件中心固然很好看,但绝大多数功能,至少对于我这种日常玩家,并不必需,自己编译可以大砍特砍。
  • 梅林也是同样道理,七百多的华硕路由器,加虚拟内存,跑得半死,也不多多了一个ddns,和酸酸功能,跟何况前面这两项固件据说安全问题成疑,自己编译心理优势明显吧2333.

【劣势】

学习成本,时间资源,要硬件。
  • 非科班出身,你需要对SSH有基本了解,不难,但现代人就是这么懒,不是么?
  • 第一次编译的时间,差不多在4个小时左右。现代人嘛,忙得很。
  • 散了吧,OpenWrt仅支持一部分硬件,软路由的价格也不便宜,回归本心,回归本心。

【解决方案】

下面的部分,你会在网络上找到几乎所有信息,当然是散落在各处。我只是把我的操作流程进行整理,产出一份相对完整的过程,如果遇到问题,可以留言,但希望你要学会自己解决。
  • 1.VPS/PC 系统版本:ubuntu 14.04.6 看教程之前切记注意版本号,14/16/18,理论上都可以,但要找到相对应版本的语句,以下整理都是以14版本为准。
  • 2.网络环境 如果使用VPS,只需选择国外服务器即可。如果是电脑自行编译,需要全局代理,以及良好的网络带宽,否则会有问题。
  • 3.let's coding! 下面的内容是我实操过程中的总结,网络教程很多,要有信心!
#SSH登录VPS
ssh [email protected]VPS地址
#更新系统环境
sudo apt-get update
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch 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
#screen保护,防止你和VPS的连接中断导致编译失败
apt -y install screen
screen -S buildlede
⬆️️如果使用VPS编译,会存在SSH链接掉线的可能,所以使用screen保护,本地编译可以忽略。
#【有坑】缺少 python3.5 会导致报错,这里先安装下 3.5,有备无患
sudo apt-get install python3.5
#创建非root用户
useradd -r -m -s /bin/bash lede
#添加该用户密码
sudo passwd lede
#切换用户
su lede
#进入lede这个用户的目录
cd ..
cd /home/lede
#拉取git
git clone https://github.com/coolsnowwolf/lede.git
cd lede
#如果需要passwall插件,请操作【非必选】
vi feeds.conf.default
其中添加  src-git lienol https://github.com/Lienol/openwrt-package  wq保存
⬆️️这里的passwall插件,各人根据需要做取舍,没有特别需求,不建议专门添加。
#欢快地更新源【可以复制一整坨再粘贴】
./scripts/feeds clean
./scripts/feeds update -a
rm -rf feeds/lienol/lienol/ipt2socks
rm -rf feeds/lienol/lienol/shadowsocksr-libev
rm -rf feeds/lienol/lienol/pdnsd-alt
rm -rf feeds/lienol/package/verysync
rm -rf feeds/lienol/lienol/luci-app-verysync
rm -rf package/lean/kcptun
rm -rf package/lean/trojan
rm -rf package/lean/v2ray
rm -rf package/lean/luci-app-kodexplorer
rm -rf package/lean/luci-app-pppoe-relay
rm -rf package/lean/luci-app-pptp-server
rm -rf package/lean/luci-app-v2ray-server
./scripts/feeds install -a
#万事俱备,开始自定义插件【ss和passwall二选一即可,否则会产生冲突】
make menuconfig
#保存好配置文件后,开始编译之旅
make -j1 V=s
#编译完成,在本机终端下运行该语句【根据实际情况修改下保存路径】
scp -r [email protected]VPS IP地址:/home/lede/lede/bin/targets/x86/64/openwrt-x86-64-combined-squashfs.img ./本地保存路径/openwrt-x86-64-combined-squashfs.img
编译成功的固件会放在:/home/lede/bin/targets/x86/64这个目录下。
恭喜你,你已经成功打造出属于自己,独一无二的OpenWrt固件。如果插件选择合理,你会发现固件相比较梅林/lede之流畅和低功耗。

【关于二次编译】

进入 lede 文件夹
cd lede
更新源码
git pull
更新脚本/应用等
./scripts/feeds update -a && ./scripts/feeds install -a
清除之前的配置等信息
rm -rf ./tmp && rm -rf .config
重新配置文件,还是熟悉的套路
make menuconfig
make -j$(($(nproc) + 1)) V=s
 

【致敬开发者】

当然,要感谢所有的开发者,以及编写教程的那些开路者,以下为我的参考教程,如果你有问题,可以过去查看,相信他们的教程比我要全面很多。
 

© Max 2017 - 2023