文章前言
前几天在YouTube上找OpenWrt固件的教程,搜到eSir讲解如何编译Lean大神的OpenWrt固件,这里撸一遍步骤方便自己记忆。
编译OpenWrt的时候大部分时间都花在了编译环境搭建上,因为编译需要很多依赖,好在这之前Lean已经帮我整理好了,只需要按照步骤进行即可。
相关连接
Lean大神的LEDE固件
eSir的GitHub
eSir_PlayGround 的TG讨论群
eSir YouTube频道
前提准备
- 一个虚拟机,Windows可以使用VMware,在macOS下可以使用parallels Desktop
- 系统要求Ubuntu 14.04,这个是一个老版本,本人测试也可以在Ubuntu 18.04上成功编译,但是还是推荐14.04
- 一个经得起折腾的心脏。
环境搭建
Ubuntu系统安装后更新一下源,Lean和eSir万般说明不要使用root用户编译系统,可能会遇到各种问题。
安装依赖
sudo apt update
sudo apt -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex node-uglify gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx-ucl libelf-dev autoconf automake libtool autopoint
等待安装完成,这可能需要一点时间。
克隆源码
git clone https://github.com/coolsnowwolf/lede
这一步后需要全局代理,防止一些源被屏蔽造成编译失败。
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
feeds 这一步会安装扩展代码选项,就是进入make menuconfig 后的各种扩展包选项,如果没有安装你可能看不到。
生成默认配置文件
make defconfig
这个命令会检查所需的编译工具是否齐全,并生成默认的编译配置文件.config
配置编译选项
在终端输入:
make menuconfig
进入后你可以利用键盘上的上下键选择你要编译的平台,比如X86平台,或者像我一样选择BCM27XX就是树莓派的ARM平台,然后在选择一些必要的软件包。每次编辑后需要要Save保存,然后退出即可生成.config
配置文件。
下载源码
配置完成后需要下载你选择的那些软件和必要的文件,OpenWrt仅有编译及配置指令,各种依赖的代码包在上游网站及代码仓库里,编译会下载大量源代码
make download V=s
这一步可能需要很长时间,而且必须全局代理,如果你代理够快可能需要半个小时到三个小时或者更长的时间。
编译系统
上面的步骤准备无误后进行编译,推荐第一次编译使用单线程,方便排错,如果你对配置很有信心也可以使用多线程。
make V=s -j1
-j1
这个参数就是限制线程的意思,如果使用多线程可以不加这个参数又系统自己判定你CPU核心数来完成。
上面这一步建议使用screen 来守护进程,有时候你可不小心断开终端丢失会话编译就会中断。
安装screen:
sudo apt install screen
screen 使用很简单-S
命令创建一个会话:
screen -S openwrt
按住键盘上 Ctrl +A +D 挂载到后台,查看后台的会话:
screen -ls
执行上面的命令你会看到我们挂载到后台的openwrt会话,切换到openwrt会话:
screen -r openwrt
如果你只有一个会话可以省略后面的openwrt,默认进入第一个。
最后总结
其实教程只是简单的说了一下步骤,你可以根据eSri的视频来做,只要编译环境搭建好了保证可以完成编译。再有就是写教程真的好累,我这几天开始折腾openwrt,所以遇到很多坑,慢慢写出来做个笔记。
网站今天才开张,也希望大家也能分享一下自己的经验或者提出问题大家讨论,我也是个新手。😊
接下来我可能会总结一下,移植Lean的插件到官方OpenWrt中进行编译,因为我用Lean大神的固件编译后树莓派没有WiFi。这里面的坑也是非常的多。
最后感谢Lean和eSir两位大神,还有在TG群里解答我问题的朋友!
博主 请问一下。这个文章内容右侧的那个“文章目录”是插件吗? 还是主题带的?
@花卷: 主题自带的。
博主
make menuconfig
没有看到有arm的啊
@th: 这玩意不显示ARM的,找你的CPU型号网卡型号啥的就行。
@萝卜: 博主没有wifi的问题该如何解决