Commit graph

2210 commits

Author SHA1 Message Date
Clayton Craft
cc3dd7de87
postmarketos-mkinitfs: trigger on upgrades to sd-boot (MR 4525)
Since mkinitfs / boot-deploy install sd-boot in the ESP, it makes sense
to always trigger mkinitfs when sd-boot is upgraded so that we always
boot with the latest supported version.

[ci:skip-build]: already built successfully in CI
2023-11-02 08:49:27 +01:00
Clayton Craft
c9c4b492e4
main/postmarketos-initramfs: show OS version on splash screen (MR 4470)
This shows the OS version (from /etc/os-release), e.g. "edge", on the splash
screen. os-release is a tiny text file, adding it to the initramfs doesn't seem
too bad, and having this information on the splash screen can be helpful.

Note that this uses "VERSION" and not "PRETTY_NAME" from the os-release file,
since the splash already shows "postmarketOS" (and the pretty name includes
that too), it seemed redundant and took up valuable display space.

[ci:skip-build]: already built successfully in CI
2023-11-02 08:44:47 +01:00
Clayton Craft
1c56a8a0d1
main/postmarketos-base: include os-release in the initramfs (MR 4470) 2023-11-02 08:44:31 +01:00
Oliver Smith
f8f223fef0
main/postmarketos-ui-phosh: set pmOS wallpaper (MR 4527)
[ci:skip-build] already built successfully in CI
2023-11-01 16:02:41 -07:00
Oliver Smith
f231f88d4d
main/postmarketos-ui-gnome: set pmOS wallpaper (MR 4527)
Set myself as maintainer while at it, as Martijn is currently inactive.
2023-11-01 16:02:41 -07:00
Oliver Smith
fbc3f390fa
main/postmarketos-ui-gnome-mobile: set wallpaper (MR 4527)
Set the GNOME Mobile specific wallpaper in this package, now that it
isn't set in postmarketos-base-ui-gnome anymore.
2023-11-01 16:02:41 -07:00
Oliver Smith
367caeb4fc
main/postmarketos-base-ui-gnome: add wallpaper_pmos subpkg (MR 4527)
Add a subpackage that sets the pmOS wallpaper, instead of always setting
the wallpaper that was added for giving GNOME Shell on Mobile a better
contrast.
2023-11-01 16:02:36 -07:00
Caleb Connolly
614cbdc5d1
postmarketos-mkinitfs: trigger on initramfs tests (MR 4420)
Add a trigger to rebuild the initramfs when CI tests are installed.

[ci:ignore-count]
2023-10-31 20:39:55 +00:00
Caleb Connolly
c99a360a6e
unl0kr: add pmtest (MR 4420)
Add a test for CI that:
* ensures unl0kr runs for 10 seconds without crashing
* ensures that it doesn't print any errors

This sure isn't an "ideal" test, but it at least validates that the
framebuffer interface doesn't die horribly...

With a little more effort we should be able to run unl0kr and then pull
the framebuffer and check it against some known good unl0kr screenshot.

Signed-off-by: Caleb Connolly <caleb@connolly.tech>
2023-10-31 19:54:17 +00:00
Caleb Connolly
2204c0a390
main/bootrr: new aport (MR 4420)
bootrr is a simple shell script tool for validating that a given board
has booted correctly. It checks that all expected drivers are loaded.

Signed-off-by: Caleb Connolly <caleb@connolly.tech>
2023-10-31 19:53:22 +00:00
Caleb Connolly
69832ab121
postmarketos-initramfs: support running in CI (MR 4420)
Enable using the postmarketOS initramfs for boot-testing devices, in
this scenario we don't care about some components like the splash, mdev,
or subpartitions, instead we want to run full udev (to load all devices)
and then run hooks. The ci hook will deadloop after running tests.

Signed-off-by: Caleb Connolly <caleb@connolly.tech>
2023-10-31 19:53:22 +00:00
Caleb Connolly
ac1d78a246
devicepkg-dev: add pmtest helper (MR 4420)
Add a helper to generate a post-install script for device pmtest
subpackages. This script configures the console and enables logging in
the initramfs for images running in CI.

