Skip to content

Trailblazer: bleeding edge generic ARM64 EFI port

Caleb Connolly requested to merge trailblazer into master

This MR introduces a generic ARM64 EFI device called "trailblazer".

This is intended to be a strictly upstream, bleeding edge target for those wanting to get a better idea for the state of upstream relative to what most of our main and community devices are shipping.

This is not and never will be a feature-complete device port. It should represent the absolute newest most-likely-to-break software it reasonably can, and it is expected to break.

To reduce the waiting time to try out all the cool new stuff landing upstream, trailblazer is based on Linux next. this branch also introduces a new CI pipeline which will be scheduled to run daily to keep the linux-next package up to date. This CI work requires migrating our CI over to the rules conditions for defining when jobs run, rather than the old only keyword, see !4966 (merged) for more info and discussion about that change.

Right now, this branch is tested to boot on sdm845, and likely works on other platforms that are supported upstream. There are two config fragments, one enabling the distro config options we use in postmarketOS, the other enabling device drivers that aren't enabled in the upstream defconfig.

The most immediate blocker for this being something fun to use on a spare phone is that if a -next tag breaks then by default you won't have any fallback. This is being discussed in #2684, but in the mean time you can manually create a fallback copy of the kernel, ramdisk, (dtb), and systemd-boot config from a known-good version so it can be reverted to if need be.

Due to conflicts, it isn't possible to pre-install firmware packages for a bunch of different devices yet, so when building an image be sure to include your devices firmware (e.g. with pmbootstrap install --add soc-qcom-sdm845,soc-qcom-sdm845-nonfree-firmware,firmware-oneplus-sdm845). In the future as we start resolving this issues it will likely make sense to include device firmware in prebuilt images, but for now we don't have prebuilts, so adding the necessary firmware is a simple enough workaround.

The CI

GitLab has a feature called project access tokens, this creates a bot user which you can authenticate as from CI by adding the access token to the CI variables (protected of course) and using the bot username/email address for commits.

This is untested, but the plumbing should all be in place. I plan to test this with a fork of pmaports once we've agreed on the details.

Future ideas

  • auto-install a cron job (disabled by default) that runs apk upgrade once a day so you always have the freshest -next
  • pre-install firmware for different devices, find a way for qcom services to co-ext with librem 5 ones, etc.
  • generate nightly edge prebuilt images
  • boot-test the latest -next before updating the package, so we can avoid complete breakages (is this even actually what we want from this?)
  • customise postmarketos-welcome with a cool Trailblazer logo and some tips/links specific to this (like the cron job)

Merge request reports