Raspberry 3(老版本),github上反馈,3B+版本会黑屏。
宿主机,ubuntu16.04LST
本文参考github大神peyo-hd的wiki,祭出链接 android-rpi,大家可以自行查阅。
$ 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作中继,但亲测未成功,具体需要自行摸索。
参考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 安装即可,安装完成后配置环境变量。
安装交叉编译工具,否则报找不到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
补丁链接:https://github.com/android-rpi/device_brcm_rpi3/wiki/Pie-:-patch-framework-source
然而链接所示的patch不是标准格式,并且行号与现在的代码已经不对应,保存patch文件用patch命令运行报错,说我patch输入里面只有辣鸡…人工大法好,直接cd到源文件改,保存。
终于到了激动人心的编译环节了。
首先加载编译工具,配置编译选项。此处依赖JDK,若JDK版本未满足要求,会报错,按要求更改JDK版本即可。
$ source build/envsetup.sh
$ lunch rpi3-eng
编译系统镜像,此处可以根据个人电脑配置,选择合适的编译线程。默认-j4,适用于双核四线程。若八核十六线程的专业编译服务器,可选择-j16。
make ramdisk systemimage
等待编译中。。。
+++++++++++++++++更新分界线20191104++++++
编译一定要记得给磁盘预留足够空间,建议100GB,编译完成后会在out文件夹下看到.img的镜像文件。编译成功。
使用fdisk分区工具,首先插入tf卡,运行查询命令
sudo fdisk -l
查询到tf卡设备号:/dev/sdd
运行fdisk命令,格式化各分区。
此处建议把sd卡弹出,再重新插入一次。否侧格式化容易不成功。
sudo mkfs.vfat -n boot /dev/sdd1
sudo mkfs.ext4 -L userdata /dev/sdd3
这里注意要改自己的第二个分区名。(用作/system)
$ cd out/target/product/rpi3
$ sudo dd if=system.img of=/dev/sdd2 bs=1M
挂载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/overlays
sudo cp kernel/rpi/arch/arm/boot/dts/overlays/vc4-kms-v3d.dtbo /media/test/overlays/vc4-kms-v3d.dtbo
sudo cp out/target/product/rpi3/ramdisk.img /media/test/
见证奇迹的时刻
屏幕logo出现,然鹅…
折腾了这么几天,你就给我看这个????应用只有system tracing和settings???编译路径下安装的那么多应用嘞???鼠标箭头虚影,键盘无响应
自行安装adb工具,完成后,发现USB方式并不能连接上。那就网络连接也很香
adb connect xxx.xxx.xxx.xxx(ip address)
adb shell
查看了一下log,并没有什么组件启动失败,那可能这个系统就是啥都没有,面向命令行吧。