[ci:ignore-count]
2023-10-31 19:53:22 +00:00
Caleb Connolly
161711dea3
main/postmarketos-test: new aport (MR 4420)
This package provides a helper for writing a pmtest subpackage, as well
as being a place to write generic tests that aren't specific to a device
(e.g. a suspend test).

Signed-off-by: Caleb Connolly <caleb@connolly.tech>

[ci:ignore-count]
2023-10-31 19:53:22 +00:00
Caleb Connolly
e22f6f684f
postmarketos-mkinitfs-hook-ci: new aport (MR 4420)
Add a new initramfs hook for running tests in a CI environment.

This hook automatically runs any scripts from /usr/libexec/ci-tests.
Tests should be installed as a subpackage of some other package (e.g.
qrtr) with an install_if clause to install them when this hook is
installed.

This allows platform specific packages like device packages to define
tests that will automatically be installed and executed when building
the initramfs for that device. See
device/community/device-oneplus-enchilada for an example.

Signed-off-by: Caleb Connolly <caleb@connolly.tech>
2023-10-31 19:53:21 +00:00
Clayton Craft
c748048ef3
main/systemd-boot: add patch to load dtb even if fw is missing config (MR 4509)
Submitted upstream: https://github.com/systemd/systemd/pull/29749

[ci:skip-build] already built successfully in CI
2023-10-28 12:32:56 -07:00
Caleb Connolly
78762563c2
postmarketos-initramfs: use blkid (MR 4487)
Explicitly pull in the blkid package (we already added it to
00-initramfs-base.files), and replace uses of busybox findfs. Full fat
blkid supports PARTLABEL (so the /dev/disk/by-partlabel symlinks will
work consistently now), and has some nice optimisations that make the
lookup times a lot faster than busybox findfs.

[ci:skip-build]: already built successfully in CI
2023-10-23 08:10:56 +02:00
Caleb Connolly
5c6f2dd0d9
postmarketos-initramfs: fix partition cmdline priority (MR 4487)
The "pmos_[br]oot(_uuid)?" kernel cmdline args can be used to specify
how to mount the root and boot partitions. During a previous rework, the
behaviour of these was made inconsistent (becoming dependent on the
order they were specified on the cmdline).

Undo the previous "optimisation" by splitting them back out into two
FOR loops, where the _uuid variants take precedence.
2023-10-23 08:10:50 +02:00
Henrik Grimler
c2175703fe
main/postmarketos-base-downstream: add package (MR 4497)
All devices that use downstream kernels should depend on this package.
We will to start with use it to fix so that lightdm+x11 work again
when using downstream kernels.

See also https://gitlab.com/postmarketOS/pmaports/-/issues/2102.
2023-10-21 14:43:12 +02:00
Clayton Craft
ef663840c4
main/postmarketos-mkinitfs: upgrade to 2.2.2 (MR 4475)
The only new thing in this version is the addition of a deprecation warning
when osk-sdl is installed in the initramfs.

Also see: https://gitlab.com/postmarketOS/pmaports/-/issues/2319
[ci:skip-build]: already built successfully in CI
2023-10-18 17:51:59 +02:00
Clayton Craft
4a8b89e750
main/boot-deploy: upgrade to 0.11 (MR 4485)
Upstream changelog: https://gitlab.com/postmarketOS/boot-deploy/-/tags/0.11
2023-10-18 17:46:15 +02:00
Pablo Correa Gómez
bdaf8ef02f
main/postmarketos-initramfs: support comments in modules.load file (MR 4490)
[ci:skip-build]: already built successfully in CI
2023-10-18 15:08:21 +00:00
Clayton Craft
72bd769dcb
main/systemd-boot: new aport (MR 4484)
EFI bootloader from systemd, with hacks to build it on Alpine/pmOS.
Cross compilation (using a meson cross file) is used for building
32-bit version on x86_64, for systems that have a 32-bit EFI. Everything
else assumes that the EFI arch matches the CPU arch.

