Brillo: 将系统移植到Raspberry Pi 2B(树莓派)上

Raspberry Pi 2B(树莓派)具有4个Cortex-A7 CPU, 1G的内存空间,使用TF卡作为存储介质,一个百兆有线网卡,40Pin的GPIO, 4个USB接口。Brillo系统跑在上面一点问题都没有。

NOTE:  

编译出来的系统只能在Raspberry Pi 2B上运行,其他的硬件版本是不支持的:CPU的指令集不同(需要armv7-a指令集)。

 

  • 配置编译环境

相关的文档可以参考:http://source.android.com/source/initializing.html

编译用的主机要求是x64平台,运行ubuntu 14.04系统, 2G以上的内存, 60G以上的剩余空间

安装java 7(可选, 如果想编译Android项目的话,还是安装一下好):

$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk

安装其他需要用到的文件:

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
  lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
  libgl1-mesa-dev libxml2-utils xsltproc unzip

配置USB访问权限:

$ wget -S -O - http://source.android.com/source/51-android.rules | \
    sed "s/<username>/$USER/" | \
    sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; \
    sudo udevadm control --reload-rules
  • 代码下载

相关的文档可以参考:http://source.android.com/source/downloading.html

安装repo:

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

brillo原生系统代码及Raspberry Pi 2B linux kernel 代码下载:

$ mkdir -pv /local/brillo-m8-release && cd /local/brillo-m8-release
$ ~/bin/repo init -u https://android.googlesource.com/brillo/manifest -b brillo-m8-release

删除.repo/manifest.xml并将这个文件brillo-m8-release-for-rpi2b.xml.zip 解压并考贝到.repo/manifest.xml (替换),brillo原生系统使用的是brillo-m8-release这个分支,而Raspberry Pi 2B kernel使用的是rpi-4.1.y分支:

$ rm .repo/manifest.xml
$ wget https://www.brobwind.com/wp-content/uploads/2015/12/brillo-m8-release-for-rpi2b.xml_.zip && unzip brillo-m8-release-for-rpi2b.xml_.zip
$ cp brillo-m8-release-for-rpi2b.xml .repo/manifest.xml
$ ~/bin/repo sync -j 4

下载的代码约有13G, 漫长的等待。。。

Raspbrery Pi 2B设备相关的文件请从这里下载:brillo-m8-device-hzak-rpi2b.tar.gz

$ curl https://www.brobwind.com/wp-content/uploads/2015/12/brillo-m8-device-hzak-rpi2b.tar.gz | tar -zxvf -

由于Raspberry Pi 2B默认的kernel配置,编译出来的kernel虽然能够正常开机,但是系统的一些服务会出现非正常退出的情况,所以还需要更新一下kernel的配置文件bcm2709_defconfig:

cp device/hzak/rpi/bsp/kernel-config hardware/bsp/kernel/hzak/rpi-4.1.y/arch/arm/configs/bcm2709_defconfig

《Brillo: 将系统移植到Raspberry Pi 2B(树莓派)上》有7个想法

  1. 不错的想法,在raspberry pi 2b上做开发,硬件相当便宜(相对于google默认支持的开发板,intel edison以及qualcomm dragon board)

        1. 我在github.com/yudatun这里创建了一个orgnization, 用于brillo的深度定制,目前我已经做了不少工作了,我觉得我们可以把彼此好的想法融合在一起,方便留个邮箱交流下么?

  2. 不好意思,
    我用您的步驟方法,
    畫面和輸出都與您的相同,
    不過在用avahi-daemon看輸出時,
    完全沒有反應,
    只能看到自己,
    我用HDMI接上螢幕,
    螢幕也是黑的,
    不知道可以提供一些建議嗎??
    感恩感恩~~
    ——————————————————————————————————————————-
    $ avahi-browse -a -r
    + eth0 IPv6 my-ubuntu [4c:72:b9:c8:32:a4] Workstation local
    + eth0 IPv4 my-ubuntu [4c:72:b9:c8:32:a4] Workstation local
    = eth0 IPv6 my-ubuntu [4c:72:b9:c8:32:a4] Workstation local
    hostname = [my-ubuntu.local]
    address = [fe80::4e72:b9ff:fec8:32a4]
    port = [9]
    txt = []
    = eth0 IPv4 my-ubuntu [4c:72:b9:c8:32:a4] Workstation local
    hostname = [my-ubuntu.local]
    address = [192.168.157.2]
    port = [9]
    txt = []

    1. 目前存在的问题是有时候有线网络可能会分配不到IPv4的IP地址,也就无法通过avahi-browse查看。(也有可以是有线网络使用的是固定的IP地址)
      你可以通过串口查看kernel log及执行shell命令查看问题出在哪里。
      你可以查看我这篇文章https://www.brobwind.com/archives/975,运行我预编译的系统,同时这里包含最新的RPi BSP代码,你可以编译看看(很可惜有线网络有时候也不能自动获取IP地址,无线网络(RPi 3B)没有发现问题)。

发表评论