The mesa driver, which ends up in the installation image, needs to be known
before the installation is done (in other words: when running the qemu action,
it is to late as the image has already been generated). That's why one can
choose the Qemu mesa driver in `pmbootstrap init` now:
```
Device [qemu-amd64]:
Which mesa driver do you prefer for your Qemu device? Only select something other
than the default if you are having graphical problems (such as glitches).
Mesa driver (dri-swrast/dri-virtio) [dri-virtio]:
```
It is still possible to select `dri-swrast`, because `dri-virtio` may not work
in all cases, and that way we could easily debug it or experiment with other
mesa drivers (e.g. the "vmware" one, which is supported by mesa and Qemu).
Other changes:
* `pmbootstrap qemu` accepts a `--display` variable now, which passes the value
directly to `qemu`'s `display` option. It defaults to `sdl,gl=on` (@PureTryOut
reported that to work best with plasma mobile on his PC). `--display` and
`--spice` (which is still working) are mutually exclusive.
* Removed obsolete telnet port pass-through: We only use the debug telnet port
since osk-sdl has been merged.
* Add show-cursor to the Qemu command line, so it shows a cursor in X11
* Refactored the spice code (`command_spice` only returns the spice command,
because it has all necessary information already) and the spice port can be
specified on the commandline now (previously it was hardcoded in one place and
then always looked up from there).
* Start comments with capital letters.
* Keep the log on the screen a bit shorter (e.g. Qemu command is written to the
"pmbootstrap log" anyway, so there's no need to display it again).
* linux-postmarketos-stable: Adjust kernel configs
x86_64, armhf: enable as modules:
CONFIG_DRM_VIRTIO_GPU, CONFIG_VIRTIO_PCI, CONFIG_VIRTIO_BALLOON
aarch64: all 3 options were already enabled as built-in (no change)
* Set '-vga virtio' for mesa-dri-virtio
* pmbootstrap init: Generate new port device- and linux-package
* adds `pmbootstrap aportgen device-*` and
`pmbootstrap aportgen linux-*`
* ask for confirmation when selecting a non-existing device
* generate the packages directly from init
* refactor aportgen code
* fixed some easy things in the linux- APKBUILD (more to come in
follow-up PRs!)
Testing:
* Test all questions to the user from pmb.config.init and pmb.aportgen.device
(except for the timezone question, because we would need to monkeypatch the
os.path.exists() function, which messes up pytest, so we'd need to refactor
the timezone function to be more testsuite friendly first)
* Run the device wizard in a testcase a few times and check the output, that
pmbootstrap.aportgen.device and pmbootstrap.aportgen.linux create by parsing
the resulting APKBUILDs and deviceinfo and checking its contents.
* Build the generated device package once in the same testcase
Thanks a lot to @drebrez for all the help with this one:
<https://github.com/postmarketOS/pmbootstrap/pull/821>
See also the updated porting guide:
<https://wiki.postmarketos.org/wiki/Porting_to_a_new_device>
This caused builds to fail with a modern GCC at least once, and while it originally was meant as
security feature by Qualcomm, "it is unsupported by Qualcomm, and opens up to a wide range
of potential attack surfaces that has not been audited by anyone."
* XFCE4/Hildon: Log to syslog, see also:
<https://github.com/postmarketOS/pmbootstrap/pull/762>
* Fix XFCE4 didn't start in qemu-amd64, because it required
libEGL.so.1, which is provided by mesa-egl. This is a dependency
of device-qemu-amd64-x11 now. (It worked for Hildon and Weston,
because they pull mesa-egl in with other packages.)
@drebrez deserves much credit for this one for all the testing,
bisecting and for fixing everything. Thank you very much!
---
* devices which need a custom weston.ini ship it with a install_if
subpackage, so it only gets installed when weston is installed. This
sounds complicated, but is actually pretty clean in the APKBUILD.
* postmarketos-ui-weston: has a weston.ini.default, which enables
xwayland and uses fbdev as backend (because that's what most
devices use!). It defaults to the weston.ini.default if there is no
weston.ini (as installed by the device package).
* changed spaces to tabs for consistency, general minor refactoring of
device-APKBUILDs
Placing such files in /tmp/ is an unnecessary attack vector, as
@pavelmachek showed. All udev rules, which mentioned /tmp/weston.log
do not contain any path anymore.
Logs can be read with:
logread -f /var/log/messages | grep weston
See also: <https://wiki.alpinelinux.org/wiki/Syslog>
* Rebase on 4.11.12 kernel upstream
I took the relevant patches from https://git.linaro.org/people/john.stultz/flo.git/log/?h=flo-v4.11 and
compiled with upstream kernel.org 4.11.12 kernel. 4.12rc1 and later have not fixed yet problems
with freedreno gpu hanging. So we now have an upstream source for the kernel and John Stultz
patches separately.
Set this to y as it does not seem to have problems in Alpine - CONFIG_HW_RANDOM_MSM=y
Enable USB OTG in kernel. I still need to find out how to enable it in Alpine.
* Use pkgver instead of hash and other changes
* Add dependencies for X11 and osk
Added pointercal. Added dependencies so Xfce would work out of the box. Made changes in
90-android-touch-dev.rules as they are needed for proper X11 touchscreen calibration.
* postmarketos-base: Execute setup-udev, remove mosh from dependencies
* Run setup-udev [0], because that is what `setup-xorg-base` does [1].
It configures more than one OpenRC service and it also messes with the
runlevels. Only after running that, Hildon works (tested in Qemu).
[0]: 2fbea8b8da/main/eudev/setup-udev
[1]: 06300dd483/setup-xorg-base.in (L25)
* Remove `mosh` from `postmarketos-base` dependencies. I don't think anyone
uses it right now, and it's easy to add custom packages in `pmbootstrap init`
nowadays.
* Minor style changes in the `APKBUILD`
* [rx51] Remove udev-trigger service start
* Package Broadcom Wi-Fi firmware from AOSP
This uses a mirror of AOSP's platform/hardware/broadcom/wlan repo at version
android-8.0.0_r12 (6c8ef5b600cec5d36a54a0276fe8c97b9ab8d6bb).
This is needed as Nexus 6P uses a BCM4358, and the blob available in Alpine's
linux-firmware package is old and vulnerable to Broadpwn. See #513.
* device: angler: enable Wi-Fi and graphics output
Changes:
- Set resolution on bootup
This is copied from the Nexus 5's init script.
- Add Wi-Fi calibration file and change firmware path
This is also based on the Nexus 5's implementation.
- Enable CONFIG_VT and NFS in the kernel
- Explicitly use identity touchscreen calibration
- Rename the touchscreen udev rules
- Enable msm-fb-refresher
For some reason the ofono rules don't always work for the N900's modem.
This picks out the relevant parts of that rule and seems to successfully
set up the modem device every time now.
* pmb.helpers.run: support running processes in background
* enable QXL driver support in the linux kernel configurations so
that we can also use SPICE to connect to the VM.
QXL is a paravirtual graphics driver with 2D support
The SPICE project aims to provide a complete open source solution for remote
access to virtual machines in a seamless way.
Both DRM_QXL and DRM_BOCHS are enabled as modules.
According to [1], on Linux guests, the qxl and bochs_drm kernel modules
must be loaded in order to gain a decent performance
* qemu: add new option --spice to connect to VM using a SPICE client
If specified, 'pmbootstrap qemu' will look for some SPICE client in the
user's PATH and run qemu using the QXL driver.
Currently supported spice clients are 'spicy' and 'remote-viewer' but
adding support for more clients can be easily done.
qemu with qxl support will run on port 8077/tcp, which doesn't belong to
any well-known service and represents 'PM' in decimal.
References:
[0] https://www.linux-kvm.org/page/SPICE
[1] https://wiki.archlinux.org/index.php/QEMU#qxl
[2] https://wiki.archlinux.org/index.php/QEMU#SPICE
[3] https://github.com/postmarketOS/pmbootstrap/issues/453 (partially fixed)
* firmware-asus-flo: packaged all flo firmware
* device-asus-flo: depend on firmware-asus-flo package
* default android wifi config
* Add wifi and freedreno support
* change to console=ttyMSM0 - as per https://dflund.se/~triad/krad/nexus7-flo/
* Add current kernel config as it is currently working with wifi.
* Increase pkgrel to account for changes in the kernel config.
Quite a few things use dbus (plasma, hildon, ofono, connman,
networkmanager, etc) that I think it makes sense to just have this
started by default in pmOS rather than have every device package
implement this on their own.
In case someone shows up with a use-case, where dbus by default
is not desired, please speak up. Possible solutions are in #628.