万万没有想到再次编译aosp已经是半年以后了,未完的工作总是要继续进行的。

aosp不是通过repo下载的,而是在百度网盘里面找了网友的分享下载的。然后编译的方法直接挂个vpn到谷歌的官网上去看需要什么条件,对着来即可。用同事的4核E5310,4G内存的机器,编译了大概十小时的样子,终于是编译出来了,也是醉了。看了ccahe里面存了大概8个G不到的缓存,所以编译的时间会这么久了。

 

板子是同事的TQ335x,原先就有android4.0的镜像,可以烧进去直接启动。而自己希望的,可以把android5.1移植上去。

 

试试看吧。

 

汇报一下进展,kernel直接从linaro下载的支持android5.1的内核,结果万万没有想到mtd驱动有点问题,各种根文件系统都启动失败。无奈尝试nfs也不是很顺利,各种权限问题。

 

然后今天用了ramdisk,又是各种 “RAMDISK: incomplete write (14434 != 32768)”,网上说的也都不是很对。然后自己配了配ramdisk_size终于起来了,虽然还有报错,因为没有搞清楚这个值就不乱说了。一句话,往大的填。

 

然后起来之后又出现了selinux的权限问题,最后查了内核的配置,发现selinux support policy没有配上去啊,我也是醉了。加上去之后,又出现了下面的情况:

SELinux:  policydb version 26 does not match my version range 15-19

谷歌之后貌似这个好解决,修改 external/sepolicy/Android.mk 里面的:POLICYVERS ?= 26

应该改小一些就可以了,不过又要重新编译aosp了……

 

selinux改完之后想不到又过了一周才把文件系统起来,进了console。用的还是NFS的文件系统。

不知道为什么selinux的权限总是导致root/sbin目录下的ueventd这些程序没有权限启动,错误大致如下:

init: cannot execve('ueventd'): Permission denied

解决方法也很简单粗暴,可能是我编译的user的release版本的原因,最后直接编了一个eng的debug版本,然后把selinux给关掉即可。

方法在aosp的官网上面有说了,在boot的cmdline加上 androidboot.selinux=disabled 即可。

 

目前已经可以进console了,那些基础组件应该都起来了。接下来要做的是内核启动的时候有/class/switch初始化出错,以及让屏幕亮起来。

 

最新更新,因为九月份被公司派去出差了一个多月,回来之后已经想不起之前的进度了,暂时又搁浅了……