树莓派3 Android Pie 编译适配
- 1准备工作
- 2.下载源代码以及配置依赖项
- 2.1 配置Git与Repo
- 2.2 下载源代码
- 2.3 配置依赖项
- 3. 编译
- 3.1 编译内核
- 3.2 打补丁
- 3.3 编译
- 4 制作启动盘
- 4.1 tf卡分区
- 4.2 各分区格式化
- 4.3 写入系统镜像
- 4.4 写入boot
- 5 开机上电
- 5.1 安装adb工具
- 完结
1准备工作
Raspberry 3(老版本),github上反馈,3B+版本会黑屏。
宿主机,ubuntu16.04LST
本文参考github大神peyo-hd的wiki,祭出链接 android-rpi,大家可以自行查阅。
2.下载源代码以及配置依赖项
2.1 配置Git与Repo
2.2 下载源代码
$ repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r45$ git clone https://github.com/android-rpi/local_manifests .repo/local_manifests -b pie$ repo sync
由于不可描述的原因,repo sync的速度会特别缓慢。对于android原生代码ASOP的下载,可以通过更改中科大镜像源的方法提速。对于github中kernel/rpi下载速度缓慢甚至超时中断,需要更改ssh配置,甚至挂小飞机(亲测挂小飞机也没有改观)。百度有大佬用gitee作中继,但亲测未成功,具体需要自行摸索。
2.3 配置依赖项
参考TPrime.A在Ubuntu下配置的依赖项,并做了一点修改。
$ sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev
$ sudo apt-get install libx11-dev libreadline6-dev libgl1-mesa-dev g++-multilib
$ sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev
$ sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
$ sudo apt-get install git-core gnupg flex bison gperf build-essential
$ sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
$ sudo apt-get install libc6-dev
$ sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
$ sudo apt-get install lib32z-dev ccache
$ sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
$ sudo apt-get install python-mako
重点:JDK配置,由于JDK闭源,下载需要官网注册,十分繁琐。google官网给出的教程推荐使用openJDK,使用apt 安装即可,安装完成后配置环境变量。
3. 编译
3.1 编译内核
安装交叉编译工具,否则报找不到arm-linux-gnueabihf-gcc错。
$ sudo apt-get install gcc-arm-linux-gnueabihf
拼接config,此步骤依赖bision。若执行不成功,apt安装bision即可。
$ cd kernel/rpi$ ARCH=arm scripts/kconfig/merge_config.sh arch/arm/configs/bcm2709_defconfig kernel/configs/android-base.config kernel/configs/android-recommended.config
编译zImage
$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make zImage
出现以下结果,编译成功。
编译设备树
$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make dtbs
3.2 打补丁
补丁链接:https://github.com/android-rpi/device_brcm_rpi3/wiki/Pie-:-patch-framework-source
然而链接所示的patch不是标准格式,并且行号与现在的代码已经不对应,保存patch文件用patch命令运行报错,说我patch输入里面只有辣鸡…人工大法好,直接cd到源文件改,保存。
3.3 编译
终于到了激动人心的编译环节了。
首先加载编译工具,配置编译选项。此处依赖JDK,若JDK版本未满足要求,会报错,按要求更改JDK版本即可。
$ source build/envsetup.sh$ lunch rpi3-eng
编译系统镜像,此处可以根据个人电脑配置,选择合适的编译线程。默认-j4,适用于双核四线程。若八核十六线程的专业编译服务器,可选择-j16。
make ramdisk systemimage
等待编译中。。。
+++++++++++++++++更新分界线20191104++++++
编译一定要记得给磁盘预留足够空间,建议100GB,编译完成后会在out文件夹下看到.img的镜像文件。编译成功。
4 制作启动盘
4.1 tf卡分区
使用fdisk分区工具,首先插入tf卡,运行查询命令
sudo fdisk -l
查询到tf卡设备号:/dev/sdd
运行fdisk命令,格式化各分区。
- 首先d命令删除所有分区,n命令新建分区256M,t命令更改分区类型 W95 FAT32(LBA) ,a设置成bootable。
- n命令新建第二个分区
- n命令新建第三个分区,w命令保存
4.2 各分区格式化
此处建议把sd卡弹出,再重新插入一次。否侧格式化容易不成功。
sudo mkfs.vfat -n boot /dev/sdd1
sudo mkfs.ext4 -L userdata /dev/sdd3
4.3 写入系统镜像
这里注意要改自己的第二个分区名。(用作/system)
$ cd out/target/product/rpi3$ sudo dd if=system.img of=/dev/sdd2 bs=1M
4.4 写入boot
挂载boot分区:
sudo mkdir /media/test
sudo mount -t fat /dev/sdd1 /media/test
复制boot分区文件
sudo cp device/brcm/rpi3/boot/* /media/test/sudo cp kernel/rpi/arch/arm/boot/zImage /media/test/sudo cp kernel/rpi/arch/arm/boot/dts/bcm2710-rpi-3-b.dtb /media/test/sudo mkdir /media/test/overlayssudo cp kernel/rpi/arch/arm/boot/dts/overlays/vc4-kms-v3d.dtbo /media/test/overlays/vc4-kms-v3d.dtbosudo cp out/target/product/rpi3/ramdisk.img /media/test/
5 开机上电
见证奇迹的时刻
屏幕logo出现,然鹅…
折腾了这么几天,你就给我看这个????应用只有system tracing和settings???编译路径下安装的那么多应用嘞???鼠标箭头虚影,键盘无响应
5.1 安装adb工具
自行安装adb工具,完成后,发现USB方式并不能连接上。那就网络连接也很香
adb connect xxx.xxx.xxx.xxx(ip address)
adb shell
查看了一下log,并没有什么组件启动失败,那可能这个系统就是啥都没有,面向命令行吧。