Allwinner A20 Linux Image Site

Report: Allwinner A20 Linux Image – Ecosystem, Build Systems, and Deployment 1. Executive Summary The Allwinner A20 is a dual-core ARM Cortex-A7 system-on-chip (SoC) released in 2013. Despite its age, it remains popular in low-cost single-board computers (SBCs) like the Olimex A20-OLinuXino , Banana Pi M1/M1+ , Cubieboard 2 , and Orange Pi Mini . A "Linux image" for the A20 refers to a bootable filesystem containing the Linux kernel, device tree, bootloader (U-Boot), and root filesystem (rootfs). Unlike mainstream x86 PCs, A20 images are highly hardware-specific due to differences in DRAM initialization, pin muxing, and peripheral support. This report examines the structure, sources, build methods, and current state of Linux images for the Allwinner A20 platform. 2. Hardware Overview and Boot Requirements 2.1 Key Allwinner A20 Features

CPU : Dual-core ARM Cortex-A7, NEON, FPU GPU : Mali-400 MP2 (OpenGL ES 2.0) Memory controller : 32-bit DDR2/DDR3 up to 2 GB Storage : MMC, NAND, SATA (native) Video : CedarX VPU for H.264/MPEG-2 decoding

2.2 Unique Boot Process Unlike PC BIOS/UEFI, A20 boots from Boot ROM which reads an eGON.BIN boot header from SD card, NAND, or SPI flash. This header contains a first-stage bootloader (SPL) that initializes DRAM, then loads U-Boot, which finally loads the Linux kernel and device tree. Consequence: A standard dd if=image.img of=/dev/sdX does not work unless the image includes the correct boot0/boot1 stages and partition table. 3. Anatomy of an Allwinner A20 Linux Image A functional A20 Linux image is not a single file but a disk image with a specific layout: | Offset / Partition | Content | Format | |--------------------|----------------------------------|----------------------------| | 8 KB | SPL (boot0) | Raw binary (with checksum) | | 24 KB (typical) | U-Boot (u-boot.bin) | Raw binary | | 1 MB | U-Boot environment (optional) | Raw | | 2 MB / 4 MB | Boot partition (FAT/ext4) | zImage + .dtb files | | Rest of disk | Root filesystem | ext4 / btrfs / f2fs | Modern images for A20 typically use U-Boot SPL + FIT image (Flattened Image Tree) or legacy raw kernel + device tree. 4. Sources of Pre-Built Linux Images Several communities provide ready-to-use A20 Linux images: | Distribution | Target Boards | Kernel | Init System | Image Tool | |-----------------------|-----------------------------------|----------------|-------------|--------------------| | Armbian | Cubieboard 2, Banana Pi, Olimex | 6.1 LTS / 6.6 | systemd | armbian-build | | DietPi | Same as Armbian (reuses kernel) | Same as Armbian| systemd | dietpi-imager | | LibreELEC (Kodi) | A20 media boards | 5.10 (legacy) | systemd | custom create script| | OpenWrt | A20 routers/devboards | 5.4 / 5.15 | procd | imagebuilder | | Legacy Android (4.2) | Original tablet/TV box images | 3.4 | Android init| PhoenixCard | Recommendation for 2025+ : Armbian provides the most up-to-date kernel (6.1 or newer), mainline U-Boot, and active A20 support. 5. Building a Custom Allwinner A20 Linux Image 5.1 Using Mainline Build Systems a) Armbian Build Framework git clone https://github.com/armbian/build cd build ./compile.sh BOARD=cubieboard2 BRANCH=current RELEASE=bookworm BUILD_MINIMAL=yes

Produces .img.xz file ready for dd or balenaEtcher . Handles SPL, U-Boot, kernel, and rootfs automatically. allwinner a20 linux image

b) Buildroot (for minimal embedded systems) make cubieboard2_defconfig # or a20_olinuxino_defconfig make

Output: sdcard.img containing U-Boot, kernel, BusyBox rootfs.

c) Yocto Project (meta-sunxi layer) bitbake core-image-minimal Report: Allwinner A20 Linux Image – Ecosystem, Build

Creates a complete A20 image but higher learning curve.

5.2 Manual Image Assembly (for education/debug)

Partition SD card (4 MB FAT + remaining ext4) Write SPL + U-Boot: dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8 A "Linux image" for the A20 refers to

Copy kernel and DTB to FAT partition: cp arch/arm/boot/zImage /media/boot/ cp arch/arm/boot/dts/sun7i-a20-cubieboard2.dtb /media/boot/

Extract rootfs (e.g., Ubuntu base) to ext4 partition.