Difference between revisions of "FAQ"

From postmarketOS
Jump to: navigation, search
(added kernel releated Question.)
m (How mainlining is hard?)
Line 15: Line 15:
 
downstream kernel means, that a kernel has additional patches that are not in the mainline kernel. This leads to an outdated ("old version") of the Linux kernel quickly, as they tend not to get maintained after a short time. one exception are the Raspberry pi kernels for example, they are downstream kernels, but are maintained (at least right now). Alpine has them packaged as linux-rpi etc.
 
downstream kernel means, that a kernel has additional patches that are not in the mainline kernel. This leads to an outdated ("old version") of the Linux kernel quickly, as they tend not to get maintained after a short time. one exception are the Raspberry pi kernels for example, they are downstream kernels, but are maintained (at least right now). Alpine has them packaged as linux-rpi etc.
  
== How mainlining is hard? ==
+
== why mainlining is hard? ==
 
Source code of every ported devices downstream kernel is abl-able. But mainlining is not a easy task. Drivers from the downstream kernel need to be rewritten to work with the upstream/mainline kernel.  
 
Source code of every ported devices downstream kernel is abl-able. But mainlining is not a easy task. Drivers from the downstream kernel need to be rewritten to work with the upstream/mainline kernel.  
 
The Linux kernel changes all the time, and drivers written for some old version are not compatible with the new kernel. and for downstream kernels, they are just written to be working. but for upstream they need to use the proper shared code and concepts that the kernel has to offer for them.  
 
The Linux kernel changes all the time, and drivers written for some old version are not compatible with the new kernel. and for downstream kernels, they are just written to be working. but for upstream they need to use the proper shared code and concepts that the kernel has to offer for them.  

Revision as of 04:48, 3 January 2019

Is there a list that explains all the technical abbreviations?

Sure, take a look at the glossary.

What Linux distribution is postmarketOS based on?

