System images

This is where I try to collect information on how the system images you can download are built or used.

The “Gemini Partition Tool”

Planet Computers provides an online tool where you can configure and download multiboot system images for the Gemini PDA.

After selecting the system variants and what partition they should be on, the tool provides download links to the corresponding image files and a “scatter file” for the MediaTek Flashing Tool.

Gemini Variants

Note how you can choose between different variants of the Gemini PDA. One difference this selection makes is likely the variant of the LK bootloader, as it got several branches named after these variants.
The same is true for the Android kernel as well. I’m not sure if that concludes the differences though.

TODO:

  • find out what the exact differences are in the “Gemini version” (variations in kernel or build configs might be relevant when building an image)
  • find out what the online tool actually does, so it can be reproduced locally

Bootloader

The Gemini PDA apparently uses some version of the “Little Kernel” (LK) bootloader, which I’m not sure is used as a first or second stage bootloader. A repository with the source code should be available on Github. Gemian also keeps a fork which contains some cleanups.

TODO:

  • explain/list multiboot keypress combinations
  • read this post

Kernel

Planet Computer seems only to have published the ancient Linux kernel they use for Android on Github.
There is a ”community“ fork from this kernel that allegedly contains some fixups for Linux. It seems it is used for the Debian/SailfishOS images provided by Planet Computers.

Mainline

I know nothing more about that than the wiki I’m referencing has written down.

TODO:

  • Examine differences between the Helio X20 and the X25/X27 SoC’s. Wikichip states there are mostly differences in the clocks, and to my understanding the X20 is supported in the mainline kernel? One of those informations is probably wrong—looks like I missed something here.

System image

The image files used to boot are Android boot images assembled using mkbootimg, which makes sense, considering that the LK bootloader is used in Android as well. The gemian wiki describes how such an image is built.

Architecture

The Helios X25/X27 is an arm64 SoC supporting ARMv8. In the Gemian Wiki, the kernel is compiled using a prebuilt aarch64-cross-toolchain for ARCH=arm64. This should be applicable for userspace as well.

The byte order of the CPU is little endian, which you can check via lscpu on any provided Linux image, or this little trick in termux (lscpu didn’t work for me there):

# Returns 1 for little endian, 0 for big endian
$ echo -n I | od -to2 | head -n1 | cut -f2 -d" " | cut -c6
1

Sources

dguidipc

There seems to be one Github profile which is used by Planet Computers to sporadically dump their current source code snapshots for the Android kernel, bootloader and Flash-Tool: dguidipc

Gemian

There is a small Github organisation called Gemian for “Debian on the Gemini PDA”. It is used to collect a bunch of repositories with mostly software used in the Debian images I presume including changes specific to the Gemini PDA. It’s also where a small wiki is hosted that describes part of the build process.