在去年春节的时候,我不小心把小米路由器 3 给刷坏了,于是向亲戚要来了一台小米路由器 Mini,最近正好闲来无事,研究了一下 OpenWrt 的编译。

起初,我是用纯 WSL 的环境下编译了好几个小时,结果失败了两次。

于是我去 P3TERX 大佬的 Blog 下翻了翻,发现 GitHub Actions 是可以拿来编译 OpenWrt 的。

截至到现在,我已经用了这个方法成功编译了好几次。现在跟大家分享一下我是怎么用 WSL+Actions 来编译 OpenWrt 的吧。

——————————————–在WSL的必要准备——————————————–

首先,你的电脑必须是 Windows 10。在管理员权限下的 Powershell 下执行

“Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux”

然后去 Microsoft Store 下搜索 Ubuntu,安装,打开。

注意,安装完 Ubuntu 之后,系统会自动开始配置,如果在这个时候退出 Ubuntu,将会以 root 用户登录,届时将无法编译 OpenWrt。

配置完成后,执行 “sudo sh -c “apt update && apt upgrade -y””。完成之后再执行 “sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 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” 来安装必须的依赖

这里建议将安装依赖的命令运行多次,如果出现 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 那就是安装完整了。

之后执行 git clone https://github.com/coolsnowwolf/lede openwrt 来克隆源码。

完成后再分别执行 “cd openwrt” “./scripts/feeds update -a” “./scripts/feeds install -a”来配置软件包。

软件包配置完成之后,执行 “make menuconfig” 来调整组件。

首先先调整架构。

如果你和康娜一样是小米路由器 Mini,将 Target System 调整为 MediaTek Ralink MIPS。否则就是其他架构。

然后在 Target Profile 里将 Default 调整为 Xiaomi MiWiFi Mini。

调整完之后,按 Esc 返回主页面。

将光标定位到 LuCI,进入。

然后进入 Applications

这个时候你就可以开始自定义自己固件里的软件了。

如果需要某一个软件的话,将光标定位到那个软件,然后按 Y 键。反之则按 N 键。

在自定义你的固件前,你需要对 L 大的 OpenWrt 源码有一定的了解。否则很可能会”翻车”。

完成之后按左右键,将光标定位到 Save,之后将配置文件保存为 .config,退出配置。

之后打开文件资源管理器,在地址栏输入 “\wsl$\WSL名称\home\用户名\lede” 将 .config 文件复制到另外一个磁盘。

——————————————–在Actions编译——————————————–

在浏览器中打开 https://github.com/P3TERX/Actions-OpenWrt/generate 生成一个自己的仓库

然后进入仓库,点击右上角的 Create new file,将文件起名为 .config,然后将拷在磁盘里的 .config 文件内容全部复制粘贴到网页编辑器上。完成之后,点击 Commit new file 来生成配置文件。

这个时候,GitHub 会自动检测到配置文件并且开始编译。

大概一两个小时就可以从 Actions 取回固件了。

在最后,还是得感谢 P3TERX 大佬的两篇文章提供了思路。

感兴趣的可以去 Ta 的博客围观下。 https://p3terx.com/archives/build-openwrt-with-github-actions.html https://p3terx.com/archives/compiling-openwrt-with-wsl.html