Cubieboard 开箱和入门

2014 年 01 月 29 日 by name5566
Categories: Computer
Science
, Cubieboard

Hello Cubieboard

Cubieboard 是一款类似于树莓派(Raspberry pi)的 ARM 迷你 PC,但其性能要更强,我需要使用 Cubieboard 来做一台 Web 服务器,在本文发布时的 Raspberry pi 性能还不足以满足需要。Cubieboard 的相关文档在这里:http://docs.cubieboard.org/

这里我入手了一台 Cubietruck(Cubieboard 3),因此本文内容都是基于 Cubietruck 的。废话不多说,先来开个箱:

Cubietruck 的配置

  1. CPU,说到 CPU 不得不说的就是 ARM holdings plc,此公司主要设计(但是不生产)ARM CPU。Cubietruck 使用的是全志科技(公司位于珠海)生产的 A20 双核 CPU,此 CPU 就是 ARM Cortex-A7 的实现并带有 ARM Mali 400 MP2 GPU。就
    ARM 官方显示,Cortex-A7 处理器频率为 800MHz ~ 1.2GHz
  2. 2GB 内存(DDR3@480MHz)
  3. HDMI 和 VGA 1080P 的显示输出
  4. 1G 以太网卡
  5. WIFI 和蓝牙支持
  6. microSD 卡支持(一个 microSD 卡插槽)
  7. SATA 2.0 接口支持
  8. 2 USB、1 OTG、1 SPDIF、1 IR、4 LEDs
  9. 耳机插孔(一个)
  10. 54 extended pins 包括接口:UART、PS2 等等
  11. 可以很好的安装一个 2.5 寸 HDD 硬盘

我的 Cubietruck(带上 HDD 硬盘做数据存储):

这里使用的是 SATA 接口,SATA 电源线颜色含义为:

  1. 黄色,直流 12V 正极
  2. 红色,直流 5V 正极

直奔 Linux

连上 HDMI 接好电源,就看到了下面的画面(Android 系统):

显然,Android 并非我所要(我准备将其用来做 Linux 服务器),这样我们需要下载个 Linux 系统,官方提供的系统下载界面在:http://cubieboard.org/download/,注意在
http://dl.cubieboard.org/software/a20-cubietruck/ 可以下载到更新、更多的一些系统(不知稳定性如何)。