Besides supporting all the archs we need, another major goal was to
minimize the number of changes to systemd's build system required to
build only the bootloader, so that maintaining/rebasing isn't *too*
painful...

I am adding this to the "main" category, because I don't think there's a
way to add it to Alpine. It requires cross compiling to x86 on x86_64
(to support 32-bit EFI on this arch), and Alpine doesn't support this.
It requires stuff in pmaports/cross.

--- Research notes ---

I started looking at all of this because I wanted to come up with a
single way to boot Linux via EFI, that supports all (or as many as possible)
devices in pmaports. I looked at quite a few different options, and have
some notes below about my observations and conclusions for each.

Of everything I looked at, systemd-boot was the clear winner that met
the most requirements ("pro" below) with the fewest downsides ("con"
below).

Using a Unified Kernel Image (UKI) was a close second place, however
systemd-boot can also support booting UKI images quite easily (while
also giving us more flexibility to boot other things easily too), so I
think it wins over UKI.

The capitalization (or lack thereof) of the "pro" and "con" markers
below is significant: "PRO" / "CON" are major pros or cons for each
point (e.g. a major downside that blocks using the option), and
"pro"/"con" are minor (e.g. a downside that I'm willing to overlook.)

---- Requirements ----

- Arch support:
        - x86_64
        - x86 (nice to have, but not sure if necessary...)
        - armv7
        - aarch64
        - riscv64
- EFI support:
        - support 32-bit EFI on x86_64 CPU (includes being able to build
          32-bit .efi app on x86_64)
- Easy to configure
- Easy to maintain
        - Any changes to the bootloader required to get it working in
          pmOS
        - Config for it

---- Evaluated options ----

------ grub ------
   - (PRO) can target all required archs
   - (CON) grub can't be installed in pmb chroot, it calls grub-install and
     that fails due to something missing in /dev. Maybe this could be worked
     around in pmb?
   - (CON) grub-mkimage exe is integrated in grub package, grub-efi depends on
     grub
      - don't want to install all of grub just for 1 exe and/or the EFI modules
      - downsides of installing all of grub is that I think it can mislead
        users into thinking we use grub the "normal way". this might cause them
        to have the wrong expectations and break pmOS boot on their
        system
      - have POC "fixing" this
      - I'm not sure upstream Alpine will like this, it's ugly
   - (CON) grub x86 EFI support for x86_64 is currently in pmaports, that's
     pretty ugly.
      - IMHO forking grub (or grub components) for this purpose signals
        to me that grub is the wrong tool for this job

------- kernel's efistub -------
   - (PRO) already included in the kernel, nothing else required
   - (pro) initrd and dtb can be passed in the kernel cmdline...
     however....
   - (CON) kernel cmdline can only be set at compile time
   - (con) not all kernels may have EFISTUB set?
   - (con) can't do measured/secure boot
   - (con) requires a fairly recent kernel on aarch w/ efi_zboot support
     enabled since we compress the kernel

------- UKI -------
   - (PRO) very simple, 1 file thing
   - (PRO) supports adding dtb, setting kernel cmdline and so on
   - (pro) can do measured/secure boot
   - (CON) requires an EFI stub loader
      - can't find a stub loader that meets all requirements (other than
        the one from systemd-boot...)
   - (con) requires efi-mkuki or dealing with objcopy directly (eww)
   - (con) requires a fairly recent kernel on aarch w/ efi_zboot support

------- limine -------
   - (PRO) easy to install/configure, already have boot-deploy and pmaports
     patches
   - (PRO) can be cross compiled easily
      - evidence is in aports
      - ...but I couldn't reproduce building aarch64 and riscv64 on x86_64
   - (pro) can do measured/secure boot (I think?)
   - (CON) doesn't target all required archs
      - can't do "linux boot" on aarch64, only "chainload"
      - what about using chainload everywhere?
         - requires using efistub in kernel
         - what about dtb= and upstream recommendation to not use it except for
           debug?
         - no kernel compression support on aarch64
         - see efi-stub.txt kernel doc
   - (CON) vendors libgcc to support cross compilation
      - probably not a good idea to trust binaries produced in microsoft
        github's CI for some random project

