如何编译OpenWrt路由器固件

如果要玩转OpenWrt系统,就应该自己去学会编译OpenWrt固件,甚至学会增加自己的小功能在OpenWrt系统中。

很多人都遇到过自己编译的OpenWrt固件没有web界面的情况,于是开始尝试各种方法找问题。

对于新手来说就直接重启试试,对于高手的话可能要一些列操作,ping lan口、清缓存、ssh进后台等。可能有经验的一看浏览器响应状态就知道这是缺失了luci管理页面。下面介绍下如何编译带luci的OpenWrt固件,这次的重点是在luci下载、安装和配置上,前提是需要掌握最基本编译常识。

  1. 源码获取

我们采用OpenWrt原生的源码,分支为openwrt-18.06

git下载地址:

https://github.com/openwrt/openwrt.git

目前国内用lean的openwrt源码分支的比较多,仓库地址为

https://github.com/coolsnowwolf/lede

该仓库基于老一点的版本,luci采用luci1.0,可以安装更多好玩的插件,openwrt主线代码已经采用了luci 2.0,目前兼容的插件不多。所以根据自身情况选择源码,编译的过程都是类似的。

通过git命令下载

下载后为openwrt主分支的代码,我们还需要切换到指定分支

查看分支列表(git branch -a)

切换到openwrt-18.06分支

原始的目录结构如下

通过上图可以看出,刚下载的代码目录非常少,只有基本的系统框架,主要包含了package的配置,很多目录是编译过程中生成的。

很多人下载基本源码后就直接开始执行make进行编译,这样编译出来的固件是默认profile的固件,并且不带luci界面。所以在编译前我们还需要下载和配置luci包。

2. 集成第三方包(Luci)

openwrt基本框架中只包含了基本的package,还有很多第三方的package需要加入到系统中,比如luci。

openwrt通过feeds脚本来下载第三方包

默认配置为feeds.conf.default,配置文件中包含了package下载地址,类似于ubuntu系统的source文件。

配置如下:

现在我们开始执行命令下载和安装第三方package

下载

./scripts/feeds update -a

下载后的文件在根目录的feeds目录中

安装

./scripts/feeds install -a

通过install后feeds目录中的package就集成到了openwrt系统中,集成的过程是通过软链接,

如luci包目录为package/feeds/luci/

luci的各种包都是软链接到了根目录的对应目录

当然除了通过以上两条命令外,还有一种方式更新feeds,那就是

make package/symlinks

可能很多人不理解symlinks的作用

symlinks是makefile的一个target,定义在include/toplevel.mk文件中

通过上图的代码我们可以看到,make package/symlinks命令最终执行了update和install命令,所以两种方式的效果是一样的。

当然你也可以通过执行make package/symlinks-clean卸载feeds package

3. make menuconfig选择luci

当我们完成luci包的安装后,我们还需要选择luci进行编译,make menuconfig命令是用于编译包选择的命令,可以用于控制openwrt固件中需要集成哪些包。

执行make menuconfig后,我们可以看到luci配置选项

选择luci后进入以下界面

选择Collections然后开启luci,这样就选择了luci模块,编译时就会将luci集成到系统中。

除了选择luci模块外,还可以对luci进行其他配置,比如多语言、菜单配置、界面主题等

选择多语言支持

选择luci模块

luci支持界面定制化,可以根据配置动态生成页面

当配置好后,直接选择yes保存退出即可

4. 编译固件

注意事项

  • 编译时首先确保是非root用户,否则报错
  • 编译过程中会下载必要的压缩包到dl目录中,速度可能比较慢,对于有些package可能需要准备梯子
  • 如果编译最新源码建议采用ubuntu18.04以上的版本,编译前请确保安装了基础的ubuntu库,当然如果出现库错误会有提示,一步步安装即可
  • 编译整个系统时间会比较长,普通机器一般1-2小时

编译完成后固件在bin对应目录,如7621平台固件对应目录为

bin/targets/ramips/mt7621/

未经允许不得转载:FROS路由技术分享 » 如何编译OpenWrt路由器固件

赞 (34)

相关推荐

    暂无内容!

评论

4+1=