这里我选了 lubuntu 系统(ubuntu 算是很好用的一种发行版)。Cubietruck 带有 8G 的 nandflash,这里开始介绍安装系统到 nandflash 中。需要注意的是,默认的系统使用 HDMI 输出,如果需要使用 VGA 输出,则去下载对应的系统(例如:http://dl.cubieboard.org/software/a20-cubietruck/lubuntu/ct-lubuntu-nand-v1.00/VGA/

这里我下载的系统为:http://dl.cubieboard.org/software/a20-cubietruck/lubuntu/ct-lubuntu-nand-v1.01/ct-lubuntu-server/lubuntu-server-nand.img.gz。为了刷系统,先要安装一个软件
LiveSuit(跨平台)。安装完成之后:

  1. 启动 LiveSuit 并选择 lubuntu 系统镜像
  2. 电脑一方先接上 USB 线,之后按住 Cubietruck 的 FEL 按钮(此按钮在 RESET 按钮的边上,详见下图)不放,此时将另外一端的 mini USB 和 Cubietruck 连接,这时候会弹出一个格式化的提示对话框(假如无法弹出格式化提示对话框,那么将 Cubietruck 接上电源再试试),然后就可以松开 FEL 按钮了
  3. 在格式化提示对话框上选 Yes 开始刷系统

FEL 按钮的位置:

刷完系统之后,拿掉和电脑连接的 USB 线,然后接上电源和网线。这里我安装的是 lubuntu server 版并使用 SSH Client 连接上去(如果对 SSH Client 不了解可以参考
http://name5566.com/4002.html 的相关部分,在 Linux 或者 Mac OS 上直接使用命令 ssh username@ip),其他的做法这里就不讨论了。刷上去的 lubuntu 中默认创建了一个用户 linaro(密码也为 linaro),关于 linaro 的有关内容可以参考:http://www.linaro.org/

系统配置

使用 linaro 用户登录上去,设置 root 的密码:

  1. $ sudo passwd root

如果你不喜欢 linaro 这个用户名,可以使用命令 usermod 和 groupmod 修改一下(使用 root 用户登录上去):

  1. 修改登录名 linaro
    为 name5566
  2. # usermod -l name5566 linaro
  3. 修改用户主目录名为 name5566
  4. # usermod -d /home/name5566 -m name5566
  5. 修改用户名为 name5566
  6. # usermod -c name5566 name5566
  7. 修改用户组 linaro
    为 name5566
  8. # groupmod -n name5566 linaro
  9. 最后打印并确认一下用户 name5566
    的用户和组信息是否正确
  10. # id name5566

关闭 LED(说实话,LED 闪的人眼睛疼)。以下命令用于调节 4 个 LED 的亮度,让它们的亮度为 0:

  1. ls /sys/class/leds/*/brightness
    | xargs -i -n1 echo "echo 0 > {}" | sh

我们把此段命令加入到 /etc/rc.local 中,这样每次系统启动时都会将 LED 亮度调整为 0。

现在我们查看一下 nandflash:

  1. # ls /dev/nand* -l
  2. root disk
    /dev/nand
  3. root disk
    /dev/nanda
  4. root disk
    /dev/nandb
  5. root disk
    /dev/nandc

这里的 nand 表示了整个 nandflash,nanda、nandb、nandc 则为其 3 个分区,其中:

  1. nanda 中包含 bootlogo、script.bin、uEnv.txt 等
  2. nandb 中为 rootfs

nandc 有 5G 左右的空间,我觉得把它合并到 nandb 似乎是一个好的想法。敲击命令 nand-part 大概能看到如下信息(只列出主要部分):

  1. :class= DISK,
    name = bootloader, partition start
    , partition size
  2. :class= DISK,
    name = rootfs, partition start
    , partition size
  3. :class= DISK,
    name = UDISK, partition start
    , partition size

我们可以看到各个分区的大小,这样我们就可以重新规划一下:

  1. # nand-part -f a20 /dev/nand 32768 'bootloader 131072' 'rootfs 14778368'

此命令执行后输出:

  1. ready to write new partition tables:
  2. mbr: version
    0x00000200, magic softw411
  3. partitions
  4. :class= DISK,
    name = bootloader, partition start
    , partition size
  5. :class= DISK,
    name = rootfs, partition start
    , partition size

我们看到 bootloader(nanda)的大小未发生变化,rootfs(nandb)和 UDISK(nandc)合并了(4194304 + 10584064 = 14778368)。然后,我们重启一下系统,再敲击命令来完成 nandb 的扩展:

  1. # resize2fs /dev/nandb

需要说明的是,这个重分区的过程不会破坏任何数据的。

处理完 nand 就可以开始处理我的 HDD 硬盘了。使用命令 fdisk 来查看 HDD 硬盘是否存在,执行 fdisk -l 输出(省略非重要信息):

  1. Disk/dev/sda:120.0
    GB bytes
  2. cylinders, total
    sectors
  3. Units= sectors of
    bytes
  4. Sector size

    bytes bytes

  5. I/O size

    bytes bytes

  6. Disk identifier:0x02501f8d
  7. DeviceBootStartEndBlocksIdSystem
  8. /dev/sda1
    HPFS/NTFS/exFAT

看到了磁盘 sda 大小 120GB,它有一个分区 sda1,首先删除这个分区并创建一个新的主分区:

  1. # fdisk /dev/sda

fdisk 中使用命令 d 来删除分区,使用 n 来创建新的分区,使用 w 写入并退出。接着我们可以开始格式化分区并挂载了:

  1. # mkfs.ext4 /dev/sda1
  2. # mount /dev/sda1 /media/hdd

这里我挂载到了 /media/hdd 上(hdd 目录已经建好)。如果需要在启动时就挂载上 HDD 硬盘,那么需要修改一下 fstab 配置(file systems table),此配置文件路径为 /etc/fstab,在配置文件中加入:

  1. /dev/sda1 /media/hdd ext4 defaults

简单说一下此配置的含义:

  1. 第一列为设备的名称
  2. 第二列为挂载点
  3. 第三列为文件系统类型
  4. 第四列用于设置诸如是否在启动时挂载等,这里使用默认设置
  5. 第五列用于设置归档计划(详见 dump 命令)
  6. 第六列用于设置启动时是否检测设备错误(使用 fsck 检测),如果是 root 设备填 1,非 root 设备填 2(表示在检测 root 之后再做检查),0 表示不检测

为了访问 HDD 硬盘,我们再装一个 Samba(也可以安装 FTP 服务):

  1. # apt-get install samba

在安装 Samba 时 ufw(Ubuntu 系统上的防火墙配置工具)报了一系列警告:

  1. WARN:/etc is group writable!
  2. WARN: uid is 0 but '/' is owned by 1000
  3. WARN: /etc/default is group writable!
  4. WARN: /lib is group writable!
  5. WARN: /usr is group writable!

这是肿么回事?修改一下:

  1. 去掉几个目录的group的写权限
  2. # chmod g-w /etc /etc/default /lib /usr
  3. 修改/的 owner
    和group为 root
  4. # chown root:root /

现在我们再敲击命令 ufw status 会发现警告消失了。

回到 Samba 的话题上来,我们配置一下 Samba。先打开 /etc/samba/smb.conf 文件,配置一下需要共享的位置,在此文件最后加入:

  1. [name5566]
  2. path =/media/hdd
  3. writable = yes
  4. valid users = name5566

这里设置需要共享的目录为 /media/hdd 并设置了此目录访问用户为 name5566,需要注意的是此用户必须是一个系统中存在的用户。现在为 Samba 添加用户 name5566:

  1. 添加Samba用户 name5566
  2. # smbpasswd -a name5566
  3. 重启Samba服务
  4. # service smbd restart

需要注意的是,Samba 的配置可以限制用户的访问,另外 Linux 本身对目录和文件的权限设置也会影响到文件和目录的访问。这里我修改了 /media/hdd 的访问权限(你可以根据你的实际情况做修改):

  1. # chown name5566:name5566 /media/hdd

samba 配置完成了。

接下来玩玩 WiFi。先加载一下模块(见:http://linux-sunxi.org/A20-Cubietruck):

  1. # modprobe bcmdhd

如果你希望开启 AP 模式,那么:

  1. # modprobe bcmdhd op_mode=2

要在启动时加载 bcmdhd(或 bcmdhd op_mode=2)则将其加入 /etc/modules 文件。这里我希望 Cubietruck 成为一台 AP 来为其他无线设备提供网络,那么首先安装一下
hostapd(一个 IEEE 802.11 AP 和 IEEE 802.1X/WPA/WPA2/EAP/RADIUS 验证器),这里需要注意的是默认软件源上的 hostapd 不能较好的工作,我们先下载一个编译好的最新版
https://github.com/igorpecovnik/Cubietruck-Debian/raw/master/bin/hostapd21.tgz(相关讨论详见:http://www.cubieforums.com/index.php/topic,963.0.html),当然也可以自己编译。下载完
hostapd 可以拷贝到 /usr/sbin 中。我这里把 hostapd 的配置文件放在 /etc/hostapd/hostapd.conf 中,详细配置如下(参考:http://wireless.kernel.org/en/users/Documentation/hostapd):

  1. interface=wlan0
  2. driver=nl80211
  3. ssid=__cubietruck__
  4. hw_mode=g
  5. wpa_key_mgmt=WPA-PSK
  6. wpa_pairwise=TKIP
  7. rsn_pairwise=CCMP

以上是最基本的配置,这里聊聊 channel(更详细的分析请参考:http://support.zen.co.uk/kb/KnowledgebaseArticle.aspx?articleid=11344)。对于
channel 来说,有两点需要注意:

  1. 避免竞争(contended)。假定有多台路由器,它们都在一个 channel 上,那么意味着会出现竞争,但是不存在干扰,传输能够有序的进行
  2. 避免干扰(interfering)。首先要明确的是,我们选择了某个 channel,例如 channel 6,这不意味着通讯仅在 channel 6 上进行,实际上通讯会横跨 5 个 channel(相邻的,channel 4 ~ channel 8,20MHz 的 channel 带宽)。现在两个路由器,一个在 channel 6 上(channel 4 ~ channel 8),一个在 channel 7 上(channel 5 ~ channel 9),那么干扰就会出现(它们无法管好自己进行有序的通讯)。需要注意的是,干扰会比竞争带来更多的问题

如果你周围没有什么无线设备,那么可以轻易的选择一个合适的 channel(例如 channel 6),而且还可以使用 40MHz 的 channel 带宽。但是实际的情况往往并非这样,我们需要考虑到干扰的问题。channel 6 通常是被最频繁使用的 channel,按上所述,channel 11 就是下一个很合适的 channel(除了 channel 11 以外 channel 1 也是很不错的)。顺带说一下的是,虽然使用 40MHz 的 channel 带宽能传输更多的数据(更快的 WiFi 速度),但是
40MHz 意味着通讯横跨 7 个 channel,也就是说严重的干扰可能发生,所以说更大的带宽不意味着更高效的数据传输。

接着聊聊验证和加密,这里我选用 wpa2,这是因为 wep 不安全,所以也只能选择 wpa 或 wpa2,而最安全的就是使用 wpa2。

还有一些设置没有详细介绍,如果你不满足可以参考一下其他资料。

现在可以在 /etc/rc.local 中加入以下代码来在开机时打开 WiFi:

  1. hostapd -B
    /etc/hostapd/hostapd.conf

到这里,应该可以看到一个 SSID 为 __cubietruck__ 的 AP,可以尝试用密码 12345678 连接上去。目前的情况是 Cubietruck 可以通过有线连接互联网,WiFi 可以被其他设备连接,那么其他无线设备如何通过连接 Cubietruck 的 WiFi 来访问互联网呢?有几种办法:

  1. 创建一个新的 IP 子网
  2. 桥接

这里我使用桥接的方式,首先安装 bridge-utils:

  1. # apt-get install bridge-utils

修改 /etc/network/interfaces:

  1. # loopback
  2. auto lo
  3. iface lo inet loopback
  4. # bridge
  5. iface eth0 inet manual
  6. iface wlan0 inet manual
  7. auto br0
  8. iface br0 inet static
  9. bridge_ports eth0 wlan0
  10. address 192.168.1.150
  11. netmask 255.255.255.0
  12. gateway 192.168.1.1

这里将 eth0 和 wlan0 桥接在一起,Cubietruck 使用的是静态 IP 192.168.1.150(这样内网访问比较方便),当然你也可以调整一下配置来使用路由器动态分配的 IP:

  1. auto br0
  2. iface br0 inet dhcp
  3. bridge_ports eth0 wlan0

最后,在稍微编辑一下 hostapd 的配置文件 /etc/hostapd/hostapd.conf,在其中加入:

  1. bridge=br0

现在连接上 Cubietruck 的 WiFi 就可以上网啦。

好了,说了这么多,一些基本的东西终于都搞定了。

Cubieboard 开箱和入门 | Name5566 分类: cubieboard 2014-11-08 17:27 251人阅读 评论(0) 收藏的更多相关文章

  1. 博弈论入门小结 分类: ACM TYPE 2014-08-31 10:15 73人阅读 评论(0) 收藏

    文章原地址:http://blog.csdn.net/zhangxiang0125/article/details/6174639 博弈论:是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策 ...

  2. APP被苹果APPStore拒绝的各种原因 分类: ios相关 app相关 2015-06-25 17:27 200人阅读 评论(0) 收藏

    APP被苹果APPStore拒绝的各种原因 1.程序有重大bug,程序不能启动,或者中途退出. 2.绕过苹果的付费渠道,我们之前游戏里的用兑换码兑换金币. 3.游戏里有实物奖励的话,一定要说清楚,奖励 ...

  3. Hdu 1429 胜利大逃亡(续) 分类: Brush Mode 2014-08-07 17:01 92人阅读 评论(0) 收藏

    胜利大逃亡(续) Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Subm ...

  4. strace使用详解(转) 分类: shell ubuntu 2014-11-27 17:48 134人阅读 评论(0) 收藏

    (一) strace 命令    用途:打印 STREAMS 跟踪消息. 语法:strace [ mid sid level ] ... 描述:没有参数的 strace 命令将所有的驱动程序和模块中的 ...

  5. 深入N皇后问题的两个最高效算法的详解 分类: C/C++ 2014-11-08 17:22 117人阅读 评论(0) 收藏

    N皇后问题是一个经典的问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行.同一列.同一斜线上的皇后都会自动攻击). 一. 求解N皇后问题是算法中回溯法应用的一个经典案例 回溯算 ...

  6. c++ 字符串流 sstream(常用于格式转换) 分类: C/C++ 2014-11-08 17:20 150人阅读 评论(0) 收藏

    使用stringstream对象简化类型转换 C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性.类型安全和可扩展性.在本文中 ...

  7. 合并k个已排序的链表 分类: leetcode 算法 2015-07-09 17:43 3人阅读 评论(0) 收藏

    最先想到的是把两个linked lists 合并成一个. 这样从第一个开始一个一个吞并,直到所有list都被合并. class ListNode:# Definition for singly-lin ...

  8. IOS之按钮控件--Button全解析及使用 分类: ios技术 2015-01-17 17:09 169人阅读 评论(0) 收藏

    IOS开发中伴随我们始终的 最常用的几个空间之一 -- UIButton 按钮,对于button今天在此做一些浅析,并介绍下主流用法以及常见问题解决办法. 首先是继承问题,UIButton继承于UIC ...

  9. CABasicAnimation 基本动画 分类: ios技术 2015-07-16 17:10 132人阅读 评论(0) 收藏

    几个可以用来实现热门APP应用PATH中menu效果的几个方法 +(CABasicAnimation *)opacityForever_Animation:(float)time //永久闪烁的动画 ...

随机推荐

  1. phpexcel导入数据库 基于thinkphp3.2

    public function studentImportExcel(){ if (!empty ( $_FILES)){ $upload = new \Think\Upload();        ...

  2. ThinkPHP Uploadify 图片上载

    从官方网站下载的Uploadify最新版本:http://www.uploadify.com/download/ jQuery库是1.7.1版本. 下载好的Uploadify目录下面的文件有: 用到的 ...

  3. 黑马程序员——vim编辑器的使用

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.基本操作 1.从命令提示符进入vim编辑器:   vim filename <ENTE ...

  4. (三大框架SSH)面试题锦集

    http://www.cnblogs.com/dieyf/p/4109233.html

  5. Objective-C property属性解析

    @interface … @property (原子性,可写性,内存管理) id name; @end 原子性:    nonatomic, atomic   默认atomic 可写性:    rea ...

  6. Delphi中快捷键的使用

    CTRL+SHIFT+↑(↓) 在过程.函数.事件内部, 可跳跃到相应的过程.函数.事件的定义(在INTERFACE和IMPLEMENTATION之间来回切换)CTRL+J (弹出DELPHI语句提示 ...

  7. CentOS中JAVA_HOME的环境变量设置

    http://blog.csdn.net/wind520/article/details/9308809 运行Java应用的时候,提示无法找到JAVA_HOME,查询java -version [ji ...

  8. Spring的applicationContext.xml文件

    以下是详解Spring的applicationContext.xml文件代码:<!-- 头文件,主要注意一下编码 --><?xml version="1.0" e ...

  9. Installing vSphere SDK for Perl

    Installing vSphere SDK for Perl 你可以安装vSphere SDK 在Linux 或者Microsoft Windows 系统,或者 部署 VSphere Managem ...

  10. Light OJ 1038 - Race to 1 Again(概率DP)

    题目的意思是说任何一个大于1的整数,经过若干次除以自己的因子之后可以变为1, 求该变换字数的数学期望值.   题目分析: 我们设置dp[n] 为数字n的期望.假设n的因子为k1, k2, k3.... ...