------- stubbyboot -------
   - (PRO) a straight forward stub loader
   - (pro) can do measured/secure boot
   - (CON) doesn't target all required archs
   - (CON) cross compiling doesn't work.
      - gcc can't do 32-bit on x86_64 Alpine...
      - gnu-efi-dev needs to be fixed to package both 32-bit and 64-bit on x86_64...
         - have patch in ~/src/aports that kinda does it.. but needs to be
           fixed/finished
      - maybe limine-efi works with it?
         - tried, but fails due to missing efilib.h in limine-efi

------- systemd-stub -------
   - (PRO) another straight forward stub loader
   - (PRO) many (many) people using it, as part of systemd-boot
   - (pro) can do measured/secure boot
   - (con) requires a fairly recent kernel on aarch w/ efi_zboot support
     enabled since we compress the kernel
   - (con) doesn't target all required archs
      - but does claim to support most... missing armv7.. maybe it
        works?
   - (con) will end up maintaining some downstream patch to build it
      - hopefully the patch (if I can even make a working one!) is not too
        complex!
   - (CON) can't be built outside of systemd's silly large build system.
      - UPDATE: largely resolved this in pmaports
      - was able to build for native arch!
      - can't build 32-bit on x86_64, no gcc multilib support in Alpine...
        Couldn't get clang to work properly, but maybe it can somehow...
      - https://github.com/mintsuki/libgcc-binaries ? NO! (don't want
        bootloader binaries that depend on code compiled by microsoft /
        github...)

