前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >迅为i.MX6Q开发板Openwrt 文件系统构建

迅为i.MX6Q开发板Openwrt 文件系统构建

原创
作者头像
用户9167207
发布2022-04-19 14:32:49
1.3K0
发布2022-04-19 14:32:49
举报
文章被收录于专栏:嵌入式开发板嵌入式开发板

1 什么是 Openwrt

配套资料在网盘资料的“iTOP-i.MX6 系列开发板(6Q,6D,6QPLUS)\4_iTOP-i.MX6 开发板资料汇总(不含光盘资料)\12_iTOP-i.MX6 开发板 buildroot 系统 OTA 升级” Cisco/Linksys 在 2003 年发布了 WRT54G 这款无线路由器,同年有人发现它的 IOS 是基于 Linux 的,然而Linux 是基于 GPL 许可证发布的,按照该许可证 Cisco 应该把 WRT54G 的 IOS 的源代码公开。

2003 年 3 月,Cisco 迫于公众压力公开了 WRT54G 的源代码。此后就有了一些基于 Cisco 源码的第三方路由器固件,OpenWrt 就 是其中的一个。

OpenWrt 的特点:

可扩展性好,可以在线安装您所需要的功能,目前有 1000 多个功能包可选;

是一台完整的 Linux 工作站,文件系统可读可写,便于开发者学习和实践;

2 为什么要使用软路由?

首先家里面的路由器功能有限,很多功能不支持,就比如外网然后家中普通路由器支持一定的功能,但是性能有限,开启复杂功能之后原本路由器的职责又承担不了了,会出现丢包断流等现象,这时候需要别的硬件来完成高层的工作,减轻路由器的负担,保证家庭网络的运行的流畅稳定。

我们一般家庭的网络拓扑图,如下图所示:

根据上述图片,我们已经知道了家庭网络的大致结构,那么我们现在就需要在中间设置一个代理,把本来从用户走向路由器的流量拦下来,经过这个代理的“处理”之后,再直接给家庭路由器发送出去即可,

这样家庭路由器只需要关注传统的路由交换功能,而不需要处理传输层或者应用层的数据了,这就保证了家庭路由器的低负载和网络功能的增强。于是,我们提出来的一种新的网络结构,其物理结构如下:

实际的数据流向如下图所示:

叫旁路由的原因其实就是因为他就挂在一旁啦,是不是很形象呢?

3 openwrt 的编译

本章节参考 lede 大神的教程进行编译,具体链接为 https://github.com/coolsnowwolf/lede

下面是几点注意事项:

1.不要用 root 用户进行编译!!!

2.请全程使用

3.默认登陆 IP 192.168.1.1 密码 password

对于第一次编译,迅为已经编译完成,存放路径为“

iTOP-i.MX6 系列开发板(6Q,6D,6QPLUS)\4_iTOP-i.MX6开发板资料汇总(不含光盘资料)\12_iTOP-i.MX6 开发板 openwrt 文件系统\03_编译好的源码”。

编译环境为 Ubuntu 64bit,推荐 Ubuntu 20.04 LTS x64 首先进入终端,输入命令,使用以下命令搭建编译环境

编译环境搭完成后,使用命令 git clone https://github.com/coolsnowwolf/lede,对 lede 大神的源码进行克隆拉取,拉取完成会在当前目录下产生名字为 lede 的文件夹如下图所示:

或者将迅为已经下载好的源码拷贝到 ubuntu 虚拟机上,使用命令对其解压缩也也可以实现,源码存放 路径为“iTOP-i.MX6 系列开发板(6Q,6D,6QPLUS)\4_iTOP-i.MX6 开发板资料汇总(不含光盘资料) \12_iTOP-i.MX6 开发板 openwrt 文件系统\01_编译所需源码”

然后使用命令“cd lede”进入该文件夹,

作者这里为已经编译完成的,具体文件可能会有区别,拉取成功即可。

使用下列命令进行更新扩展:

代码语言:javascript
复制
./scripts/feeds update -a

扩展时间略长请耐心等待,扩展过程如下图所示:

更新扩展完成之后继续输入命令

代码语言:javascript
复制
./scripts/feeds install -a

进行安装扩展。安装完成之后我们的环境就搭建完成了。

安装扩展完成后。输入命令“make menuconfig”,进入可视化界面进行配置,如下图所示:

点击回车进入首选项 Target System,如下图所示:

对相应的平台架构进行选择,我们选择 i.MX 6,

选择后,功能页面如下图所示:

其他的地方不需要修改,通过 save 进行保存,

通过 Exit 进行退出,

回到源码目录后,使用命令

代码语言:javascript
复制
make -j8 download V=s

下载 dl 库,

输入命令

代码语言:javascript
复制
make -j1 V=s

即可开始编译你要的固件了。

 编译时间取决于自身机器的性能,大约五个小时左右。编译完成如下图所示:

4 openwrt 文件系统的烧写

编译完成后,使用命令

代码语言:javascript
复制
cd bin/targets/imx6/generic

进入 generic 目录,在这里我们只用最后生成的文件系统,如下图所示:

然后拷贝该文件系统到任意目录(看个人,自己怎样方便怎样来),作者拷贝到了/home/topeet/rootfs 目录下,

使用命令

代码语言:javascript
复制
tar -vxf openwrt-imx6-default-rootfs.tar.gz

对其进行解压缩,

然后使用命令

代码语言:javascript
复制
rm -rf openwrt-imx6-default-rootfs.tar.gz

移除原压缩文件,如下图所示:

然后使用命令

代码语言:javascript
复制
tar -zcvf rootfs.tgz bin etc mnt proc root sys usr www dev lib overlay rom sbin tmp var

对文件进行打包处理,压缩成我们能烧写的文件格式。

如下图所示,可以看到我们所需要的压缩文件已经生成了

将该压缩文件烧写进我们的开发板。

烧写完成之后正常上电启动,进入 uboot 模式,来设置启动方式,由于我们烧写的是 Linux 系统,所以

我们使用以下命令来设置 Linux 启动

代码语言:javascript
复制
setenv bootsystem qt

使用命令来保存。

代码语言:javascript
复制
saveenv

最后使用命令重启,开发板重启就可以正常启动了,正常启动如下图所示:

至此我们的文件系统就烧写成功了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档