Disable the hostname management feature of NetworkManager. This isn't
useful for the postmarketOS use case, where we set one hostname in
/etc/hostname via pmbootstrap and want it to be used. (It makes more
sense for normal PCs, which may just have the hostname 'localhost' at
the end of the installation and then not be unique in the network.)
NetworkManager is supposed to only change the hostname if it is set to
localhost, however this detection does not work properly in
postmarketOS. I've skimmed through sources of elogind, NetworkManager
and OpenRC a bit and found that in OpenRC the definitive location to put
the hostname is /etc/hostname. The other path, /etc/conf.d/hostname, is
just a fallback. Experiments show that setting something in
/etc/conf.d/hostname does prevent NM from setting a hostname offered by
the DHCP server, but it's not clear to my why this happens. I suspect
elogind + dbus. Disabling this feature we don't need anyway seems like a
good approach to me without wasting too much time here.
Previously it was assumed that with the counter and the sleep 0.1 the
process would take about 10 seconds to complete. On newer devices with
tens or even hundreds of partitions going through all partitions already
takes a significant amount of time, so change the logic to measure the
time elapsed instead.
This fixes DNS when a system is connected to a pmOS device as a hotspot.
The rule is in the default set of firewall rules, instead of a
subpackage.. I think this is OK. I don't believe anything should be
listening on port 53 except when the hotspot is running...
This directory is specified by the XDG Base Directory specification
(https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html).
Quoting:
> User-specific executable files may be stored in $HOME/.local/bin.
> Distributions should ensure this directory shows up in the UNIX $PATH environment variable, at an appropriate place.
So let's actually do this. This way also binaries installed by e.g. Pip
or Cargo will be usable out-of-the-box rather than that the user has to
figure out why it's not appearing in their PATH.
With Phosh 0.13.0, Logind is used without patches for the torch
as UPower doesn't want to handle this. Therefore, we can drop
the torch patches to UPower.
[ci:skip-build] already built successfully in CI
I believe everything here has been merged in master, so let's build that
for now (since it includes at least 1 additional fix not in the patches
that were dropped here)
Disable debug options and SMP, and remove support for other platforms.
Unixbench reports a speedup for process creation and syscalls, from
Process Creation 126.0 1043.8 82.8
System Call Overhead 15000.0 235497.3 157.0
to
Process Creation 126.0 1826.7 145.0
System Call Overhead 15000.0 421030.2 280.7
Updated the kernel to the latest version from LineageOS [1] (branch
`cm-14.1`), copied their configuration file and updated it according
to `pmbootstrap kconfig check`. Previous kernel was from `cm-12.1`
branch.
Fixed firmware package. Switched firmware source to
LineageOS/TheMuppets and install only the Wi-Fi firmware, but into the
correct directory. Previously all available firmware was simply copied
into wrong directories.
[1] https://github.com/LineageOS/android_kernel_htc_msm8960
[ci:skip-build] already built successfully in CI
plasma-nm-mobile is already a dep of plasma-phone-components
ofono is already a dep of plasma-phone-components
ofono-openrc already gets pulled in automatically through openrc and
ofono
networkmanager is already pulled in by plasma-nm-mobile
qt5-qtvirtualkeyboard has been replaced by maliit ages ago
[ci:skip-build] already built successfully in CI
- switch sources to official repo https://source.denx.de/u-boot
- use tag v2021.07
- extract patches from pine64-org
- enable DMA transfers from eMMC and mSD (u-boot from Megi)
[ci:skip-build] already built successfully in CI
The flavor string was naively parsed using sed by removing everything
before the first hyphen, this breaks for -rc kernels. Instead lets glob
/usr/share/kernel for the installed kernel flavor. This will also
prevent the kernel being flashed if the running kernel has a different
localversion than the updated one.
[ci:skip-build] already built successfully in CI
Allow users in group "input" to control the tm2-touchkey leds.
Additionally correcting the udev rule for disabling the tm2-touchkey leds by default.
[ci:skip-build] already built successfully in CI
Add ttyescape, a script and triggerhappy configuration to allow mobile device
users to access and use a shell without having to plug in to a computer.
One of the largest limitations with a mobile device is the lack of keyboard, for
mainstream OSs like Android and iOS, this is a non-issue as the whole OS stack
is built to automatically recover in case of a crash / hang, hiding the internal
state of affairs from users and making use of careful design to minimise the
impact. When bringing Linux to mobile, we carry not only the benefits of the
Linux desktop but also it's limitations. In the event that your desktop manager
goes haywire or hangs completely, or your graphics drivers get unhappy, the
ability to quickly jump to a tty and start killing bad behaving programs or
reset your display manager is one that most of us take for granted. But when
hit by similar errors on a mobile device there is no such recourse available,
users either have to reboot and hope that the issue doesn't occur again, or pull
out a laptop and pull up a shell (assuming ssh is enabled and the rndis
interface comes up).
ttyescape proposes to solve this issues by pieceing together several already
available tools, notably:
- triggerhappy, a tool used to perform actions when
certain buttons or key combinations are pressed with no dependencies on the
display manager in use.
- fbkeyboard, a framebuffer keyboard for tty's, it
renders on top of the current tty and uses the device touchscreen as input.
This device runs on linux-postmarketos-rockchip which at the moment of
writing is 5.13.0 with (only) 6 patches applied, so close-to mainline.
I personally use 2 of these devices with postmarketOS installed daily as
my homeserver setup and it has worked really well. It's also a good
target to run Plasma Bigscreen on as a TV setupbox
gzip results in a boot.img that's too big (over 8 MB) for e.g.
samsung-i9300, so let's replace it with something that produces
smaller kernels. With this, the entire boot.img is 6,3 MB (down
from 8MiB, or 8.5458944 MB) which leaves plenty of space on the
8 MB partition and prevents the recovery from being overwritten
when this kernel is flashed.
Tested and works on samsung-i9300.
[ci:skip-build] already built successfully in CI
This provides a mobile-friendly music player in the default
installation which is something that's currently lacking.
[ci:skip-vercheck]: _pmb_recommends change doesn't need pkgrel bump
The networkmanager hotspot needs to have DHCP input enabled on the wifi
interfaces so the temporary dnsmasq instance can work. The
networkmanager backend is also switched to the nftables one so it can
create the ad-hoc hotspot forwarding/masquerade table.
Proper fix for the monospace fonts seen when postmarketos-ondev is
installed without also installing osk-sdl. This doesn't happen anymore
with pmbootstrap install --ondev, because it will always pull in osk-sdl
again for other reasons. However, since postmarketos-ondev is using this
font, let's directly depend on it instead of having it pulled in as side
effect of also having osk-sdl installed.
And extend bootloader CMDLINE per default, giving us the option to
change the CMDLINE both via the kernel config and from samsung's
S-BOOT shell.
Note: the default console in exynos_defconfig (which this config is
based on) is ttySAC1, but all midas devices uses ttySAC2, so set it to
ttySAC2 instead. Also remove all other variables. They are not needed,
and (at least) root=/dev/ram0 seem to prevent us from booting pmos.
[ci:skip-build] already built successfully in CI
When kernel variants were renamed in
69cd6ff843
these dtb vars were forgotten, making it impossible to boot a kernel
build with `pmbootstrap build linux-postmarketos-exynos4`, no dtb is
appended to the zImage and we get stuck on samsungs boot logo.