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
Bump to the 6.6.32 release, including updating the config with the
latest changes from Purism.
Signed-off-by: Alistair Francis <alistair@alistair23.me>
[ci:skip-build]: already built successfully in CI
PineTab 2 is a successor to the original PineTab from PINE64 released
in mid-2023.
The tablet came with DanctNIX's fork of Arch Linux ARM, comes with
K Desktop Environment as the UI and available with 64GB eMMC/4GB RAM
or 128GB eMMC/8GB RAM.
Changelog since 6.7:
General:
* Adreno 5xx preemtion is now disabled due to hangs it causes.
This makes GPU a lot more cooperative on these platforms.
* Fixed absence of zap-shader region which caused devices with
GPU enabled to freeze the whole system.
* Fixed ath10k Wi-Fi not connecting to 5Ghz networks.
* Incorporated in-kernel pd-mapper patchset, therefore userspace
pd-mapper daemon is not required.
* Kernel cmdline from bootloader is no longer ignored completely,
in other words, not hardcoded. You can now modify cmdline in
deviceinfo file and changes in that file will not be ignored.
Devices:
* Xiaomi Redmi Note 7 (lavender):
* split device trees into 2 variants by panel type (Tianma & BOE)
* GPU + panel support for 2 variants
* Vibrator support
* Connectivity: modem, Wi-Fi and bluetooth support.
* Other/all devices:
* update device trees according to upstream USB stack changes
(related to USB 3 phy support)
Install script into /etc/profile.d with workaround for mesa bugs.
This makes most SDM660 devices usable for general people out of the box.
Signed-off-by: Alexey Minnekhanov <alexeymin@postmarketos.org>
Add msm-firmware-loader, soc-qcom-sdm660-rproc, firmware-xiaomi-lavender
and firmware-qcom-adreno-a530 as dependency. This is necessary to make
Wi-Fi and modem work.
Add support for panel drivers.
commit 933f2b5703 ("device-nokia-n900: improve sxmo-dwm support [MR 5227]")
accidentally removed sxmo lock state initialization. Restore the lock state
initialization
Phoc now defaults to 1,25 as scale on skomer, which while not perfect,
is good enough and lets the device be unlocked. As such, let's remove
this configuration file and encourage improvements upstream instead.
See https://gitlab.com/postmarketOS/pmaports/-/merge_requests/4541
170189393b (device-nokia-n900: add upower support and config (MR 4397) added
an upower config, but did not provide a subpackage to actually install it on
device. Add the needed subpackage.
[ci:skip-build]: already built successfully in CI
(1) the deviceprofile differs from upstream 1.16.3 in the following respects:
(a) -export SXMO_NO_KEYBOARD=1 - allow use of the virtual keyboard
(b) +export SXMO_DMENU_LANDSCAPE_LINES="10"
+export SXMO_DMENU_PORTRAIT_LINES="6" - these two adjust the size of the
displayed dmenu menu.
* NB: All foregoing changes are already merged in sxmo-utils master.
(c) +export SXMO_TOUCHSCREEN_ID="TSC2005 touchscreen" - allows sxmo to
reliably toggle touch screen's enabled status
* The foregoing change is awaiting acceptance by upstream.
(2) The start hook differs from upstream 1.16.3 by the removal of the line that
starts conky. That program pegs N900 CPU usage at 100% all the time. This
change is not upstreamable, at least not for the time being
And configure any modem to be able to use it, so that we can keep
controlling things like bluetooth headsets, and take phone calls from a
car.
[ci:skip-build]: already built successfully in CI
Upstream MR has been closed by Dylan 2 months ago, and this feature is
already present in pipewire. We are doing considerably amount of work to
get Pipewire production-ready in postmarketOS, including features to let
users choose. Given HFP support is actually a nice-to-have feature, but
not a great requirement, our fork is outdated (aports is on 17.0), and that
the upstream MR has been dropped and is not being worked on, it might be
time to drop this.
At some point the driver started using symlinks w/ machine IDs for
finding/loading fw, and for some reason I thought it was a good idea to
not install those symlinks.
Fixes this failure when loading the brcmfmac driver:
brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43752-sdio.purism,librem5r4.bin failed with error -2
[ci:skip-build]: already built successfully in CI
With the current kernel, ds2482 w1<>i2c module is not automatically
loaded at boot, which prevents loading the ds2784 battery module.
Signed-off-by: Alexandre Marquet <tb@a-marquet.fr>
[ci:skip-build]: already built successfully in CI
This fixes op6 display panel support, drm error spam in dmesg, and
various other minor things.
It also enabled dynamic debugging and ftrace.
Signed-off-by: Caleb Connolly <caleb@postmarketos.org>