It is based on Alpine Linux, edge version right now. We want to change it to a stable version in the future (pmaports#5).

Why is postmarketOS based on Alpine Linux?

The biggest upside is, that Alpine is small. The base installation is about 5 MB! Only because of that, our development/installation tool pmbootstrap is able to abstract everything in chroots and therefore keep the development environment the same, no matter which Linux distribution your host runs on.

And if you messed up (or we have a bug), you can simply run pmbootstrap zap and the chroot will be set up again in seconds. Imagine how long it would take to do the same with Debian (which is a fine distributions for plenty of other use cases).

Another angle on the tininess of Alpine - many older devices don't have much space to spare, so hilariously tiny system images can be quite useful or even required.

What's the difference between the downstream kernels and old version of kernels?

downstream kernel means, that a kernel has additional patches that are not in the mainline kernel. This leads to an outdated ("old version") of the Linux kernel quickly, as they tend not to get maintained after a short time. one exception are the Raspberry pi kernels for example, they are downstream kernels, but are maintained (at least right now). Alpine has them packaged as linux-rpi etc.

why mainlining is hard?

Source code of every ported devices downstream kernel is abl-able. But mainlining is not a easy task. Drivers from the downstream kernel need to be rewritten to work with the upstream/mainline kernel. The Linux kernel changes all the time, and drivers written for some old version are not compatible with the new kernel. and for downstream kernels, they are just written to be working. but for upstream they need to use the proper shared code and concepts that the kernel has to offer for them. For example, there might be a display driver that works for just one specific display. but as it gets mainlined, it must use some generic display driver, which means the thing needs to be entirely rewritten and having that generic approach is the only way to have the upstream kernel maintainable. otherwise it would be a random collection of drivers that work completely different.

if the downstream kernels have the all the drivers in there so why some parts not works, like audio?

Device tree. The device tree is exposed as a hierarchy of directories and files in /proc. If some files are not there that part will not work.

Will Android apps be supported?

Currently, our best bet seems to be getting Anbox running on postmarketOS. It's highly recommended to use native Linux applications though, as there are some downsides to Android apps:

  • Freedom issues (most are proprietary, or only work together with a proprietary network, some even track you), see F-Droid for FLOSS programs, that respect your freedom.
  • Heavy resource usage: With all resources, we will most likely need to run a Android environment next to your regular Linux. So it will use up more RAM and CPU compared to native Linux applications.

So at least try to find a native-Linux alternative for your favorite application or ask yourself if you really need it. For app developers, consider using Kirigami UI or similar to develop apps for both mainstream mobile OSes (Android/iOS) as well as naively for Linux distributions.

Can project Treble help postmarketOS?

Google proposed Treble to improve the update situation for Android by having a "vendor implementation" with a stable API, that Android builds upon. The idea is, that you can swap out the Android version easily, because of that API. As postmarketOS developers see it, that is a step in the right direction, but it does not resolve the updates problem completely.

You will still have the "vendor implementation", which is different for every device. It will contain at least the kernel and drivers (kernel/userspace), for which you, as a user, depend on the manufacturer to keep it updated, and which will probably not be mainlined. This means, that after two years or so, when the support runs out, you will still have a device, that does not get updates anymore. Only for a smaller component of the operating system.

Also keep in mind, that this will work for newer Android O phones only. We already have an alarmingly high number of phones, which will never get that improvement. They can be saved from being electronic waste with projects like postmarketOS.

Is dual boot supported?

It is possible to boot postmarketOS from an sd card without overwriting the existing OS, if you can load a kernel and initramfs with your USB cable (or load it from the sd card as well, like it's possible with the N900). Typically this will work with fastboot devices that have an sd card slot. See Dual Booting for more details and supported options.

Other dual boot solutions are not supported, but it should not be that hard to add them, if you know how these work. See #421 for ideas.

Which GUI toolkits are supported?

The ones that Alpine provides, use its package search to find the toolkits and versions. The typically used ones, QT5 and GTK+3 are among them.

Is support for flatpack, snap and Appimage planned?

Nobody worked on this yet, and it's questionable how useful that would be. Even if we supported that, it would not be compatible with existing snaps/flatpacks etc, because the binaries in these are linked against the glibc (GNU libc), not against musl libc.

Any gui front-end for package management?

No, but we'll need something like that. Supporting PackageKit could be one approach (pmaports#12).

Does postmarketOS have its own binary package repository?

Yes, the primary mirror is located here. The package build recipes (APKBUILDs) are in the pmaports repository.

Which file system is used?

We're using ext4 right now. People can add other file-systems in pmbootstrap if they need them.

What are the TODOs and where is the OS heading?

Detailed TODOs can be found in the gitlab issues. Some of them have a "help wanted" label:here. The big picture is discussed in this thread currently: postmarketos.org#83.

Are all postmarketOS packages and the kernel built locally when creating an installation image?

You build the rootfs image on your PC with binary packages from the postmarketOS binary repository. Missing packages get built locally. But usually the repo is up-to-date. Building packages locally is useful for development.

Which USB/Wireless peripherals work?

Quite a few devices have working wifi, and USB network is available for most devices. See the devices feature matrix for details.

USB mouse, keyboard, game pads etc. should work just as well as on other Linux distributions. Typically, you would need a OTG cable to use them on a phone.

Connecting phones to external monitors usually depends on proprietary Android userspace drivers, so it will not work on postmarketOS (or only with hybris and not with mainline kernels, unless somebody reverse engineers them and makes them work with mainline).

Why don't we use firmware files from Android's firmware partition?

When we package it directly, we have the following advantages (see the discussion in #637):

  • We know which version we have
  • We can update it easily (either with official new versions, or with hacks like nexmon)
  • We don't run into conflict with other OSes that may be installed on the device (e.g. when uninstalling pmOS and installing another ROM, or when doing NFS boot)
  • This also works for non-Android devices, which may not have such a firmware partition.