【玩转开源】BananaPi R2 —— 第一篇 Openwrt安装
最近手上拿到一块香蕉派的R2,这块板子可以用作路由器,所以决定在板子上面跑一下Openwrt。
R2的外观长这个样子,看起来还是比较酷的;

- 硬件介绍
- CPU 是MTK的4核芯片mt7623n,搭配mt7530的交换芯片和mt6625的Wifi & BT芯片,可以看出R2在硬件上具备路由器的强健实力。
链接:http://wiki.banana-pi.org/Banana_Pi_BPI-R2#Introduction
- 软件介绍
- BananaPi-R2可运行Openwrt,Ubuntu等Linux开源系统;
- 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”目录下生成编译后的镜像文件:
- mtk-bpi-r2-SD.img
- 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的呢;
- 我给大家引申一下,为什么买电脑的时候,说买500GB,买回来看硬盘大小实际比500小一些;这是因为存储设备生产商是按照1000为计量单位去计算的,而我们的计算机是以1024为计量单位去计算的,怎么理解?
- 这里我的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
- 这里在给大家引申一下“dd”命令,在Ubuntu的命令行中执行“man dd”可以看到对dd的介绍;
- “Copy a file, converting and formatting according to the operands.”意思就是拷贝文件,同时可以根据指定的大小进行转换;如何理解呢?
- 这里我举个例子,我测试一下我的硬盘读写速度,在此之前先介绍两个文件,/dev/null 和 /dev/zero;
- /dev/null 称为空设备,我们可以将一切不用的数据都输入其中“丢掉”,可以直接理解为“垃圾桶”;
- /dev/zero 是一个特殊的文件,它能够无限的提供数据0x0;
- 第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接口与板子的串口通信需要转电平信号呢?
- 因为两者的通信接口标准不同,导致电平信号有差异,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安装的更多相关文章
- 【玩转开源】BananaPi R2 —— 第二篇 Openwrt 网口配置分析
上次和大家分享了如何烧录和安装Openwrt到BananaPi R2,运行Openwrt的R2目前就具备路由器的功能了,这次我们来看看R2运行Openwrt的性能如何,同时也会讲解一些常用的网络知识. ...
- Android开源框架Afinal第一篇——揭开圣女的面纱
Android开源框架Afinal第一篇——揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...
- 【OpenCV第一篇】安装OpenCV
[OpenCV第一篇]安装OpenCV 本篇主要介绍如何下载OpenCV安装程序,如何在VS2008下安装配置OpenCV,文章最后还介绍了一个使用OpenCV的简单小例子. <OpenCV入门 ...
- SaltStack入门到精通第一篇:安装SaltStack
SaltStack入门到精通第一篇:安装SaltStack 作者:纳米龙 发布日期:2014-06-09 17:50:36 实际环境的设定: 系统环境: centos6 或centos5 实验机 ...
- Jenkins拾遗--第一篇(安装Jenkins)
起因 近期由于工作需要做起了起了jenkins的维护.不做不知道,一搞发现里边全是小坑.两个月弄了一身泥.曾经小瞧了它,但是发现其实要弄好它不是那么容易的.有句知名的话"没有总结就没有提高. ...
- [转]RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第一篇【安装】
前言:关于RobotFrameWork+APPIUM实现对安卓APK的自动化测试的文章都是取自于乐于分享知识于网络的好心人们,所以我也希望我的知识可以分享给大家. 首先我们先罗列一下我们要安装的软件 ...
- RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第一篇【安装】
文章来源http://blog.csdn.net/deadgrape/article/details/50563119 前言:关于RobotFrameWork+APPIUM实现对安卓APK的自动化测试 ...
- 学习Java第一篇——Java 安装及环境搭配
内容提要: 1.下载JDK: 2.安装JDK: 3.配置JDK; 第一,下载JDK: 1.登陆网址:www.oracle.com 2.点击 Downloads 3.选择 Java SE 4.选择 ...
- Redis【第一篇】安装
第一步:准备 1. 操作系统 CentOS-7-x86_64-Everything-1511 2. redis 版本 redis-3.2.8 3. 修改内核参数 有三种方式: 1)编辑/etc/sys ...
随机推荐
- did not finish being created even after we waited 189 seconds or 61 attempts. And its status is downloading
did not finish being created even after we waited 189 seconds or 61 attempts. And its status is down ...
- Docke--利用 commit 理解构建镜像
Docker 利用commit理解构建镜像 镜像是容器的基础,每次执行 docker run 的时候都会指定哪个镜像作为容器运行的基础.当我们使用Docker Hub的镜像无法满足我们的需求时,我们就 ...
- 洛谷P1066 2^k进制数(题解)(递推版)
https://www.luogu.org/problemnew/show/P1066(题目传送) (题解)https://www.luogu.org/problemnew/solution/P106 ...
- PHP RSA加解密详解(附代码)
前言:RSA加密一般用在涉及到重要数据时所使用的加密算法,比如用户的账户密码传输,订单的相关数据传输等. 加密方式说明:公钥加密,私钥解密.也可以 私钥加密,公钥解密 一.RSA简介 RSA公钥加密 ...
- 详解基于MSSQL “order by”语句报错的SQL注入技术
SQL注入,又名黑客技术之母,是一种臭名昭著的安全漏洞,由于流毒甚广,已经给网络世界造成了巨大的破坏.当然,对于该漏洞的利用技术,也是花样繁多,如访问存储在数据库中的数据,使用MySQL的load和i ...
- jQuery 为动态添加的元素绑定事件
在使用jquery的方式为元素绑定事件时,我经常使用bind或者click,但这只能为页面已经加载好的元素绑定事件.像需要用ajax的方式请求远程数据来动态添加页面元素时,显然以上几种绑定事件的方式是 ...
- windows一键部署java项目
windows一键部署java项目 因为公司需求,要在windows的环境上做一键部署启动java项目,同时还要支持从安装界面动态修改配置文件的IP地址.就像安装软件一样将jdk,tomcat,mys ...
- 优雅的使用git
1.当我们成功安装git后,首先要做的就是配置我们的用户名以及邮箱: git config --global user.name "xxx" git config --global ...
- BootstrapTable-导出数据
要导出的数据:https://examples.bootstrap-table.com/json/data1.json?order=asc 使用的插件(注意插件版本依赖):tableExport.jq ...
- CentOS 7 安装docker (图文)
一定要用root账号登录系统,打开终端/或远程工具(如xshell)登录系统 检查是否已经安装命令 rpm –qa|grep docker 出现如上说明已安装 也可用命令docker -v (如 ...