AbstractOS

Search documentation

Find a docs page

Developer guideHardware & porting

Porting to a new device

Bring up AbstractOS on new phone, tablet or PC hardware, from kernel to shell.

A port is a device configuration: a kernel, a device tree and a small TOML file describing the hardware. Everything above the kernel is shared, so most ports never touch userspace.

What makes a good target

  • An unlockable bootloader.
  • Mainline Linux support, or an active postmarketOS port to build from.
  • At least 4 GB of RAM and a GPU with an open driver (Freedreno, Panfrost, Mesa).

Boot flow

Rendering diagram
From power-on to the shell

Create a device configuration

bash
cd image
./abstract-image new-device --vendor acme --codename falcon --arch arm64
# creates devices/acme-falcon/
devices/acme-falcon/device.toml
[device]
name = "Acme Falcon"
codename = "falcon"
form_factor = "phone"
arch = "arm64"

[kernel]
source = "mainline"
version = "6.11"
dtb = "qcom/sm7225-acme-falcon.dtb"

[display]
width = 1080
height = 2400
scale = 2.5

[features]
touchscreen = true
camera = false
gps = true
wifi = true
lte = false
gpu = "freedreno"

Bring-up checklist

MilestoneHow to verify
Kernel bootsSerial or dmesg over USB networking
DisplayShell renders at the native resolution
Touchscreenlibinput debug-events shows touch events
Wi‑Finmcli device wifi list returns networks
Modemmmcli -L lists the modem
Cameracam -l lists sensors through libcamera
SuspendDevice sleeps and wakes on power button

Build, flash and submit

bash
./abstract-image build --target arm64-acme-falcon
abstract-flash --device falcon out/abstractos-arm64-acme-falcon.img

When the core milestones pass, open a merge request against abstract/image with your device directory and a filled-in support table. Once merged, your device appears on the Devices supported page.

Last updated Edit this page on GitLab