在 WSL2 上进行 OpenWrt 的编译

安装 WSL

配置编译环境

配置 Windows Terminal 默认打开目录为 ~

打开 Windows Terminal——设置,在 WSL 对应的区域加入一行

1
"startingDirectory": "/home/<username>"

其中,<name> 是上方显示的 WSL 的名称,username 是当前 windows 账户用户名的名称。

更换阿里云的源

完成 WSL 初始设置后:

备份原来的源。

1
cp -ra /etc/apt/sources.list /etc/apt/sources.list.bak

修改

1
vim /etc/apt/sources.list

将其中的东西替换成:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

保存,退出,然后更新缓存与升级。

1
2
sudo apt-get update
sudo apt-get upgrade

设置代理(以 Clash 为例)

为了加速编译所需文件的下载,需要给 WSL 挂代理进行网络加速。

WSL 不走主机端的代理,需要进行一番设置:

主机开好 Clash,开启 Allow LAN 的选项,

WSL 回到 /home

1
cd ~

修改 ~/.bashrc,自定义代理启动命令:

1
vim ~/.bashrc

在末尾加入以下代码:

1
2
alias proxy='export https_proxy="http://127.0.0.1:7890";export http_proxy="http://127.0.0.1:7890";export all_proxy="socks5://127.0.0.1:7891";curl ip.sb;'
alias unproxy='unset https_proxy;unset http_proxy;unset all_proxy;curl ip.sb;'

** 注意:** 其中 7890 是 Clash 的代理端口号,请根据自己的配置进行修改。all_proxy 一行的 socks5 端口号为 Clash 的 http 端口号 +1

保存退出,在主机端 Clash 开启的情况下输入:

1
proxy

即可开启代理。

输入:

1
unproxy

关闭代理。

设置 WSL 中不加载 Windows 的 PATH 内容

!!在 WSL 中,不进行此项设置会导致编译出错!!

1
vim /etc/wsl.conf

打开后输入:

1
2
[interop]
appendWindowsPath = false

保存退出后重启即可。

安装编译依赖

1
2
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

然后就可以开始编译了。

编译

参见 OpenWrt/LEDE 的编译与 Mentohust 软件包的添加 —— 以斐讯 K2 为例

OpenWrt/Lede 源码请务必 Clone~ 下再进行操作

获取编译的固件

在资源管理器地址栏输入 \\wsl$ 即可访问 WSL 下的文件。以 x86_64 平台为例子,固件所在路径为:

1
\\wsl$\WSL名称\home\用户名\lede\bin\targets\x86\64

致谢

感谢 @P3TERX,博客里的文章对我有很大帮助,本文自他的博客总结而来,亦有很大一部分文字直接复制自它的博客。

参考链接

https://openwrt.org/docs/guide-developer/build-system/wsl

https://p3terx.com/archives/compiling-openwrt-with-wsl.html

https://blog.csdn.net/wangyijieonline/article/details/105360138