This updates the minimal initramfs to be at the same version that
postmarketos-initramfs was when it was split off. This should have been
done as a part of !5000.
The changelog from git:
- main/postmarketos-initramfs: fix stowaway (MR 5206)
- main/msm-fb-refresher: move cleanup from initramfs into msm-fb-refresher (MR 5191)
- main/postmarketos-mkinitfs-hook-debug-shell: Cleanup debug-shell telnet server (MR 5191)
- main/postmarketos-initramfs: Allow packages to define cleanup hooks (MR 5191)
- main/postmarketos-initramfs: update comment on why we mount /boot (MR 5089)
- main/postmarketos-initramfs: add options for charset to mount vfat /boot (MR 5089)
- main/postmarketos-initramfs: add some sane mount options to /boot (MR 5089)
- main/postmarketos-initramfs: stowaway rootfs (MR 4386)
- main/postmarketos-initramfs: add crc32_generic module for F2FS (MR 4973)
- main/postmarketos-initramfs: add USB booting support (MR 4947)
- main/postmarketos-initramfs: fix starting unudhcpd when no UDC configured (MR 4907)
- postmarketos-initramfs: bigger log image size (MR 4880)
- main/postmarketos-initramfs: allow redirect logs to pmsg device (MR 4800)
Introduce support for having CI automatically update packages using
project access tokens and scheduled pipelines.
The pipeline schedule is configured with an additional variable
containing a list of packages to update, the autoupdate-fetch.sh script
then calls a handler for each of these, the handler is expected to check
for an update, make the necessary APKBUILD changes and commit them.
After all packages have been updated, the changes are pushed to pmaports
master using a project access token.
[ci:skip-build] takes too long to build in CI
trailblazer is a bleeding edge, unstable target for EFI capable ARM64
devices. It runs linux-next and should otherwise be adjusted to support
as many devices as possible.
The goal of trailblazer is to motivate more upstream kernel development by
providing a tighter feedback loop (patches land in -next weeks before they
make it into mainline or stable), as well as encouraging more generic
solutions to the device specific hacks we have in userspace.
On supported devices, trailblazer should reflect the current state of
upstream. It allows users to easily appreciate what feature are
unavailable, and more importantly appreciate when a new feature does get
added upstream.
Due to the instability of linux-next, the plan is to have BPO build
trailblazer images nightly, so if next breaks then the images should
only be broken for a day.
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
Introduce a linux-next kernel with postmarketOS configs and some
additional device specific configs enabled.
This kernel package will be updated daily to the latest -next tag.
breakages expected. It is designed to be used in tandem with a generic
ARM64 device package to provide a bleeding edge option for those with
EFI capable bootloaders.
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
Fixes:
- flash_android_bootimg: check validate target partition size before flashing (MR 63)
- copy target dtb to a temp directory for qcom and sprd dt.img types (MR 57)
Other:
- ci: add integration test for exynos qcdt (MR 57)
- ci: switch to unpackbooting from osm0sis (MR 57)
[ci:skip-build] already built successfully in CI
pma!5000 added a new implicit dependency on libinput, because it
specified libinput files in the initramfs file hook. mkinitfs considers
it fatal if it cannot find files listed in a file hook.
Later this could be 'optimized' by adding a -libinput subpkg and an
`install_if=libinput-libs` to add this file hook so it's not installed
everywhere... but the size increase isn't too much for UIs.. someone can
do this later.
> libinput-libs-1.26.0-r0 installed size:
> 476 KiB
This fixes a missing dependency problem where a UI (e.g. "none") doesn't
normally depend on libinput, and mkinitfs would fail because these files
were missing.
mdev is slow and missing features, it also requires that we load all the
modules that we include at once making the boot process slower.
udev is required for unl0kr (and buffyboard), it can also load modules
on demand (and asynchronously). Making the boot process considerably
faster on devices, especially for generic images where we have lots of
drivers for different display panels in the initramfs.
Additionally, import full fat modprobe from the kmod package, this is
required to support compressed modules.
This brings us more in line with other distros and generally improves
compatibility.
If devices use broken kernel modules which don't correctly define
modalias', these drivers may not be loaded by udev. This should be fixed
by defining the missing modalias statements in the driver.
This also runs udev earlier in the init, so that display drivers are
loaded before the splash in case they are needed.
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
Co-authored-by: Clayton Craft <clayton@craftyguy.net>
[ci:ignore-count]
[ci:skip-build]: already built successfully in CI
This incorprates the debug-shell functionality directly into the
initramfs, so it's no longer necessary to build and boot a custom
initramfs in order to debug your device.
Additionally, the behaviour of the debug-shell is entirely reworked, It
now creates an ACM serial gadget which can be accessed via any normal
terminal emulator (picocom, minicom, etc; or PuTTY on windows). Rather
than just invoking sh, the debug-shell now creates a respawning getty on
both the new virtual console and the active console (this will either be
the UART console or tty0/1).
It is necessary to spawn these shells via getty since the logging rework
means we can no longer assume that stdin/out/err reference a TTY.
In addition to the above, it is now possible to trigger a log dump by
holding volume up during boot. This can be useful for helping users
debug their devices if the issue doesn't result in a failure that can be
detected in the initramfs.
With these changes, the console-shell and debug-shell hook packages are
reduced to only adding the additional tools/features. console-shell is
still required for fbkeyboard, and debug-shell for the setup_usb_storage
tool.
Co-Developed-by: Clayton Craft <craftyguy@postmarketos.org>
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
For some reason globbing doesn't work properly for empty directories,
adjust the check in run_hooks to ensure the directory both exists and
contains something, otherwise we get an error about
"/hooks-cleanup/*.sh" not existing.
/ # mkdir blah
/ # for x in blah/*; do echo $x; done
blah/*
/ # touch blah/beep
/ # for x in blah/*; do echo $x; done
blah/beep
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
I somehow hit a case where this wasn't installed and
/lib/mdev/persistent-storage wasn't available. Let's just explicitly
depend on mdevd...
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
This step is the most likely to go wrong or have issues, and it has side
effects which can make it difficult to run multiple times on one boot.
Move it to after hooks so that e.g. when dropping to a debug shell, we
land before the first call.
This also makes booting to hooks a faster in many cases.
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
fallocate seems to cause some strange behaviour where the logs.img file
is treated like it's empty. Given it's small and in a ramdisk let's just
create it with dd instead.
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
This fixes the annoying "sh: write error" and "Couldn't write to clear
UDC" messages that happen on every single boot.
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
Rework logging to always log the initramfs output to the kernel
ringbuffer and deprecate PMOS_NO_OUTPUT_REDIRECT in favour of following
the kernel loglevel.
I know it seems silly to use syslogd for this, but it's necessary to
buffer writes to /dev/kmsg per-line if we want to correctly set the log
level, and "tee" does not do this (it will write multiple lines at once,
resulting in "<14>" prints in the ringbuffer). The main advantage to
this is that we won't have kernel logs cut in half by initramfs logs
anymore, everything will be nicely line buffered!
The previous logging solution of multiple "tail" commands would actually
fail to log up to the last few lines before a crash due to how tail
works (it polls the file and buffers lines).
I attempted something like this before, but I stopped after running into
ratelimiting issues. These are now resolved by configuring the
printk_devkmsg sysctl.
Dropping PMOS_NO_OUTPUT_REDIRECT:
The general motivations behind PMOS_NO_OUTPUT_REDIRECT was to avoid
cluttering up the console with initramfs logs when they aren't wanted;
this is now handled instead by the kernels logging facility. We log to
the ringbuffer at LOGLEVEL_INFO, so if "quiet" is specified on the
cmdline (or the loglevel is otherwise set above info) then initramfs
logs will also not be shown.
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
We plan to make a lot of changes to the initramfs which will require
incresaing the size. There are some devices that have literally no free
space for this, so make a -minimal initramfs fork that can continue to
support those while we update the regular initramfs.
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>
I'm not able to give this device the attention it deserves.
This also removes me from maintaining fw and kernel packages used by the
L5, and adds the current L5 maintainers to those packages.
[ci:skip-vercheck]
[ci:skip-build]: already built successfully in CI
papers is now in community in alpine, and is the GTK4
replacement. Current main version (still not available in alpine),
fits phone screens, but makes sense to change it already now.
Relates #1479
[ci:skip-vercheck] changes are in pmb_recommends
[ci:skip-build]: already built successfully in CI
Depend on msm-firmware-loader, firmware- and soc- packages.
Sort deps alphabetically.
Tidy up deviceinfo:
* add flash_kernel_on_update
* remove unneded things from kernel cmdline
[ci:skip-build]: already built successfully in CI
Currently it requries the check_code result check in the
vendor uboot to be disabled as explained in the wiki.
Booting directly via reconfigured boot order still
does not work. It hangs somewhere in the kernel.
Firmware for Wifi/BT is not included yet.
It could use the linux-postmarketos-omap kernel in the future,
but there are still some dirty things in there e.g. for sound
which are not suitable for a multi-device kernel.
[ci:skip-build]: already built successfully in CI