The Mini-X is a small ARM device intended to run Android (on Allwinner A10 CPU) and be plugged into a TV. This document is about installing the dCore variant (2015-06-01 release) of TinyCoreLinux (TCL) on a micro-SD (uSD) card to run instead of Android. On the TCL website there is a script to setup the uSD card, but it is intended to be run on a machne already running TCL, so I did it manually instead.

This document isn't a howto - it's just a set of notes for myself. Consider yourself lucky if it is helpful to you.

WARNING: Getting this wrong could wipe data off your computer. Don't proceed unless you accept the risk.

NOTE: Wherever these instructions say "sdX", replace with the correct device for your uSD card. If you get it wrong, you may wipe stuff off your computer. Some parts of the process need to be done as root.

Obtain files

http://tinycorelinux.net/dCore/armv7/Allwinner-A10/

Some of the files come from mksdcard.tgz (which is also where these instructions are derived from).

I didn't need a special script.bin or sunxi-spl.bin or u-boot.bin - I just used the ones from mksdcard.tgz

Wipe first part of uSD

user@host:~$ dd of=/dev/sdX if=/dev/zero bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.104036 s, 10.1 MB/s

Create boot partition

root@host:~# fdisk -u=sectors /dev/sdX

Welcome to fdisk (util-linux 2.26.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xc371ef29.

Command (m for help): n
Partition type
    p   primary (0 primary, 0 extended, 4 free)
    e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-15693823, default 2048): 2048
Last sector, +sectors or +size{K,M,G,T,P} (2048-15693823, default 15693823): +8M

Created a new partition 1 of type 'Linux' and of size 8 MiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Format boot partition

root@host:~# mkfs.vfat /dev/sdX1
mkfs.fat 3.0.28 (2015-05-16)

Install boot files

user@host:~$ dd if=sunxi-spl.bin of=/dev/sdX bs=1024 seek=8
20+1 records in
20+1 records out
20992 bytes (21 kB) copied, 0.0100839 s, 2.1 MB/s

user@host:~$ dd if=u-boot.bin of=/dev/sdX bs=1024 seek=32
247+1 records in
247+1 records out
253296 bytes (253 kB) copied, 0.0874771 s, 2.9 MB/s

Copy more boot files

root@host:~# mkdir mnt
root@host:~# mount /dev/sdX1 mnt
root@host:~# cp uImage uCore uEnv.txt script.bin boot.scr /root/mnt/
‘uImage’ -> ‘/root/mnt/uImage’
‘uCore’ -> ‘/root/mnt/uCore’
‘uEnv.txt’ -> ‘/root/mnt/uEnv.txt’
‘script.bin’ -> ‘/root/mnt/script.bin’
‘boot.scr’ -> ‘/root/mnt/boot.scr’

This is what you'll have:

root@host:~# ls /root/mnt -l
total 7320
-rwx------ 1 root root     304 Jun 26 22:13 boot.scr
-rwx------ 1 root root   42144 Jun 26 22:13 script.bin
-rwx------ 1 root root 2957185 Jun 26 22:13 uCore
-rwx------ 1 root root     117 Jun 26 22:13 uEnv.txt
-rwx------ 1 root root 4484836 Jun 26 22:13 uImage

Test

Stick the uSD in the Mini-X and power it up - it should boot...