编译 Openwrt 固件
前提条件:
- 具有 Linux 系统,我使用的是 WSL,WSL 的安装可以去官网看:Install WSL | Microsoft Docs
注意:使用 Linux 系统编译是不能直接使用 root 用户的,WSL 默认使用的不是 root 用户。
关于 Linux 用户管理可以看看我写的这篇文章:Linux 用户管理 - Linux | xun = 不失去热情 = 碎碎念 (asukaxun.com)
- 建议使用代理,不然下载可能会有点慢。(WSL 的代理配置可以看看这篇文章:Windows Subsystem for Linux 配置记录 | 0xfaner’s Blog)
我这里编译的是 L 大的固件,与官方源编译可能会有些不同。L 大源码仓库:coolsnowwolf/lede: Lean’s OpenWrt source (github.com)
编译安装
1. 安装编译依赖
1 | sudo apt update -y |
2. 下载源代码,更新源 (feeds)
1 | git clone https://github.com/coolsnowwolf/lede |
3. 选择配置
如果遇到Your display is too small to run Menuconfig!
错误,调大屏幕分辨率即可。
1 | make menuconfig |
这里会进入到一个菜单:
使用空格为选中或取消选中(也可以使用 Y 选中和 N 取消选中),使用回车进入子菜单。
选项有三种标志:
- < > 该代码将不会被编译
只编译不打包进固件。即交叉编译,生成的ipk软件包将被放在 /buildsystem/bla/bla/bla
, 但该软件包不会放入固件中。固件不能直接使用这个功能,需要手动导入安装。- <*> 将编译并打包进固件,该代码将被放入固件中 (on the SqashFS partition),固件可以直接使用这个功能。
选择机型
我自己的路由器是 K2P。所以我这里配置是:
Target System
:
1 | Target System > MediaTek Ralink MIPS |
排序都是按字母排序。
输入cat /proc/cpuinfo
可以看到这个信息
Subtarget
:
1 | Subtarget > MT7621 based boards |
Target Profile
:
1 | Phicomm K2P |
关于这些信息的查看:
1 | # 查看CPU信息 |
配置软件
LuCI→Applications
选择我们需要的软件,也可以取消不需要的软件。注意看标志。
关于这些插件请看:OpenWrt 编译 LuCI-> Applications 添加插件应用说明-L大【2021.11.18】-OPENWRT专版-恩山无线论坛 (right.com.cn),不过这个帖子时间有点久了,有些信息可能不太适用。
1 | LuCI ---> Applications ---> luci-app-accesscontrol #访问时间控制 |
如果采用的是openwrt官方源编译,务必要将LuCI→Collections→luci选上,否则可能无法进入web管理界面。
我们还可以选择主题:LuCI > Themes
,虽然只有几个而已。argon
就挺好看的。
这些配置都配好之后直接保存退出就行了。
接下来就是编译固件。
4. 编译固件
-j 后面是线程数,第一次编译推荐用单线程。
注意注意:如果使用 WSL 进行编译,由于 WSL 的 PATH 中包含带有空格的 Windows 路径,有可能会导致编译失败,所以我们需要在 make
前面加上:
1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
如下:
1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make download -j8 |
如果不使用 WSL 编译,那这里直接:
1 | make download -j8 |
执行完这些命令之后就开始编译了,第一次编译需要的时间比较长,大概一小时这样。
K2P breed
刷入:
编译完成后可以在lede/bin/targets/ramips/mt7621
下找到编译生成的文件,我们需要的是openwrt-ramips-mt7621-k2p-squashfs-sysupgrade.bin
这个文件。
在breed
下刷入sysupgrade
镜像,闪存布局选择“斐讯0xA0000”,如果布局选择错误可能会导致路由器反复重启。
如果我们需要重新配置:
1 | rm -rf ./tmp && rm -rf .config |
参考文章及文档:
lede/README.md at master · coolsnowwolf/lede (github.com)
编译k2p的openwrt固件 - 网络资源 - 宅…orz (zorz.cc)
OpenWrt 小白常用命令大全 - 彧繎博客 (opssh.cn)
OpenWrt 编译 LuCI-> Applications 添加插件应用说明-L大【2021.11.18】-OPENWRT专版-恩山无线论坛 (right.com.cn)
Author: xun
Link: http://blog.fooo.in/2022/09/06/router/compile-openwrt/
License:
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。