Ubuntu 16.04 固件

准备工作

编译环境初始化

  • Ubuntu 14.04 软件包安装:
$ sudo apt-get install git gnupg flex bison gperf build-essential \
zip tar curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 cmake tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 lzop
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
  • 安装 ARM 交叉编译工具链和编译内核相关软件包
$ sudo apt-get install gcc-arm-linux-gnueabihf \
gcc-aarch64-linux-gnu device-tree-compiler lzop libncurses5-dev \
libssl1.0.0 libssl-dev

获取内核源码

git clone -b firefly https://github.com/FireflyTeam/kernel.git

编译内核

  • 编译前执行如下命令配置环境变量:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
  • 编译 aio-3288c
make firefly-linux-defconfig
make rk3288-firefly-aio-linux.img -j4

编译完成后,会在 kernel 目录下生成 kernel.img 和 resource.img. 如需编译 arch/arm/boot/dts/rockchip/ 目录下某个 xxx.dts,则

make xxx.img -j4

升级分区镜像

查看 parameter 文件

CMDLINE:console=ttyS2,115200 root=/dev/mmcblk2p6 rw rootwait \
mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),\
0x00008000@0x00006000(resource),0x0000A000@0x0000E000(kernel),\
0x00002000@0x00018000(backup),-@0x0001A000(boot)
  • 注意点

root=/dev/mmcblk2p6 —> rootfs 分区 如 根文件分区大小异常,

resize2fs /dev/mmcblk2p6

0x0000A000@0x0000E000(kernel) —> kernel 分区 kernel —> 分区名称 0x0000E000 —> 分区起始地址 0x0000A000 —> 分区大小,一般不需要关注

Linux upgrade_tool 升级分区镜像( xx.img )

注意,parameter 分区对应的名称,是否相对应

sudo upgrade_tool di kernel kernel.img
sudo upgrade_tool di boot rootfs.img

kernel —> 上点 parameter 所述分区名称 kernel.img —> 编译生产的 kernel.img 分区镜像

Windows AndroidTool 工具升级分区镜像

注意,parameter 分区对应的起始地址,是否相对应 _images/linux_compile_kernel.png

其他分区镜像

可通过 《定制 Android 固件》一文,解包官方发布固件获取。