本帖最后由 wuhuifu 于 2021-9-3 03:14 编辑
前言
致谢
三种编译环境以及注意事项
- windows系统安装wsl模拟ubuntu
- 自行安装ubuntu系统(最好不要安装在U盘,读写速度慢容易出错,如何安装ubuntu系统请自行搜索)
- github云编译(前提的config文件最好本机生成后再去云端编译)
- 全局科学(编译成功的必备条件,请在看下面教程前路由设置好)
- 最好选择第二种环境来编译,保证成功率
一:windows10系统安装WSL模拟ubuntu
说明: - 使用 WSL (Win-dows Sub-sys-tem for Linux) 编译 Open-Wrt 只需要一台装有 Win-dows 10 的电脑。相较于虚拟机编译,不需要知道如何安装 Linux ,也不需要考虑磁盘要分配多少空间,且对硬件的要求相对更低。
- 安装WSL
管理员身份运行windows Power-Shell (快捷键 win+x,i),执行以下命令并重启。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux - 从Microsoft Store 安装 WSL
WSL 默认安装位置在系统盘,如果不希望编译产生的文件撑爆系统盘则需要在安装前修改应用安装位置:设置→系统→储存→更改新内容保存位置
我个人选择的是20.04LTS版本
- 下载安装后打开,输入用户名和密码
注意:这里千万要注意不要关闭窗口,否则以后将会默认以 root 用户登录。因为编译 Open-Wrt 不能使用 root 用户,所以就需要手动添加用户和设置默认登录账户。关闭窗口后需要重置、重装 WSL 应用才能解决。
- 更新软件包列表和软件包(必须全局科学)
依次输入以下两个命令:
sudo apt-get update
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
注意:最好运行两次第二行的命令,保证系统出现如下提示才表示安装完整
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
- 找到编译的固件文件位置
在资源管理器地址栏输入 \\wsl$ 即可访问 WSL 下的文件
- 复制大雕源码到本地,命令如下
git clone https://github.com/coolsnowwolf/lede
- 进入lede文件夹,命令如下(注意CD后面有一个空格)
cd lede
如果要返回到主目录命令如下
cd .. - 添加feed源,主要是为了安装好编译所需的依赖和插件。我一般就2个源地址,操作如下(如果不想编译大雕源以外的插件可以直接跳过本步骤,后面可以自己再次添加编译)
1.电脑打开lede文件夹,找到feeds.conf.default文件,用记事本编辑打开
2.添加以下两个或者一个地址到feeds里面,主要区别是插件不一样,看你需求,我常用就推荐https://github.com/kenzok8/openwrt-packages,可以自行去主页看他的添加方式介绍。
src-git kenzo https://github.com/kenzok8/openwrt-packages
如果你要编译passwall,还需添加一下依赖
src-git kenzo https://github.com/kenzok8/openwrt-packages
另外一个源地址添加如下,建议提前看下其主页有没有你需要编译的插件
src-git lienol https://github.com/Lienol/openwrt-package
说明:大雕默认的源码只有前面4个,不明白请勿更改。带#号的表示不添加,如果你要禁止哪个源要么直接删除要么直接在地址前加入#号即可。
操作完毕保存即可 - 更新源,依次输入以下命令
./scripts/feeds update -a
./scripts/feeds install -a - 配置文件编译,输入以下命令
make menuconfig - 配置文件常规目录介绍,更具体中英文对照可以参考@xtwz 大佬的帖子说明:https://www.right.com.cn/forum/thread-344825-1-1.html
界面基本操作说明
1.上下方向键来选择项目,左右方向键选择退出和保存
2.enter进入项目,标红处为必须选项,以AX6为例,cpu架构选择IPQ807X,不同路由器请自行查看机器CPU架构,然后选择路由器型号
3.如果要编译插件写入固件,请按 Y
4.如果只编译不写入固件,请按 M
5.如果不编译或者取消已经内置的选择,请按 N
- LUCI插件编译界面,选择Applications进入
- Applications界面,是否编译写入固件请参考@xtwz 大佬的中英文对照
说明:
* 代表编译写入固件,按 Y 即可
<> 代表插件
[]表示插件类别下的子选项,比方说SSR passwall nss加速下都有子项目,不会保持默认就好
- 选择好后用左右方向键选择保存config文件即可
- 下载DLL库(必须全局科学),运行以下命令
make -j8 download V=s
注意:网速慢有可能下载插件和依赖不完整,可以多运行几次。网速慢有可能会卡屏,可以按ctrl+c来终止命令并运行删除缓存命令:rm -rf tmp 后继续执行下载dll库命令,最后可以执行make download来检查完整性。如果网速够好可以一次性过。 - 更改环境变量,运行以下代码
export GO111MODULE=on
export GOPROXY=https://goproxy.cn,direct - 首次编译固件(必须全局科学),时间较长,运行后可以关闭显示器该干嘛干嘛去(装逼可以开屏幕全屏跑代码),估计2小时,有失败的可能,比较玄学。我反正是多核编译,没在乎过。失败后看日志然后去搜索原因,本人小白,不要问我(哈哈)。运行以下代码
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make -j1 V=s
以上代码为大雕大佬推荐的单线程模式,-j1表示1线程
不相信玄学就自己根据自己cpu的线程来改,比如说4线程,就改为 -j4,我自己都是4线程开始 - 编译成功不会报错,报错会出现erro的提示,请自行查看代码并搜索解决方案,成功出现如下提示:
- 编译成功后文件位置(报错则不会出现固件):
\\wsl$\Ubuntu-20.04\home\xxx(你自己ubuntu注册的账号)\lede\bin\targets\xxx
一直点下去,你会惊喜的看到如下界面
- 愉快的刷机吧(请文明用语)
关于二次编译以及另外的几种方式我后续陆续更新,第一次码这么多字和美化排版不容易,路过的小伙伴顺手点个赞呗。感谢
|