2016-01-07 – Brillo-m8-dev & RPi 2B(树莓派)

  • 代码下载和编译

项目的文件结构与Android很类似,从目前分析过的代码来看,有很大一部代码是来自chromium os。两个系统的杂合体。编译系统也进行了改进,使用makefile的语法编写编译脚本,但最终解析、执行的却不是make.

如果你使用的还是brillo-m8-release分支,可能需要修改out/host/linux-x86/bin/brillemulator-arm文件,将selinux permission改成permissive, 系统运行的时候metrics_collector服务会因为selinux的关系而异常退出。 ->@<-

  • 在模拟器上使用curl进行初步的调试

编译了,也知道用哪个命令运行了。可看到的都是一个个的字符,图形界面在哪里啊。是不是编译出问题了,还是运行的命令不对。都不是,Brillo是没有界面的,跟它的交互都是通过web API进行的。系统运行着webservd服务,你的请求都是由它帮你转达。->@<-

如果你编译的时brilloemulator_arm-eng,你可能还需要手动设置防火墙(iptables), 由于使用的是v4.1的kernel,firewalld服务通过mini jail来更新iptables.

又由于emulator使用的network type,你无法直接访问TCP 80与443端口,你可以使用adb forward命令进行配置->@<-,当然你也可以通过emulator自身来配置。->@<-

防火墙搞定了,TCP端口也forward了,我们就可以查看设备的相关信息了。->@<-

  • 如何使用系统提供的WEB API

我们已经知道如何使用API来查看设备的相关信息 了,但这远远还不够,我们还需要掌握系统的控制权,我们需要更高的权限。->@<-

有了更高了权限,我们就可以对设备进行配置,如配置WiFi网络,进行WiFi bootstrap(可惜的是我的无线网卡还暂时不支持AP模式->@<-),通过wifi(STA模式)接入本地网络->@<-。当然,除了进行wifi配置之后,如果你能哆访问google的话,你还可以设置ticket, 通过weave device manager进行管理,可以参考external/libweave/examples/daemon/README。

  • 将Brillo移植到RPi 2B(树莓派)上

为了验证系统可以在Raspberrry Pi 2B(树莓派)上运行,简单粗暴的方式是不可避免了->@<-。好歹系统是可以跑起来了,相比于官方的Intel Edison开发板与Qualcomm dragonboard 410c开发板,价格上相当有优势的。再回看移植后存在的这些问题->@<-,回看这些问题,目前依旧存在,希望在不久之后能够解决。

为了进入改善开发环境,当然要是要去学习NOOB与Raspbian系统的开机流程,以便对开关机,系统更新进行优化。之后,我们有了recovery系统->@<-,一个运行Brillo的recovery系统,在Brillo系统开发过程中出现开不了机的问题的时候,我们不再需要将TF卡拔出来重新烧写系统,直接用curl就可以很方便地更新系统->@<-。当然官方的做法并非如此,在Brillo中分区引入了slot的概念,如boot_a, boot_b, system_a, system_b分区,以入使用bootctl进行分区的选择。

在移植的过程中,不可避免地要与emulator进行相互验证->@<-。特别是当webservd要求firewalld打开80与443端口失败的时候,这种想法异常的强烈。

  • 编译和运行ledflasher与ledservice模块

有个方便调试的系统,我们就可以毫无顾忌地在系统上安装新的模块。控制LED就如同学习c语言的第一个程序hello,world!我们需要lights HAL模块,我们需要ledflasher与ledservice服务,我们还需要如何通过WEB API对LED进行控制。这些,我们都做到了!->@<-

发表评论

电子邮件地址不会被公开。 必填项已用*标注