------- DIY stub / bootloader -----
   - (PRO) **might** target all required archs and other meet
     requirements
   - (CON) lots of time required to learn, design, do, debug, test
   - (CON) lots of time required to learn, design, do, debug, test
   - (CON) lots of time required to learn, design, do, debug, test
   - (CON) (get the hint yet???)
   - (CON) written in C, probably (there's a rust EFI lib, lol...)

[ci:skip-build]: Already built successfully in CI
2023-10-16 12:16:41 +02:00
Affe Null
82b139a63c
main/postmarketos-ui-bananui: new aport (MR 4457)
[ci:skip-build]: already built successfully in CI
2023-10-09 18:19:59 +02:00
Oliver Smith
e179ba59ea
main/postmarketos-ondev: upgrade to 0.8.2 (MR 4455)
[ci:skip-build]: already built successfully in CI
2023-10-09 06:42:04 +02:00
Johannes Marbach
1329e4b634
main/unl0kr: upgrade to 2.0.2 (MR 4458)
[ci:skip-build]: already built successfully in CI
2023-10-09 06:25:47 +02:00
Pablo Correa Gómez
655c94f945
main/postmarketos-ui-plasma-bigscreen: follow breeze-icons rename (MR 4462)
Ref https://git.alpinelinux.org/aports/commit/?id=ae2de9e4574314489950d8cfb7197e0157fa112b
2023-10-08 18:16:47 +02:00
Stefan Hansson
94f2b68c80
main/msm-firmware-loader: upgrade to 1.3.0 (MR 4448)
[ci:skip-build]: already built successfully in CI
2023-10-04 20:49:05 +02:00
Johannes Marbach
828aac0e8b
postmarketos-fde-unlocker: make unl0kr the default (MR 3279)
Fixes: #1411
[ci:skip-build]: already built successfully in CI
2023-10-03 21:07:35 +02:00
Johannes Marbach
953e74646c
main/unl0kr: upgrade to 2.0.1 (MR 4439)
[ci:skip-build] already built successfully in CI
2023-10-01 21:53:34 -07:00
Luca Weiss
27be25f327
main/lk2nd: add subpackage for quirky htc-memul (MR 4244)
htc-memul needs a special build with a different scratch address set. So
generalize the build function so we can make multiple builds with
parameters without duplicating too much code.
2023-09-29 13:55:32 -07:00
Luca Weiss
025cb223f8
main/lk2nd: upgrade to 0.15.0 (MR 4423)
[ci:skip-build] already built successfully in CI
2023-09-29 10:32:37 -07:00
Joel Selvaraj
d00425c263
main/bootmac: update to 0.2.1 and add bluez-btmgmt dependency (MR 4416)
The bootmac script uses the btmgmt command provided by "bluez-btmgmt"
package. So add it as a dependency.

The 0.2.1 update contains fix for https://gitlab.com/postmarketOS/bootmac/-/issues/3
2023-09-27 07:58:21 +02:00
Oliver Smith
d757a36882
main/postmarketos-mkinitfs: fix trigger script (MR 4422)
Adjust the trigger script to only check for the new deviceinfo path. The
purpose of this check is to make sure that a full device package is
installed, and only in that case run mkinitfs. Otherwise, it will fail
because e.g. no kernels may be installed.

With recent changes, /etc/deviceinfo is a part of devicepkg-utils and
only /usr/share/deviceinfo/deviceinfo really indicates that a device
package is installed.

Remove the "exit 0" at the end while at it, it did not do anything since
the script runs with "/bin/sh -e". Add a comment to make this clear.

[ci:skip-build]: already built successfully in CI
2023-09-26 08:31:00 +02:00
Pablo Correa Gómez
7b2208d292
main/postmarketos-mkinitfs: add trigger on deviceinfo directory (MR 4283)
Fixes #2228

In addition, depend on the first boot-deploy that implemented support
for deviceinfo in /usr/share
2023-09-25 09:20:33 +02:00
Pablo Correa Gómez
34e2a3ddad
main/postmarketos-initramfs: add new deviceinfo path to initramfs (MR 4283)
Reorder alphabetically while in the process, and depend on the first
mkinitfs and devicepkg-utils that implemented deviceinfo in /usr/share
2023-09-25 09:20:32 +02:00
Pablo Correa Gómez
c5d147be99
main/postmarketos-base: adapt to new deviceinfo path (MR 4283)
This greatly simplifies the trigger, since now we can monitor a
directory.

In addition, depend on the latest devicepkg-utils
2023-09-25 09:20:32 +02:00
Pablo Correa Gómez
0b8814d156
main/devicepkg-utils: install default /etc/deviceinfo (MR 4283)
Previously, every device package would package its own /etc/deviceinfo
file, generating a conflict with every other device package. In a
previous commit we have moved the path to /usr/share/deviceinfo, but
we still want to install a sample "/etc/deviceinfo" file to guide
users on how to use the new features. This has the additional benefit
that there is only one of those files in the whole distro. However,
there is no dependency ordering between the device packages and
devicepkg-utils, so there's no warranty of which will be installed
first. Therefore, to avoid a conflict on most likely every user
upgrade, we use postmarketos-mvcfg.
2023-09-25 09:20:32 +02:00
Pablo Correa Gómez
531dc8123d
main/devicepkg-utils: adapt to new deviceinfo path (MR 4283) 2023-09-25 09:20:32 +02:00
Pablo Correa Gómez
1d748a93dd
main/devicepkg-dev: install deviceinfo under /usr/share/deviceinfo (MR 4283)
In the process, add some tests and do some renaming on the existing ones, and
remove the workaround for #2228, will be solved appropriately in a follow-up
commit.

Fixes #1836
2023-09-25 09:20:32 +02:00
Oliver Smith
3f9b2bb878
main/mobile-config-firefox: upgrade to 4.2.0 (MR 4403)
[ci:skip-build]: already built successfully in CI
2023-09-18 21:19:36 +02:00
Markus Göllnitz
fef1a94b57
main/postmarketos-config-nftables: allow Wi-Fi Display traffic (MR 4391)
The port 7236 for TCP is registered with IANA by the
Wi-Fi Alliance for use for the Wi-Fi Display Protocol,
a.k.a. Miracast.

To establish the connection, the local DHCP server has to
be allowed to respond to requests on peer-to-peer Wi-Fi
networks.

Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
[ci:skip-build]: already built successfully in CI
2023-09-14 20:40:33 +02:00
Stefan Hansson
2ab59a220f
main/postmarketos-ui-phosh: Rebuild following url and pkgdesc update (MR 4385)
`url` and `pkgdesc` do affect the resulting package and as such
`pkgver` should be incremented, but it wasn't.

Fixes 0dfb1219f8
[ci:skip-build]: already built successfully in CI
2023-09-08 17:33:17 +02:00
Caleb Connolly
16bf9c9700
main/postmarketos-mkinitfs-hook-debug-shell: fixes (MR 4204)
Some change (I think some tools switching from the coreutils to busybox
versions?) subtly broke debug-shell behaviour. Try to fix it.

Signed-off-by: Caleb Connolly <caleb@connolly.tech>
[ci:skip-build]: already built successfully in CI
2023-09-08 17:15:05 +02:00
Clayton Craft
9198a2ad6e
main/postmarketos-initramfs: upgrade to 2.0.0 (MR 4204)
Updates this package's checksums for files modified in this patch
series, and bumps the pkgver
2023-09-08 17:14:59 +02:00
Clayton Craft
20e4eb495d
main/postmarketos-initramfs: hide cryptsetup not found error (MR 4204)
Hides this error when FDE is *not* enabled, and ultimately skips the
block of logic for detecting the luks partition:
        /init: line 437: cryptsetup: not found

This error has confused some users in the past, who were reporting
issues with the initramfs.

There's probably a minor speedup on non-FDE systems as well from
bailing early.
2023-09-07 20:33:56 +01:00
Clayton Craft
cfed09ca36
main/postmarketos-initramfs: overwrite dest when extracting initramfs-extra (MR 4204)
If a file exists in the initramfs at runtime, cpio won't overwrite it
by default when extracting the initramfs-extra archive. This adds the -u
option to cpio, to overwrite any existing files in the destination.

This is meant to fix issues where the -extra archive has an app that is
meant to replace a busybox app, busybox --install creates it in the
initramfs and gzip will skip it since it's newer than what is in the
archive.
2023-09-07 20:33:56 +01:00
Caleb Connolly
9fb29079cd
main/postmarketos-initramfs: get to splash faster (MR 4204)
With full-fat mdev supporting by-partlabel lookups, there is a small
delay during startup. As mdev and dynamic partitions aren't actually
needed for the framebuffer device, move show_splash earlier.

Furthermore, slightly rework setup_framebuffer to not dump the verbose
message about waiting for the framebuffer unless the framebuffer isn't
found.

Signed-off-by: Caleb Connolly <caleb@connolly.tech>
2023-09-07 20:33:56 +01:00
Clayton Craft
97727c59cb
main/postmarketos-initramfs: use only one method to resize the root partition (MR 4204)
This removes the possibility that multiple resize root partition methods
could be invoked. I'm not sure how likely this is in practice, but it
seems like we should avoid the possiblity altogether.

This also adds some more helpful printing to stdout when the partition
resize is skipped / not done.
2023-09-07 20:33:56 +01:00
Caleb Connolly
6f44124c1b
main/postmarketos-initramfs: fixup device-mapper paths (MR 4204)
findfs might produce a block device path like /dev/dm-3, these can
change across boots and devices. Make things more readable and
consistent by mapping from the /dev/dm-* path to the equivalent
/dev/mapper/xyz path. Combined with invoking kpartx from a
/dev/disk/by-partlabel/abc symlink, this results in the final block
device having a name like /dev/mapper/userdata2 on an Android device.

Whilst this is just nicer to work with, this will be especially useful for
the upcoming ondev2 postmarketOS installer to make device-specific
configuration and detection easier.
2023-09-07 20:33:56 +01:00
Caleb Connolly
89fba12fbb
main/postmarketos-initramfs: optimise find_*_partition (MR 4204)
Save the root/boot partition paths once found, and optimise a few loops.

Additionally, fall-back to other search methods when the pmos_boot or
pmos_uuid_boot cmdline args are set but fail.

Co-authored-by: Clayton Craft <clayton@craftyguy.net>
2023-09-07 20:33:55 +01:00