aboutsummaryrefslogtreecommitdiffci
path: root/config.sh
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'config.sh')
-rwxr-xr-xconfig.sh50
1 files changed, 34 insertions, 16 deletions
diff --git a/config.sh b/config.sh
index ef17771..f232f48 100755
--- a/config.sh
+++ b/config.sh
@@ -436,10 +436,13 @@ fi
# Surface Pro 12" customizations
#--------------------------------------
+install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/yum.repos.d/kernel-sp12in.repo \
+ /etc/yum.repos.d/kernel-sp12in.repo
+
# Device tree. kernel-surface compiles the patched dts in-tree and installs the
-# result twice: into its own module tree (dtb/qcom, from dtbs_install) and
-# version-independently into /usr/lib/surface-dtb. The latter is the master copy
-# 60-surface-dtb.install re-stages into each new kernel's module tree on update,
+# result twice: into its own module tree (dtb/qcom, from dtbs_install) and into
+# /usr/lib/surface-dtb/<kver>/. The latter is the master copy
+# 60-surface-dtb.install re-stages into a kernel that shipped without one,
# which is the only reason the image no longer carries a prebuilt blob of its
# own -- the description installs kernel-surface by name and <ignore>s Fedora's
# kernel packages, so the package is always there.
@@ -453,9 +456,12 @@ fi
# module-tree copy, anything keyed off /usr/lib/modules/$kver/dtb (including the
# anaconda post-script) finds nothing and silently does nothing.
dtb_name=x1p42100-microsoft-sp12in.dtb
-dtb_src="/usr/lib/surface-dtb/$dtb_name"
-if [[ ! -f "$dtb_src" ]]; then
- printf 'Error: %s is missing, so kernel-surface (built from ../kernel-surface) is not installed.\n' "$dtb_src" >&2
+# One directory per kernel version under /usr/lib/surface-dtb: kernel-surface is
+# installonly, so nothing it owns can be version-unqualified. Only one release is
+# ever installed at this point in the build, but glob anyway rather than assume.
+dtb_src=$(ls -1 /usr/lib/surface-dtb/*/"$dtb_name" 2>/dev/null | sort -V | tail -n1)
+if [[ -z "$dtb_src" ]]; then
+ printf 'Error: no %s under /usr/lib/surface-dtb/, so kernel-surface (built from ../kernel-surface) is not installed.\n' "$dtb_name" >&2
exit 1
fi
install -Dm644 "$dtb_src" "/usr/lib/modules/$kver/dtb/qcom/$dtb_name"
@@ -638,6 +644,22 @@ install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system
# hexagonrpc.service in through the drop-in above.
systemctl enable hexagonrpc.service
+# Fedora's SELinux policy has no qipcrtr_socket permissions for
+# iiosensorproxy_t; the libssc backend needs them to probe the QRTR bus, and
+# without them the daemon exits with "No sensors or missing kernel drivers".
+# Compile and install the local module that grants them (see the .te for
+# details). checkmodule/semodule_package come from checkpolicy; it stays
+# installed because removing it takes policycoreutils-python-utils
+# (semanage, audit2allow) with it.
+dnf install -y checkpolicy
+install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/local/share/selinux/iio-qipcrtr.te \
+ /usr/local/share/selinux/iio-qipcrtr.te
+checkmodule -M -m -o /usr/local/share/selinux/iio-qipcrtr.mod \
+ /usr/local/share/selinux/iio-qipcrtr.te
+semodule_package -o /usr/local/share/selinux/iio-qipcrtr.pp \
+ -m /usr/local/share/selinux/iio-qipcrtr.mod
+semodule -i /usr/local/share/selinux/iio-qipcrtr.pp
+
# Cameras (msm/camss). Nothing has to be wired up at boot. libcamera's "simple"
# pipeline handler claims qcom-camss and builds the media graph itself in
# configure(), including flipping the csiphy -> msm_csid0 link between the rear
@@ -687,23 +709,19 @@ install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system
/etc/systemd/system/surface-video-firmware.service
systemctl enable surface-video-firmware.service
-# Suspend on Snapdragon is still very unstable. This is the reason why
-# 'mem_sleep_default=s2idle' is set explicitly in the cmdline as 'deep' mode
-# does not function at all.
-# Even then, suspending via gnome settings daemon results in hard freeze.
-# This is why:
-# logind behavior is kept intact with suspend behavior.
-# gnome default power button behavior was replaced with 'interactive'.
install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/logind.conf.d/60-surface-power-key.conf \
/etc/systemd/logind.conf.d/60-surface-power-key.conf
-install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dconf/db/local.d/00-power-button \
- /etc/dconf/db/local.d/00-power-button
+
+# Ambient light sensor seems to go nuts after I fixed iio-sensor-proxy. Turning
+# it off for now.
+install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dconf/db/local.d/00-als \
+ /etc/dconf/db/local.d/00-als
install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/dconf/profile/user \
/etc/dconf/profile/user
dconf update
-restorecon -Rv /usr /lib /etc/systemd /etc/dconf /etc/udev/rules.d
+restorecon -Rv /usr /lib /etc/systemd /etc/dconf /etc/udev/rules.d /etc/yum.repos.d
#======================================
# Set the WSL name for ELN