使用Win10的WSL编译openwrt

一直在用别人编译好的固件,闲来无事试试在 win10 里自己编译一下

  • 经测试 90%的问题是因为网络原因,所以注意全程打开 freestyle 上网

安装依赖

开启 Linux 功能

首先搜索 功能

在搜索结果中选择 启用或关闭 Windows 功能

在弹出的窗口中选择 适用于 Linux 的 Windows 子系统

点击确定开启此功能

安装 Linux 系统

win10 商店搜索并下载 Ubuntu 18.04LTS

用管理员模式打开 WSL

命令行输入

1
sudo apt-get update

然后输入

1
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

克隆源码

强烈建议在 WSL 里直接克隆代码,如果下到 windows 的目录上编译会有一系列意想不到的问题

1
git clone https://github.com/coolsnowwolf/lede

ps:如果你在这一步就克隆很慢的话,最好先解决一下网络问题,不然后面下载依赖库的时候大概率会出错

进入目录

1
cd lede

可以用vi feeds.conf.default命令将文件最后一行前面的#号删除

如果你不熟悉 vi 语法的话,也可以直接从 windos 目录上找到该文件,右键使用记事本打开编辑,路径在C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_字符串\LocalState\rootfs\home\用户名\lede\feeds.conf.default

添加怕死我安装包

1
2
3
4
cd package
git clone https://github.com/kenzok8/openwrt-packages.git
git clone https://github.com/kenzok8/small.git
cd ../

再执行

1
2
./scripts/feeds update -a
./scripts/feeds install -a

配置

输入

1
make menuconfig

这时候会进入配置页面

键盘上下移动光标,回车进去,ESC 返回, Y 选中, N 取消选中


最重要的都在LuCI


Themes里是主题


Applications里是各种插件

具体插件说明可以看这篇帖子
选完自己想要的插件后,按两下 esc&回车保存退出

编译

输入命令下载 dl 库(注意全局 freestyle 上网)

1
make -j8 download V=s

我第一次直接编译报错了,查了下是因为win10wsl 自带 path的问题,所以编译前先执行

1
source /etc/environment

输入命令确认下路径是否正确

1
echo $PATH

如果输出和上面一样的话就输入命令开始编译

1
make -j1 V=s

这里1代表线程数,L 大推荐第一次编译使用单线程

二次编译

先进入源码根目录

1
cd lede

更新 openwrt 源码

1
2
3
git pull
./scripts/feeds update -a
./scripts/feeds install -a

再更新下插件的源码

1
2
3
cd package
cd openwrt-packages
git pull


更新下插件依赖库再返回根目录

1
2
3
4
cd ../
cd small
git pull
cd ../../

直接编译

1
2
3
make defconfig
make -j8 download
make -j$(($(nproc) + 1)) V=s

重新配置

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

最后


编译好后输出路径在bin/targets
Windows 里的路径在C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_字符串\LocalState\rootfs\home\用户名\lede\bin\targets


刷入之后的效果

我按照这套流程下来是可以编译成功的,并且不算难,而且自己编译的固件是绝对没有后门的,推荐大家以后试试这种方式自己编译固件
ps: 固件我上传到Telegram 频道上了,有需要的可以自取

参考