wsl2 编译 Lean's Openwrt x86_64_kvm
从源码编译 Lede x86_64_kvm 以及 wsl2 带来的坑.
资料来源:
https://openwrt.org/docs/guide-developer/build-system/install-buildsystem
http://everun.top/helpcenter/others/pve-ow-2.html
https://exlolicon.blogspot.com/2018/09/centosopenwrt.html
https://github.com/coolsnowwolf/lede
https://blog.x-wrt.com/docs/build/更新
1
220.08.13 初始化
22.10.11 重新编辑内容
导语
Lean’s Openwrt 可以算是原版的本土化版本,适合本地化使用.
之后的内容基本上是基于此版本来倒腾了.
准备
大致过程与编译原版相同.
环境
- wsl2-ubuntu ,之前在虚拟机上 debin/centos 始终都有失败的时候.
- 10~20G 空间,编译不同版本需要空间有不同.
- cpu 此处是 AMD 3600 6C12T.(所以下面都是 12 线程)
- 网络条件,不再提了.
系统
- lib32gcc1 -> lib32gcc-s1
1 | sudo apt-get update |
源码
拉取源码
1 | git clone https://github.com/coolsnowwolf/lede |
更新&&安装 feed
1 | ./scripts/feeds update -a |
配置
为 x86_64 添加完整 kvm 支持
这一节来自 在Proxmox VE上运行OpenWrt/LEDE虚拟机——2.PVE下运行的OW/LEDE固件编译要点
官方的 x86_64 对应配置在 openwrt\target\linux\x86\64
下,可惜没有完整支持 kvm,但是官方的 x86_generic 却完整支持了 kvm.可能是一点疏忽吧.
添加 kvm 完整支持可以新添加一个 subtarget 或者在 x86_64 上修改,这里直接在 x86_64 上修改了.
把 lede\target\linux\x86\generic\config-5.19
下的 kvm 内容搬到 openwrt\target\linux\x86\64\config-5.19
1 | CONFIG_KVM=y |
内核配置
首次编译前要先 make menuconfig
指定 Linux 内核分支.这里是 x86_64.
1 | make menuconfig |
随后 save
到配置文件,再 exit
.
其次 make kernel_menuconfig
这一步会下载内核源码,还会编译一些内容,开个多线程节省点时间.V=s
会输出编译 log,防止无聊.
1 | make kernel_menuconfig -j$(($(nproc) + 1)) V=s |
这一步时间可能稍长,需要耐心等待.
固件配置
一些定制化都在这里了,后面有两篇会涉及到固件配置,一篇是 qca9880,还有一篇是专门的定制化.这里仅仅提到一点.
1 | make menuconfig |
最后 save
&& exit
编译
绝对不能使用 root 用户编译 !!
wsl2 运行前需要解决路径问题
1 |
|
编译过程依旧会下载一些内容,需要保持网络通畅.
官方不推荐多线程编译,但是先试试总归比单线程快的多.
1 | # 下载 dl 库 |
12 线程编译大概只有不到 20 分钟.
编译完成后,固件在 openwrt\bin\targets
对应的架构文件夹内.
坑
不能使用 root
用户编译,这是官方就提到了很多次的.
make[2]: *** [package/Makefile:71: package/install] Error 1
- 首先排除网络问题.
- 其次是对应的 package 错误,
make menuconfig
检查一下对应的设置. - 如果还有错误,
make clean
清理编译文件,换成-j1
单线程编译,可以解决一部分问题.
结束
前后折腾了有一个星期,需要的功能大致齐全了,但是本身并不稳定,时常有掉驱动,重启的问题.暂时不清楚是驱动还是固件本身的问题.
或许倒腾点啥,开始都这样挫败,过一段时间就好了.