If (a) the kernel command line parameters include PMOS_BOOTCHART2 and
(b) /sbin/bootchartd exists (i.e., the bootchart2 package has been
installed), run /sbin/bootchartd instead of /sbin/init.
Port bootchart2 to PostmarketOS, with three patches:
1. Modification of /etc/bootchartd.conf so that the collector
will stop after sshd has started.
2. Python 3.8 compatibility
3. Disable the interactive mode of pybootchartgui.
Use bootchart2 to profile system boot or a running system.
1. Add the bootchart2 package to your device.
2. Add the following kernel command line parameters: initcall_debug
printk.time=y quiet
3. To profile system boot
a. add the following kernel command line parameter: PMOS_BOOTCHART2.
This parameter causes mkinitfs to start /sbin/bootchartd instead of
/sbin/init. /sbin/bootchartd then starts /sbin/init.
b. (optional) modify EXIT_PROC in /etc/bootchartd.conf to define
when the collector is to stop.
c. Boot the system. Approximately 20 seconds after sshd starts
(if using the default value of EXIT_PROC), the collector
will exit.
4. To profile a running system
a. use the command '/sbin/bootchartd start' (as root) to start
profiling
b. use the command '/sbin/bootchartd stop' (as root) to stop
profiling
5. When the collector exits, /usr/bin/pybootchartgui will create
a visualization in /var/log/bootchart.png.
- Update to Linux 5.5-rc4
- Fix freeze/crash when accessing reserved memory on Samsung devices
- This happened e.g. when doing large eMMC writes
because the disk cache filled all available RAM.
- Fix SD card detection on samsung-serranovelte
- Disable UHS-1 modes since they appear to be broken in hardware
[ci:skip-build]: already built successfully in CI
Comment out the initstepslew line in /etc/chrony/chrony.conf.
initstepslew can delay booting while chrony sets the time. The
makestep 1 -1 line in the configuration also causes chrony to step
the time (whenever the offset is greater than 1s), making
initstepslew redundant.
Unfortunately, early firmware versions on MSM8916 (used together with
Android 4.4) are not capable of booting aarch64 kernels. MSM8916 was
Qualcomm's first 64-bit capable CPU, and back when it was introduced
Android did not even support aarch64 yet. So the aarch64 capable
hardware was usually used together with armv7 binaries.
To make things worse, this firmware is also signed (usually per-device),
making it (currently) impossible to update it without help from the manufacturer.
This means that we are currently unable to run mainline on devices
that never received an update to Android 5.0
(e.g. the Samsung Galaxy S4 Mini Value Edition).
One way to circumvent this limitation is to build mainline for armv7.
This works surprisingly well with some additional fixes.
Devices with this firmware limitation are still unable to use aarch64
binaries, but at least we can run mainline on them!
- Rebase on Linux 5.5-rc3
- Add display, touchscreen and GPIO keys for samsung-gt510wifi
- Add vibrator for wileyfox-crackling
- Zinitix touchscreen improvements (used in samsung-a3ulte)
- Upstreamed several patches
Current default is performance, and that is for sure not a great choice
for battery. We can experiment with ondemand as well, but based on docs,
conservative is recommended.
[ci:skip-build]: build takes too long
On some devices a getty should run on the serial console.
Configure the getty by setting the deviceinfo_getty variable. The
format is "<port>;<baud rate>". For example, "ttyS0;115200".
A post-installation trigger in postmarketos-base checks
/etc/deviceinfo, and modifies /etc/inittab if the device should run
a getty.
Fix the following error when installing postmarketos-ui-plasma-mobile:
ERROR: unsatisfiable constraints:
polkit-elogind-0.116-r1:
breaks: polkit-dev-0.116-r0[polkit=0.116-r0]
satisfies: polkit-kde-agent-1-5.17.3-r0[polkit-elogind]
.pmbootstrap-20191121.210534[polkit-elogind]
consolekit2-1.2.1-r1[polkit]
consolekit2-1.2.1-r1[so:libpolkit-gobject-1.so.0]
networkmanager-1.20.6-r0[so:libpolkit-agent-1.so.0]
networkmanager-1.20.6-r0[so:libpolkit-gobject-1.so.0]
polkit-qt-1-0.113.0-r0[so:libpolkit-agent-1.so.0]
polkit-qt-1-0.113.0-r0[so:libpolkit-gobject-1.so.0]
accountsservice-0.6.55-r0[so:libpolkit-gobject-1.so.0]
urfkill-0.5.0_git20170118-r0[so:libpolkit-gobject-1.so.0]
This is the reason, why the pmbootstrap qemu test (which performs a full
plasma mobile installation and checks running processes) check failed:
https://postmarketos.gitlab.io/-/pmbootstrap/-/jobs/357942365/artifacts/log_testsuite.txt
Enable armhf again, because "gnome-session" is available in Alpine for
armhf now.
[ci:skip-build]: already built successfully in CI. ollieparanoid made
sure that all packages build for armhf.
[ci:skip-vercheck]
Signed-off-by: David Heidelberg <david@ixit.cz>
It seems the the CFLAGS are not properly set in the CMakeLists.txt.
Cmake currently appends -std=gnu90 at the end of the CFLAGS, overriding
the earlier set -std=c99. Work around this with sed. Better fix is
welcome, this is a stop-gap solution to unbreak the build (which is
blocking build.postmarketos.org).
It's unmaintained both on our side and upstream. Nobody stepped up to
maintain it (https://gitlab.com/postmarketOS/pmaports/issues/372), so
let's drop it before it introduces security issues and compilation
problems.
ConfigFS USB attrs are customizable based on the `deviceinfo_usb_*` variables,
however some downstream kernels (e.g: msm-3.18) doesn't use configfs, instead
uses the traditional Android USB Gadget.
Based on `deviceinfo_usb_{idVendor/idProduct}` variables, we can change the USB
vendor and product.
So that on these devices, we can make it appear on USB bus as the correct USB
vendor/product ID, not "Google Inc. Nexus 4 (fastboot)"
Signed-off-by: Danct12 <danct12@disroot.org>
At the moment, a full file system check is forced even if the
file system is marked clean (i.e. it was properly unmounted the
last time it was used). On large file systems with slow I/O
(e.g. SD cards), this can take a significant amount of time.
Removing the -f option of e2fsck allows skipping the full
file system check if it is marked clean, speeding up the boot time.
Some devices' downstream kernels may have different RNDIS/functionfs
drivers (ex. QCRNDIS) that require different values for some
configfs gadget attributes. Make it possible to customize with
deviceinfo file from device- package.
The idea is that each device- package can optionally specify a
bunch of `deviceinfo_usb_*` variables to customize the way it is
visible on USB bus. The ability to override
`deviceinfo_usb_rndis_function` is essential to make downstream
sdm660 based device to appear on USB bus.
While at it, make `idVendor`, `idProduct` and `serialnumber` also
customizable. So that we can make, for example, PineTab appear on
USB bus as PineTab, not as "Google Inc. Nexus 4 (fastboot)".
Mainline U-Boot looks for the device tree blob in the "second" area
of the Android boot image (see https://patchwork.ozlabs.org/patch/1025211/).
Add an option "deviceinfo_bootimg_dtb_second" to place the device DTB there.
Currently, the USB networking setup using configfs does not configure
a "serialnumber" for the USB gadget. This means that an empty
serial number will be sent during USB enumeration.
This is usually not a problem, but it seems to cause issues under
special circumstances (on asus-me176c on one of my PCs).
The USB Gadget configfs documentation also suggests setting
the "serialnumber":
https://www.kernel.org/doc/Documentation/usb/gadget_configfs.txt
It can be any string, so we can just set it as "postmarketOS" like
the manufacturer.
The openrc service of lightdm has been moved to lightdm-openrc in
Alpine. Fix all UIs depending on lightdm, so their post-install script
does not fail with:
Executing postmarketos-ui-plasma-mobile-2-r6.post-install
* rc-update: service `lightdm' does not exist
Upgrade and add depends to static libraries to make it build again. When
the package was added initially, the static libraries were part of the
respective -dev packages.
The initramfs needs ext4 (to mount the rootfs) and usb_f_rndis
(to enable USB networking on devices that use USB configfs).
If these are built as modules, they need to be included in initramfs.
[ci:skip-build]: already built successfully in CI
apitrace have a GUI tool to inspect the trace dumped by apitrace tool.
This is built when a optional dependency of qt5 widgets and qt5 network
is satisfied. So build that as well.
current version merged was missing the zlib-dev and libpng-dev
dependency which would make apitrace build internal copies of them, and
that would fail due to missing patches for musl.
add dependencies zlib-dev and libpng-dev
The package was added with the initial Unity 8 packaging but even then
it seems that this package was never actually used.
Remove it because it no longer builds (some patches upstream might get
it building again).
[ci:skip-build]: already built successfully in CI
We have linux-postmarketos-qcom and linux-postmarketos-qcom-msm8916 now,
which is quite confusing. linux-postmarketos-qcom was originally added
for MSM8974 devices (e.g. Nexus 5) and its patches on top of mainline
are therefore quite focused on MSM8974.
linux-postmarketos-qcom-msm8916 on the other hand, has patches specific
to MSM8916. The two packages do not have any patch in common, therefore
merging the two would only cause signficiant overhead to coordinate
testing for devices of the two SoCs.
Therefore, it is better to keep them separate.
To avoid confusion, rename linux-postmarketos-qcom to
linux-postmarketos-qcom-msm8974 to make it clear that it is really
a close-to-mainline kernel for MSM8974 devices.
[ci:skip-build]: already built successfully in CI
5.17.x will be released soon with python3 changes, but before it is, for
now let's add this critical bugfix
[ci:skip-build]: already built successfully in CI
The sparse image tools (img2simg, simg2img, append2simg) are now
part of Alpine's android-tools package where they are continously
updated. (See https://github.com/nmeum/android-tools/pull/8)
Remove "libsparse" as depends from all packages because it is either:
- installed automatically by pmbootstrap when needed for
deviceinfo_flash_sparse="true"
(device-chuwi-hi10plus, device-htc-flounder, device-lg-bullhead,
device-semc-anzu, device-xiaomi-kenzo)
- seemingly unused(?)
(device-asus-z00t, linux-motorola-falcon, linux-motorola-peregrine)
[ci:skip-build]: already built successfully in CI
Phosh depends on gnome-session, which is currently not available in
Alpine for armhf. Fix the arch-lines to unblock building the binary
repository. [ci:skip-vercheck]
Fixes 'pmbootstrap flasher boot' for fastboot devices. This is probably
not used as often as 'pmbootstrap flasher flash_*', so I'm not enforcing
the upgrade by modifying pmaports.cfg this time.
We'll switch from whatever version of shellcheck is packaged in Debian
stretch to the newer version in Alpine edge in the next commit. Adjust
postmarketos-mkinitfs first, so it doesn't report any errors.
Also removed the explicit depends on telepathy-mission-control, as that
was already picked up by abuild with the soname
[ci:skip-build]: already built successfully in CI
This MR enable the new CONFIG_SND_SOC_NOKIA_RX51 kernel option which
replaces the old CONFIG_SND_OMAP_SOC_RX51, enabling the audio on the
N900 again (just tested).
[ci:skip-build]: won't finish in time
Rebuild all other GCC packages against mpfr4, so they don't fail with:
Error loading shared library libmpfr.so.4: No such file or directory (needed by /usr/gcc4/libexec/gcc/x86_64-alpine-linux-musl/4.9.2/cc1)
[ci:skip-build]: won't finish in time
Related: 2b32ed3a48786fa151cad8f920e5d9997bee94ed in Alpine's aports.git
* Added display in final pinephone to the kernel
* Added getty
* Use RGB led to signify booting status in u-boot
* Enable CONFIG_GPIO_SYSFS
[ci:skip-build]: won't finish in time
Seems like VIA/Wondermedia 8850 devices do not boot with the default
address. Add new deviceinfo_legacy_uboot_load_address variable to
allow setting a custom one.