这篇博文其实主要是为了给自己备忘的,能帮到有需要的朋友也是极好的。
一、环境
UBUNTU 16.04,用的2012年MacBook Pro(相当老的机器,换了SSD硬盘,状态还满满的),在Parallels Desktop虚拟中安装的ubuntu。
二、下载源码(Lineage OS)
创建一个源码存储目录,这里是android_source,在这个目录下执行以下代码:
repo init -u git://github.com/LineageOS/android.git -b cm-14.1
curl --create-dirs -L -o .repo/local_manifests/manifest_brcm_rpi3.xml -O -L https://raw.githubusercontent.com/lineage-rpi/android_local_manifest/cm-14.1/manifest_brcm_rpi3.xml
repo sync
说明:下载源码非常耗时,挂不可描述的软件是必须的,在命令行下使用,建议用proxychains。
三、安装必要的依赖
sudo apt-get install python-mako bc bison build-essential curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
四、编译树莓派内核
先安装 gcc-arm-linux-gnueabihf
然后:
$ cd kernel/rpi
$ ARCH=arm make lineageos_rpi3_defconfig
$ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make zImage dtbs
编译成功后会生成树莓派内核分区下所需的所有文件,拷贝到boot分区下就可以了。
五、编译安卓系统
$ source build/envsetup.sh
$ lunch lineage_rpi3-userdebug
$ mka ramdisk systemimage
编译成功后,会在out/target/product/rpi3目录下生成我们需要的ramdisk.img和system.img。
六、sd卡分区
分区1 128MB 分配给 BOOT : 用 fdisk : W95 FAT32(LBA) & Bootable, mkfs.vfat
分区2 1024MB 分配给 /system : 用 fdisk, 新建主分区
分区3 分配给 /data : 用 fdisk, mkfs.ex4
七、写入编译好的文件
1.写入系统分区
假设system分区挂载在/dev/sdb2下:
$ cd out/target/product/rpi3
$ sudo dd if=system.img of=/dev/sdb2 bs=1M
2.复制内核文件到boot分区
复制device/brcm/rpi3/boot/* 到 分区1:/
复制kernel/rpi/arch/arm/boot/zImage 到 分区1:/
复制kernel/rpi/arch/arm/boot/dts/bcm2710-rpi-3-b.dtb 到 分区1:/
复制kernel/rpi/arch/arm/boot/dts/overlays/vc4-kms-v3d.dtbo 到 分区1:/overlays/vc4-kms-v3d.dtbo
复制out/target/product/rpi3/ramdisk.img 到 分区1:/
接下来还需要在boot分区下的config.txt做一些适合自己需要的配置,有些功能还需要修改system分区下的build.prop文件。
如果一切正常的话,插入制作好的sd卡到树莓派上,系统即可正常启动了。