热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OpenWRT下载与编译

一、概述OpenWRT是一个高度模块化、自动化的嵌入式Linux系统,拥有强大的网络组建和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由

一、概述

OpenWRT是一个高度模块化、自动化的嵌入式Linux系统,拥有强大的网络组建和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中,其中在智能路由器上有广泛使用。同时它还提供了100多个已编译好的软件,而且数量还在不断增加。

OpenWRT支持各种处理器架构,无论是ARM、X86、PowerPC或者MIPS都有很好的支持。其多达3000多种软件包,囊括从工具链(toolchain),到内核(Linux Kernel),到软件包(packages),再到根文件系统(rootfs)整个体系,是的开发者只需要简单的一个make命令就可以方便快速的定制一个具有特定功能的嵌入式系统。

对于想学习嵌入式Linux开发的工程师来说,OpenWRT是非常适合的。一般的嵌入式Linux的开发过程,无论是ARM,PowerPC或MIPS的处理器,都必须要经过以下开发过程:

1) 创建Linux交叉编译环境

2) 移植Bootloader

3) 移植Linux内核

4) 移植Rootfs(根文件系统)

5) 编写/移植驱动程序

6) 编写应用软件

这个过程不用说对于一个初学者来说是一个非常艰辛漫长的过程,对于一个经验丰富的工程师来说也是非常耗费时间的。但是现在有了OpenWRT,它已经帮我们完成了步骤1-4,我们只需要专注步骤5-6的开发,就可以完成一个完成的嵌入式产品。


二、OpenWRT下载

要进行嵌入式Linux开发,首先要有一个安装有Linux系统的宿主机,我们使用的开发环境是基于Ubuntu 16.04_64bit的。开发环境搭建可参考《》

先确认Ubuntu下已安装git和subversion工具,俗人没有,请使用如下命令安装:

sudo apt-get install git subversion

我们使用的是git方式下载,但在编译过程中OpenWRT要求有安装subversion,所以我们先一并安装上。

OpenWRT代码已全部开源在github上,各版本的下载地址可在

https://dev.openwrt.org/wiki/GetSource地址获取,可以选择Chaos Calmer (15.05)正式发行版,也可以选择开发版,我们选择的是主开发版(trunk),可分别在以下地址下载:

正式版输入: git clone -b chaos_calmer https://github.com/openwrt/openwrt

开发版输入: git clone https://github.com/openwrt/openwrt

由于OpenWRT源码包比较大,而且国内连接github速度较慢,须耐心等待git下载完成。


三、OpenWRT编译

在编译之前,我们需要先更新种子列表,输入:./scripts/feeds update -a,然后更新种子在menuconfig中的显示列表,输入:./scripts/feeds install -a,只有install之后才能在make menuconfig里面进行相关的配置。

更新完成后,我们输入make menuconfig进入配置,这时OpenWRT自动检测编译环境是否存在所需的全部依赖组件,如我的Ubuntu提示如下:

Build dependency: Please install ncurses. (Missing libncurses.so or ncurses.h)

Build dependency: Please install a static zlib. (Missing libz.a or zlib.h)

Build dependency: Please install the openssl library (with development headers)

Build dependency: Please install GNU 'awk'

Build dependency: Please install the Subversion client

当前编译环境缺少依赖组件,OpenWRT自动停止进入make menuconfig,直至全部依赖组件安装完成。可一次性全部安装所需依赖组件,输入:

sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev subversion git-core gawk asciidoc libz-dev zlib1g-dev libssl-dev

首次进入make menuconfig界面如下:

图1:默认配置

我手上开发板配置情况如下:主芯片为RT5350/RAM:32M/Flash:8M。

故修改配置为:

Target System:Ralink RT288X/RT3XXX

Subtarget:RT3X5X/RT5350 based boards

Target Profile:HAME MPR-A2;该路由器型号与我们开发板RAM/Flash配置一致,路由器配置可在http://wiki.openwrt.org/toh/start查询。

配置选项时,在对应选项上按“空格键”表示选中,会编译进固件;按“M”键表示只编译但不编译进固件,以软件包形式存在。

  

图2:Target System选择

图3:Subtarget选择

图4:Target Profile选择 

图5:设置完成界面

这样就完成最基本配置。选择保存,文件名为默认.config

 

图6:Save

选择或连按2次ESC键返回命令行,输入make V=99即可开始编译,V=99表示输出编译信息。编译过程需要联网,OpenWRT需要在线下载很多文件。

 

图7:开始编译

第一次编译过程耗时较长,特别是在线下载文件包,由于网络关系导致某些文件包无法下载而中断编译过程。此时可查找出错的包名,至ftp://ftp.gnu.org/gnu/手工下载对应文件包,并复制至“dl”目录后重新编译,直至全部完成。

编译完成后的固件位于“bin”->“ramips”目录下,其中“ramips”为目标芯片对应文件夹,选择的芯片不同,文件夹名不同。

图8:编译完成固件

其中openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin文件就是我们用来升级开发板的固件。


四、固件更新

我们使用的是Windows+VMware搭建的开发环境,使用Windows下的TFTP软件“Megatops TFTP Server”,启动软件后设置好OpenWRT固件所在目录,本人目录为“C:\share”

 

图9:TFTP Server

将开发板通过网线与PC连接至同一网络,并将串口与PC连接,设置串口终端波特率为57600,开发板上电启动,串口终端将可以看到启动日志

图10:启动日志

开发板在启动后几秒内可以选择不同的操作方式,我们选择2:通过TFTP写固件至FLASH,在下载固件之前,需要确认是否擦除Flash上的Linux系统,我们选择“Y”,进入下一步。

 

图11:TFTP配置

依次输入device IP(设备IP)和server IP(PC-IP),device IP可任意输入但必须与PC在同一网段;Linux Kernel文件名即为上面我们编译出来的OpenWRT固件名:openwrt-ramips-rt305x-mpr-a2-squashfs-sysupgrade.bin。确认无误后,按回车键即可开始TFTP下载。

 

图12:下载开始

串口输出一连串“#”表示Uboot正在从TFTP服务器下载固件文件至ram上,下载完成后Uboot将擦除FLASH并将固件写入。

图13:固件写入Flash

写入Flash后Uboot自动启动内核,内核启动完成后在shell输入回车就可看到OpenWRT的Logo,固件下载成功。

 

图14:OpenWRT启动Logo


推荐阅读
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • Windows 7 部署工具DISM学习(二)添加补丁的步骤详解
    本文详细介绍了在Windows 7系统中使用部署工具DISM添加补丁的步骤。首先需要将光驱中的安装文件复制到指定文件夹,并进行挂载。然后将需要的MSU补丁解压并集成到系统中。文章给出了具体的命令和操作步骤,帮助读者完成补丁的添加过程。 ... [详细]
  • 本文讨论了在Linux系统中,使用chown命令将django项目目录下的static目录的拥有者从root改为eureka的问题。作者尝试了多种命令,包括chown和sudo chown等,但都没有成功修改拥有者。文章提供了相关目录的权限信息,并补充了项目所在磁盘和操作系统的信息。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
author-avatar
李大乔vivi
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有