最近手上拿到一块香蕉派的R2,这块板子可以用作路由器,所以决定在板子上面跑一下Openwrt。

R2的外观长这个样子,看起来还是比较酷的;

  • 硬件介绍
  1. CPU 是MTK的4核芯片mt7623n,搭配mt7530的交换芯片和mt6625的Wifi & BT芯片,可以看出R2在硬件上具备路由器的强健实力。

链接:http://wiki.banana-pi.org/Banana_Pi_BPI-R2#Introduction

  • 软件介绍
  1. BananaPi-R2可运行Openwrt,Ubuntu等Linux开源系统;
  2. BananaPi的论坛用户多数是国外创客,活跃度也是十分的高,BananaPi在国外开源社区的影响力可见一斑。

论坛链接:http://forum.banana-pi.org/

简单介绍完后,接下来我下载openwrt的repo(代码库),来感受一下R2运行openwrt的性能;

  • Github代码仓库:https://github.com/garywangcn/bpi-r2_lede/tree/bpi-r2-on-lede-v1
  • Branch选择v1版本

  • 我的PC使用的Ubuntu 16.04,按快捷键"Ctrl+Alt+T"打开Terminal终端,输入下面的命令:
 jack@jack: git clone https://github.com/garywangcn/bpi-r2_lede.git
jack@jack: cd bpi-r2_lede
jack@jack: cat README
  • 下载开源的代码后,首先要学会看README

  • 通过“make menuconfig”去配置你的openwrt,如果刚开始接触还不精通的话,建议先用默认的配置;“make menuconfig”配置后的文件会保存在".config"文件中,".+文件"在Ubuntu中表示为隐藏文件,用“ls -a”可以查看到。
  • 如果要编译该工程,需要安装2号框中提到的相关组件,在Ubuntu中使用“apt-get install xxx”就可以安装了;比如要安装2号框图中的“gcc”,则使用命令“apt-get install gcc”。
  • 执行“make menuconfig”后,这个时候发现模块是非常少的,这个时候看3号框可以通过执行以下两行命令去更新和安装openwrt的相关模块和组件
 jack@jack: ./scripts/feeds update -a
jack@jack: ./scripts/feeds install -a
  • 执行完后,再执行“make menuconfig”会发现配置界面多了很多模块和组件。
  • 接下来,执行“make -j1 V=s”命令去编译工程,第一次编译工程的时间会比较久,如果你的PC是多核的芯片可以采用多线程的方式编译,我可以用“make -j4”去编译工程,这样速度会快一些。
  • 编译完成后,会在“build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-mediatek_32”目录下生成编译后的镜像文件:
  1. mtk-bpi-r2-SD.img
  2. mtk-bpi-r2-EMMC.img
  • 另外还有一个文件也要注意一下,就是位于“bin/targets/mediatek/32/lede-mediatek-32-bananapi,bpi-r2-sysupgrade.tar”,这个文件可以用于系统升级。

有了镜像文件后,接下来我们来烧录镜像;

  • 首先要准备一个至少8G大小的SD卡,SD卡读卡器
  • 插上PC上的USB接口后,如何在Ubuntu中找到自己的SD卡的盘符呢?我使用的办法是"fdisk -l",使用这个命令可以查看PC上的所有存储设备,我的SD卡信息如下
 jack@jack: fdisk -l
************************************************************
Disk /dev/sdf: 29.7 GiB, bytes, sectors
Units: sectors of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disklabel type: dos
Disk identifier: 0x4d1bc8d1 Device Boot Start End Sectors Size Id Type
/dev/sdf1 .7G c W95 FAT32 (LBA)
  • 可以看到我的SD卡是32Gb大小的,然后每个sector单元是 512 bytes,硬盘类型为dos,只有一个分区"/dev/sdf1";
  • 这里有人可能会说,这里显示的明明是29.7Gb,我问为什么说我的SD卡是32Gb的呢;
  1. 我给大家引申一下,为什么买电脑的时候,说买500GB,买回来看硬盘大小实际比500小一些;这是因为存储设备生产商是按照1000为计量单位去计算的,而我们的计算机是以1024为计量单位去计算的,怎么理解?
  2. 这里我的SD卡大小是 31914983424 bytes,按照生产商的1000位计量单位去计算,除以109 计算出来就是32Gb;但是按照计算机的计量单位1024去计算,31914983424 ÷ 1024 ÷ 1024 ÷ 1024 = 31914983424 ÷ 230 ≈ 29.7
  • 引申完后,我们再回到镜像烧录这里,那么如何烧录系统镜像到SD卡呢?这里就引出了Linux的“dd”命令,采用如下命令就可以把镜像写入到SD卡中了:
 jack@jack: dd if=mtk-bpi-r2-SD.img of=/dev/sdf
