Ubuntu下为树莓派3B编译Android(Lineage OS)7.1.2系统

时间:2024-04-01 15:12:11

这篇博文其实主要是为了给自己备忘的,能帮到有需要的朋友也是极好的。

一、环境

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卡到树莓派上,系统即可正常启动了。

Ubuntu下为树莓派3B编译Android(Lineage OS)7.1.2系统