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.sh161
1 files changed, 38 insertions, 123 deletions
diff --git a/config.sh b/config.sh
index f232f48..c431bcb 100755
--- a/config.sh
+++ b/config.sh
@@ -58,7 +58,7 @@ if [[ "$kiwi_profiles" != *"Container"* ]] && [[ "$kiwi_profiles" != *"FEX"* ]]
## "devicetree /dtb-$kver/$GRUB_DEVICETREE". /etc/kernel/devicetree does
## nothing here: /boot/<machine-id> does not exist, so kernel-install runs
## with layout=other and 90-loaderentry.install (which would read it) bails.
- echo "GRUB_DEVICETREE=qcom/x1p42100-microsoft-sp12in.dtb" >> /etc/default/grub
+ echo "GRUB_DEVICETREE=qcom/x1p42100-microsoft-surface-pro-12-inch.dtb" >> /etc/default/grub
## Upstream sets menu_auto_hide=1 + boot_indeterminate=1 here for Disk images
## to match anaconda's behaviour. Deliberately not done for Surface Pro 12":
## with the menu hidden, GRUB counts down GRUB_TIMEOUT against a blank screen
@@ -436,45 +436,18 @@ 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 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.
-#
-# One name throughout, upstream's: this block, GRUB_DEVICETREE above, both
-# kernel-install plugins, /etc/kernel/devicetree, and the ISO grub template.
-#
-# The module-tree and /boot copies plus the /boot/dtb symlink are what that hook
-# and grubby's 10-devicetree.install would normally produce, done up front here
-# because kernel-install does not run again during this build -- without the
-# 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
-# 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"
-install -Dm644 "$dtb_src" "/boot/dtb-$kver/qcom/$dtb_name"
-# dtbs_install ships every arm64 device tree, ~1000 boards, and the module tree
-# goes straight into the image filesystem. This image targets exactly one board,
-# so drop the rest -- the same objection that rules out kernel-uki-dtbloader in
-# components/boot.xml. Only affects the image; a later kernel-surface update on
-# the installed system restores the full tree.
-find "/usr/lib/modules/$kver/dtb" -mindepth 1 \
- \! -path "/usr/lib/modules/$kver/dtb/qcom" \
- \! -name "$dtb_name" \
- -delete
+# /etc/surface-dtb is the master copy 60-surface-dtb.install re-stages into each
+# new kernel's module tree on update. The other two are what that hook and
+# 10-devicetree.install would normally produce, done up front here because
+# kernel-install never runs during this build -- without the module-tree copy,
+# anything keyed off /usr/lib/modules/$kver/dtb (including the anaconda
+# post-script) finds nothing and silently does nothing.
+install -Dm644 /tmp/harrisonvanderbyl/surface-pro-12-inch-linux/boot/dtb \
+ "/etc/surface-dtb/x1p42100-microsoft-surface-pro-12-inch.dtb"
+install -Dm644 /tmp/harrisonvanderbyl/surface-pro-12-inch-linux/boot/dtb \
+ "/usr/lib/modules/$kver/dtb/qcom/x1p42100-microsoft-surface-pro-12-inch.dtb"
+install -Dm644 /tmp/harrisonvanderbyl/surface-pro-12-inch-linux/boot/dtb \
+ "/boot/dtb-$kver/qcom/x1p42100-microsoft-surface-pro-12-inch.dtb"
# /boot/dtb -> dtb-$kver is what grubby's 10-devicetree.install maintains, and
# what the boot loader entry's devicetree path resolves through
ln -sfn "dtb-$kver" /boot/dtb
@@ -534,7 +507,7 @@ fi
# documented way to disable a plugin: a /dev/null symlink of the same name).
mkdir -p /etc/kernel/install.d
ln -sf /dev/null /etc/kernel/install.d/51-dracut-rescue.install
-# kernel-surface's %posttrans scriptlet already ran kernel-install once, before
+# kernel-core's own package scriptlet already ran kernel-install once, before
# this mask existed (root overlay lands after package install), leaving a
# stale rescue image behind. Remove it now so kiwi's systemd_boot EFI-FAT-image
# step doesn't try to cram it in too.
@@ -631,97 +604,39 @@ dnf install -y alsa-ucm-utils
install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/hexagonrpc.service \
/etc/systemd/system/hexagonrpc.service
+install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/iio-sensor-proxy.service \
+ /etc/systemd/system/iio-sensor-proxy.service
+install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/udev/rules.d/61-sensors-surface-pro-12-inch.rules \
+ /etc/udev/rules.d/61-sensors-surface-pro-12-inch.rules
+systemctl enable hexagonrpc.service iio-sensor-proxy.service
-# iio-sensor-proxy keeps the unit its own build installed, and gets only the
-# ordering against hexagonrpcd added on top. The drop-in is dead weight if that
-# unit is not there, so check rather than let it pass silently.
-test -f /usr/lib/systemd/system/iio-sensor-proxy.service
-install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/iio-sensor-proxy.service.d/60-surface-pro-12-inch.conf \
- /etc/systemd/system/iio-sensor-proxy.service.d/60-surface-pro-12-inch.conf
-
-# Only hexagonrpcd is enabled statically. iio-sensor-proxy is started through
-# its D-Bus name by whatever asks for net.hadess.SensorProxy, which then pulls
-# 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
-# ov13858 and the front ov02c10, so a media-ctl unit only fights it: pinning
-# csid0 to the rear sensor at boot leaves the front camera disconnected until
-# something re-links it, and the formats such a unit has to guess are what made
-# the old wireupcameras.service die with "Unable to setup formats: Invalid
-# argument (22)" on every boot.
-#
-# v4l-utils stays, for inspecting the graph by hand -- media-ctl -p, and
-# v4l2-ctl --stream-mmap on the RDI node to check the sensor below libcamera.
+# Rear camera pipeline (msm/camss) needs /dev/media0, which only exists once the
+# real silicon probes on the booted system -- install the wiring but do not run
+# it here, there is no camera hardware in the KIWI build chroot.
dnf install -y v4l-utils
+install -Dm755 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/local/bin/wireupcameras.sh \
+ /usr/local/bin/wireupcameras.sh
+install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/wireupcameras.service \
+ /etc/systemd/system/wireupcameras.service
+systemctl enable wireupcameras.service
-# The front ov02c10 needs a libcamera that knows its analogue gain model and
-# black level; upstream libcamera has neither, and there is no plugin mechanism
-# for them, but kernel-sp12in repo offers libcamera with supported models.
-# Pulled in by name because it would otherwise only arrive as a dependency,
-# which makes it easy to lose without noticing.
-dnf install -y libcamera libcamera-ipa
-
-libcamera_nevra=$(rpm -q libcamera)
-case "${libcamera_nevra}" in
- *.sp12in*) printf 'Using %s\n' "${libcamera_nevra}" ;;
- *)
- printf 'Error: %s is Fedora'"'"'s libcamera, not the sp12in rebuild.\n' \
- "${libcamera_nevra}" >&2
- printf 'Fedora has probably bumped the release past the rebuild; rebase\n' >&2
- printf 'patches/ in ../libcamera and tag a new release suffix.\n' >&2
- exit 1
- ;;
-esac
-
-# Hardware video decode needs firmware this image is not allowed to carry. The
-# qcom/vpu/vpu30_p1_s7.mbn in linux-firmware is the same codec signed with
-# Qualcomm's SecTools test keys, which a retail Surface's TrustZone rejects, and
-# the production-signed build exists only inside Microsoft's Surface driver
-# package, under terms that grant no redistribution right.
-#
-# So the image ships the means rather than the blob: a script that copies it out
-# of a Windows install the owner already has a licence for, and a unit that runs
-# that once on a dual-boot machine. Where Windows is gone, the script says which
-# driver pack to download and how to point it at one.
-dnf install -y msitools
-install -Dm755 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/usr/local/bin/surface-video-firmware.sh \
- /usr/local/bin/surface-video-firmware.sh
-install -Dm644 /tmp/SayaAndy/surface-pro-12-inch-linux-fedora/etc/systemd/system/surface-video-firmware.service \
- /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
-
-# 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
+ /etc/systemd/login.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
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 /etc/yum.repos.d
+restorecon -Rv /usr /lib /etc/systemd /etc/dconf /etc/udev/rules.d
#======================================
# Set the WSL name for ELN