+ records in
+ records out
bytes ( MB, MiB) copied, 10.0212 s, 10.2 MB/s
  1. 这里在给大家引申一下“dd”命令,在Ubuntu的命令行中执行“man dd”可以看到对dd的介绍;
  2. “Copy a file, converting and formatting according to the operands.”意思就是拷贝文件,同时可以根据指定的大小进行转换;如何理解呢?
  3. 这里我举个例子,我测试一下我的硬盘读写速度,在此之前先介绍两个文件,/dev/null 和 /dev/zero;
  4. /dev/null 称为空设备,我们可以将一切不用的数据都输入其中“丢掉”,可以直接理解为“垃圾桶”;
  5. /dev/zero 是一个特殊的文件,它能够无限的提供数据0x0;
  6. 第1行我把硬盘sda的数据以1Mb的块大小写入虚拟设备null中,一共写入1024个块,也就是总共写入1Gb;第2行表示我写入硬盘1Gb的0x0;通过这种方式就可以测试硬盘的读写能力;你可以在电脑上插上存储设备试一试,看看其读写性能。
 jack@jack: dd if=/dev/sda of=/dev/null bs=1M count=
jack@jack: dd if=/dev/zero of=/dev/sda bs=1M count=
  • 烧录完成后,查看硬件接口图:http://wiki.banana-pi.org/Banana_Pi_BPI-R2#Hardware_interface,把SD卡插入到BananaPi-R2的SD卡槽中,接上12V/2V的电源,接上Debug串口;

  • 这里我使用的串口线是FT232RL USB转串口TTL的线,这里也有一个知识点,就是为什么PC的USB接口与板子的串口通信需要转电平信号呢?
  1. 因为两者的通信接口标准不同,导致电平信号有差异,PC上USB接口是USB标准,单片机电平是TTL标准,为了能让彼此能识别,这个时候就需要一颗USB转TTL的转换芯片,如果没有转换芯片,电脑上显示的板子串口信息将会是乱码;我们买的USB转串口的线一般都是内置了转换芯片的,所以看到的串口信息是正常的。
  • 启动完成后,界面如下:
 BusyBox v1.26.2 () built-in shell (ash)

      _________
/ /\ _ ___ ___ ___
/ LE / \ | | | __| \| __|
/ DE / \ | |__| _|| |) | _|
/________/ LE \ |____|___|___/|___| lede-project.org
\ \ DE /
\ LE \ / -----------------------------------------------------------
\ DE \ / Reboot (SNAPSHOT, r4774-8cb7cc2)
\________\/ ----------------------------------------------------------- === WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@LEDE:/# uname -a
Linux LEDE 4.9. # SMP PREEMPT Tue Jun :: armv7l GNU/Linux
root@LEDE:/#
  • 到这里,Openwrt就成功在R2上面运行起来了;后续我会发布更多的玩法,和大家一起玩转开源。

    欢迎大家批评指正,转载请注明出处,多谢。

   

