Hello everyone, my name is Anjan. I'm a foster enthusiast post-market OS trust your contributor
and SXMO co-mintainer. I've been contributing to the post-market OS ecosystem since 2020
and it's my favorite thing to hat on. You can find links for all the stuff I mentioned in
a blog post on my website, mommi.ca.
So the beginning of post-market OS, post-market OS is a standard Linux distribution. It's based
on alpine Linux. The project originally started with wanting to install an environment that's
very similar to what you would have on Fedora or Ubuntu on your desktop or laptop onto
your Android phone. So it's a standard Linux distribution on a phone form factor with USB
modem for calls, text and mobile data. You can install desktop game, desktop Firefox, have a regular
unix-like file hierarchy. Use our arcing to copy files over SSH and you can basically do anything
on your phone that you would do on your Linux desktop or server. Provided you use a Linux laptop
or desktop. There's no need to learn a new apps. Anything you know carries over to all your devices
and there are similar projects to post-market OS for mobile phones like Mobian and Arch Linux Arm.
In fact, today we have a lot of device insecure devices such as smart TVs, smart watches,
and post-market OS can be used to improve user freedom on these devices.
So very quickly we support a variety of user interfaces, everything from gnome to plasma mobile
to telling window managers are supported, like SXMO. In fact, you can install post-market OS on
wearables like watches and for that we support asteroid UI, which is a free software UI for
watches. Since we also support devices that have the form factor of a TV box, we support
entertainment UI called Cody. To get Linux distribution on all these devices, we have developed
a tool called PMBootstrap. We say post-market OS boots on over 500 devices. Boots means
it boots up and loads the Linux kernel and that's pretty much it to everything from Wi-Fi to
the display doesn't work. But then there's something like the OnePlus 6 where almost everything works
except for the camera. Now back to the install process. On these smart devices, TVs, phones,
et cetera, each device requires its own special workflow. Moreover, this workflow changes depending
on the host Linux distribution and requires a lot of manual steps and any guides we write would
quickly go out of date. So we used to have a bunch of shell scripts and the shell scripts that
post-market OS started with evolved into PMBootstrap written in Python. So post-market OS based on
alpine Linux and the alpine Linux mini rootFS is 9.1 megabytes. Because alpine is so small,
PMBootstrap will build images for your device in alpine change routes. PMBootstrap will allow you to
easily include in your image any custom patches, kernels or packages you may be developing.
PMBootstrap can set up different change routes for any experiment a developer may be working on.
C-cash and compilation tool chain is all set up and automated and managed by PMBootstrap.
The different flashing methods for all these different devices is abstracted away into
universal commands and common code paths. All this makes it easy for users and developers to
reproduce the issues and successes other users and developers have had on these over 500 devices.
Cool. So post-market OS uses a very simple APK build format for packaging which is shown
on your left. The beginning of this file is just some metadata version where to get the source
table and dependencies. The metadata is followed by shell commands that build, check and
package the program files. To package the build artifacts you installed the build artifact into
the package directory and it able to make the package archive. This process is very similar to
arch Linux. Furthermore files, device kernels, device specific configuration and actual applications
like Firefox, mobile configuration are built using these APK build files. The APK build files and
a few patches needed to build the images in post-market OS is available in a single get repo
called PMA ports. Patching is temporary and we try to upstream everything we can to standard Linux.
When initializing an image you will be asked a series of questions on how you would like your image to
be built. Whether you want stable or rolling release, what device you have so PMBootstrap can
load the device specific configuration firmware and components for Wi-Fi management and audio
are easily swappable in post-market OS via PMBootstrap. The SSH settings are set up so that SSH is
available and works out of the box. Additionally, PMBootstrap can enable full disk encryption on
your install medium and you can choose between extended for F2FS and ButterFS file systems.
You can generate a post-market OS image to run in a QMU virtual machine. This allows you to test
your work during development or automate testing using something like Open QA. We also
support generated images for ARM64 bit, X8664, PowerPC64 and risk V64, QMU emulators.
It's super easy, it's just two commands. One of the advantages of the Linux distribution model
over Android is that you don't need to build a massive image for every change you want to make.
Moreover, if you want to change one package in the image, you only have to rebuild the package
that you've changed. Once a package has been built locally using cross compilation, which is also
very easy, you can remotely side load that package onto your device via SSH. PMBootstrap will put
cross compiled packages in a local directory. If you want to run a build server with PMBootstrap
handling the cross compilation, all you need to do is point a web server to serve the files from
that local directory. PMBootstrap is so useful that when developing the Linux kernel, some
developers consider it a core part of their kernel development workflow, even when they're not
working on post-market OS directly. Since the tool chain with cross compilation is automatically
installed with same defaults in a reproducible Alpine change route, it's easy to side load,
it's easier to get up and running with kernel development quickly using PMBootstrap.
Each Android device has a boot image, and PMBootstrap can analyze this using PMBootstrap boot
image analytics. This command will read the boot image and help you when you're
porting your new Android device over. Moreover, this command can provide you with information on
how the Android device actually works. The K-Config PMBootstrap sub command will easily allow
you to migrate older K-Configs to newer versions, newer kernel versions. Moreover, the project
keeps a YAML file, that maps kernel options to features that users would want. So you can use
K-Config check, and the K-Config check PMBootstrap sub command, and check that your kernel
config has not regressed because of an unset option. So in conclusion, PMBootstrap is a great
way to simplify your tool chain and create reproducibility in your development and ship new
images to your customers. Again, the sources are on my blog post, and yeah, we have a table,
so if you want to come and ask questions, that's cool too. Thank you.