nanopi k2 android tv,NanoPi K2 编译 @ Ubuntu 16.04

我自己重新修正了一下源码,目前可以编译通过,跟官方的没有功能修改(实际上官方代码也是够烂的.),然后用tar可以解压源码.还有恶心的Java,哪怕是OpenJDK,也是严格跟Ubuntu一起绑定的,老一点都根本死光光了.所以,如果你想翻旧账,只有把做好的Ubuntu变成OVF,到时候再用,不然就悲剧了.(因为到时候哪怕是Old-release有包,PPA也是没药可救了.),而且推荐用Server版本,因为编译安卓之类的,很严格要求,如果只是Linux,是哪个版本的一点关系都没有.

源码包(我自己修正的):网盘链接(4.09GB)

源码包MD5校验:f34c60f151efb40bf74a7d48b8f0bed7

源码包SHA256校验:d000565e7be054163734b1f93f65a7981fbab3412bb8bc6df441fd04d13afcfe

配置参考:

CPU:无最低要求,但是最好性能越高越好.我参考平台E5-2683v4,如果配置太低还是不建议虚拟机方式安装了.

硬盘:30G(内核编译下限) 50G(安卓编译下限) 80G(开启CCACHE下限) 推荐SSD,越大越好.有条件最好RAM内编译.

系统:Ubuntu 16.04 x64 Server (也可以安装桌面板,只是想多压榨性能.就不要被图形拖累了.)

RAM:8GB(物理内存至少拥有8GB,否则SWAP都救不活),16G总内存(RAM + SWAP),最好全部是物理RAM.

虚拟化:KVM/VMWare 均可,OpenVZ/Docker/Hyper-V失败,物理机最好.

当然啦,要编译,当然要有好机器,只要Linux编译就容易很多,但是如果要涉及Android编译,还是配置高点好.最重要是CPU了.我目前工作目录是/root/android,如果你的工作目录跟我不一样,那么你需要修改工作目录,推荐用全新服务器系统,然后执行下面这句,进行基础软件安装(用Ubuntu 18.04的最小化安装就可以.)

apt-get update

apt-get -y install pixz bison bc nload htop u-boot-tools device-tree-compiler iotop libssl-dev u-boot-tools g++-multilib git gperf libxml2-utils make python-networkx zip flex libncurses5-dev zlib1g-dev gawk minicom git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip make

先说Linux部分的编译,需要先把编译工具加入到PATH常量里面.比如我是这么运行的.

export PATH=/root/android/prebuilts/gcc/linux-x64/arm-cortexa9-linux-gnueabihf-4.9.3/bin

:/root/android/prebuilts/gcc/linux-x64/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin

:$PATH

然后检查下是否生效OK.

arm-linux-gcc -v

aarch64-linux-gnu-gcc -v

9f874f56c650eab5e07cbf3836992e53.png

切换到U-Boot目录,如下,然后执行默认配置,然后make就可以.(酌情选择多线程编译)

make nanopi-k2_defconfig

make

10b92499f229234ea432bd322a661098.png

编译成功结束后您将获得fip/gxb/u-boot.bin,可使用以下命令直接更新SD卡:

./fusing.sh /dev/sdX

至于Fastboot模式,参考官方吧,我觉得不如这样干脆.

bb5ac181661c69fef5842a04d892f654.png

切换到linux目录,开始编译内核.这里有两个分支.按照下面执行命令.(我编译安卓内核,依然可以酌情增加为多线程编译.)

make ARCH=arm64 nanopi-k2_ubuntu_defconfig <= 要编译Linux内核选这个.

make ARCH=arm64 nanopi-k2_android_defconfig <= 要编译安卓内核选这个.

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image nanopi-k2.dtb

0d28c4535d106071fb260fd838214d28.png

内核就比较省事了,更新TF卡上对应的两个文件就可以了.

cp arch/arm64/boot/Image /mnt_boot

cp arch/arm64/boot/dts/amlogic/nanopi-k2.dtb /mnt_boot

a1d3138fd01660b34b03828900832c6c.png

如果想镜像生成时候就完成这些(安卓编译),就替换到如下目录.

351beb82b2213b5edc2d69bac2e9ebfe.png

编译安卓需要先放弃目前的临时环境变量,所以,最好就是退出screen重新来.

编译安卓还要JDK.(如果是Ubuntu 18.04,那么JDK7就装不了,他会自动给你替换JDK8或者报告失败,其他版本还没验证过,目测也是不可以的.)

add-apt-repository -y ppa:openjdk-r/ppa

apt-get -y update

apt-get -y install openjdk-7-jdk

如果想使用CCACHE,还需要增加一些配置(这个可以写到bashrc里面)

export CCACHE_DIR=/data <= 目录你说了算.

然后配置CCACHE.(如果你不用,也可以忽略他,只是加速二次编译的,节约大约30%时间.)

export USE_CCACHE=1

/root/android/prebuilts/misc/linux-x86/ccache/ccache -M 150G

接着安卓编译需要导出两个环境变量,主要是不要使用clang(否则编译出现无法reloc),使用自带JDK辅助(避免JDK版本出现差异.),最后make可以适当增加线程数.(性能允许下,增加这个可以减少编译时间,一般来说,设置为线程数翻倍.)

export ANDROID_SET_JAVA_HOME=true

export WITHOUT_HOST_CLANG=false

source build/envsetup.sh

lunch nanopi_k2-userdebug

make

安卓编译所需时间比其他要长,一般来说,我都是先去干别的,等下再过来看他.(总共花费4分钟24秒.)

34caeb86de7d0af80ea963d1984fafdd.png

切换到生成目录,这里只有一部分文件有用的.

文件名

目标分区

描述

u-boot.bin

bootloader

引导文件

boot.img

boot

内核文件

cache.img

cache

Cache

userdata.img

userdata

用户数据分区

system.img

system

系统分区

partmap.txt

分区描述文件

9c52e1f109a1cf16c0d2a22c9a2fcc1e.png

把他们挪动到sd-fuse_amlogic/android/ (需要创建目录)下,然后用下面命令烧写,就可以了.

./fusing.sh /dev/sdx android

dc556c60878c23477597fe94617a6559.png

整个过程就完结了~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值