【玩转开源】BananaPi R2 —— 第一篇 Openwrt安装

    最近手上拿到一块香蕉派的R2,这块板子能够用做路由器,因此决定在板子上面跑一下Openwrt。linux

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

    

 

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

连接:http://wiki.banana-pi.org/Banana_Pi_BPI-R2#Introductiongithub

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

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

       

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

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

    

  • 个人PC使用的Ubuntu 16.04,按快捷键"Ctrl+Alt+T"打开Terminal终端,输入下面的命令:
1 jack@jack: git clone https://github.com/garywangcn/bpi-r2_lede.git
2 jack@jack: cd bpi-r2_lede
3 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的相关模块和组件
1 jack@jack: ./scripts/feeds update -a
2 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卡信息以下
 1 jack@jack: fdisk -l
 2 ************************************************************
 3 Disk /dev/sdf: 29.7 GiB, 31914983424 bytes, 62333952 sectors
 4 Units: sectors of 1 * 512 = 512 bytes
 5 Sector size (logical/physical): 512 bytes / 512 bytes
 6 I/O size (minimum/optimal): 512 bytes / 512 bytes
 7 Disklabel type: dos
 8 Disk identifier: 0x4d1bc8d1
 9 
10 Device     Boot Start      End  Sectors  Size Id Type
11 /dev/sdf1        8192 62332199 62324008 29.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卡中了:
1 jack@jack: dd if=mtk-bpi-r2-SD.img of=/dev/sdf
2 200192+1 records in
3 200192+1 records out
4 102498308 bytes (102 MB, 98 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;经过这种方式就能够测试硬盘的读写能力;你能够在电脑上插上存储设备试一试,看看其读写性能。
1 jack@jack: dd if=/dev/sda of=/dev/null bs=1M count=1024
2 jack@jack: dd if=/dev/zero of=/dev/sda bs=1M count=1024
  • 烧录完成后,查看硬件接口图: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转串口的线通常都是内置了转换芯片的,因此看到的串口信息是正常的。
  • 启动完成后,界面以下:
 1 BusyBox v1.26.2 () built-in shell (ash)
 2 
 3      _________
 4     /        /\      _    ___ ___  ___
 5    /  LE    /  \    | |  | __|   \| __|
 6   /    DE  /    \   | |__| _|| |) | _|
 7  /________/  LE  \  |____|___|___/|___|                      lede-project.org
 8  \        \   DE /
 9   \    LE  \    /  -----------------------------------------------------------
10    \  DE    \  /    Reboot (SNAPSHOT, r4774-8cb7cc2)
11     \________\/    -----------------------------------------------------------
12 
13 === WARNING! =====================================
14 There is no root password defined on this device!
15 Use the "passwd" command to set up a new password
16 in order to prevent unauthorized SSH logins.
17 --------------------------------------------------
18 root@LEDE:/# uname -a
19 Linux LEDE 4.9.44 #0 SMP PREEMPT Tue Jun 26 11:00:25 2018 armv7l GNU/Linux
20 root@LEDE:/#
  • 到这里,Openwrt就成功在R2上面运行起来了;后续我会发布更多的玩法,和你们一块儿玩转开源。

 

    欢迎你们批评指正,转载请注明出处,多谢。ide

 

   
相关文章
相关标签/搜索