【玩转开源】BananaPi R2 —— 第一篇 Openwrt安装的更多相关文章

  1. 【玩转开源】BananaPi R2 —— 第二篇 Openwrt 网口配置分析

    上次和大家分享了如何烧录和安装Openwrt到BananaPi R2,运行Openwrt的R2目前就具备路由器的功能了,这次我们来看看R2运行Openwrt的性能如何,同时也会讲解一些常用的网络知识. ...

  2. Android开源框架Afinal第一篇——揭开圣女的面纱

    Android开源框架Afinal第一篇——揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...

  3. 【OpenCV第一篇】安装OpenCV

    [OpenCV第一篇]安装OpenCV 本篇主要介绍如何下载OpenCV安装程序,如何在VS2008下安装配置OpenCV,文章最后还介绍了一个使用OpenCV的简单小例子. <OpenCV入门 ...

  4. SaltStack入门到精通第一篇:安装SaltStack

    SaltStack入门到精通第一篇:安装SaltStack 作者:纳米龙  发布日期:2014-06-09 17:50:36   实际环境的设定: 系统环境: centos6 或centos5 实验机 ...

  5. Jenkins拾遗--第一篇(安装Jenkins)

    起因 近期由于工作需要做起了起了jenkins的维护.不做不知道,一搞发现里边全是小坑.两个月弄了一身泥.曾经小瞧了它,但是发现其实要弄好它不是那么容易的.有句知名的话"没有总结就没有提高. ...

  6. [转]RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第一篇【安装】

    前言:关于RobotFrameWork+APPIUM实现对安卓APK的自动化测试的文章都是取自于乐于分享知识于网络的好心人们,所以我也希望我的知识可以分享给大家. 首先我们先罗列一下我们要安装的软件 ...

  7. RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第一篇【安装】

    文章来源http://blog.csdn.net/deadgrape/article/details/50563119 前言:关于RobotFrameWork+APPIUM实现对安卓APK的自动化测试 ...

  8. 学习Java第一篇——Java 安装及环境搭配

    内容提要: 1.下载JDK: 2.安装JDK: 3.配置JDK;   第一,下载JDK:  1.登陆网址:www.oracle.com 2.点击 Downloads 3.选择 Java SE 4.选择 ...

  9. Redis【第一篇】安装

    第一步:准备 1. 操作系统 CentOS-7-x86_64-Everything-1511 2. redis 版本 redis-3.2.8 3. 修改内核参数 有三种方式: 1)编辑/etc/sys ...

随机推荐

  1. XMLHttpRequest的使用

    XMLHttpRequest的使用 标签(空格分隔): JavaScript 前端 编程 function sendAjax() { //构造表单数据 var formData = new FormD ...

  2. cyq.data 常见使用方法

    配置数据库链接:(这只是其中一种方式) AppConfig.DB.CommandTimeout = 800; AppConfig.DB.DefaultConn = "数据库链接地址" ...

  3. 当PsychicBoom_发觉自己是个大SB的时候……

    这些题都是没ac调了好久发现是sb错误的题--. 想清楚再写题!!! 2019.4.18 洛谷P5155 [USACO18DEC]Balance Beam 转移方程\((a[l[i]]*(r[i]-i ...

  4. scws安装

    mkdir scws cd scws wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 tar xvjf scws-.tar.bz2 ...

  5. 1x1的卷积核有什么作用

    信道压缩~跨~信~减 一.1 X 1的卷积核作用 所谓信道压缩,Network in Network是怎么做到的? 对于如下的二维矩阵,做卷积,相当于直接乘以2,貌似看上去没什么意义: 但是,对于下面 ...

  6. js下拉框:从数组中筛选出匹配的数据

    handleChange(val) { let obj = {} // 遍历数组 obj = this.options.find(item => { // 筛选出匹配的数据 return ite ...

  7. python之路(7)装饰器

    前言 装饰器:为函数添加附属功能,本质为函数 原则:不修改被修饰函数的源代码 不修改被修饰函数的调用方式 装饰器=高阶函数+函数嵌套+闭包 使用场景演示 定义下面函数 def cal(l): res ...

  8. 【1】MySQL大数据量分页查询方法及其优化

    ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适应场景: 适用于数据量较少的情况(元组百/千 ...

  9. CentOS6和CentOS7

    http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso net.ifnames= biosdevname ...

  10. Swagger Edit 安装和使用教程

    Swagger Edit介绍Swagger是专门用来管理接口一个工具.在开发过程中,接口一直是纷争的聚焦点,能有效管理接口(保存好记录.及时更新.方便查看.接口测试).会让整个项目开发效率提升很大. ...