- Add nvidia/nvidia-dkms/nvidia-libs-32bit/nvidia-vaapi-driver to niri live and installed profiles; wireless-regdb and sof-firmware to all profiles (fixes regulatory.db and SOF firmware dmesg errors) - iso/postsetup-nvidia.sh: new mklive -x hook that re-runs dracut inside the rootfs chroot after the overlay is applied; ensures the squashfs initramfs includes nvidia.ko and omits nouveau.ko at build time — no driver install needed at runtime (fixes /run tmpfs overflow that was killing wireplumber by corrupting D-Bus sockets) - Both ISO inner build scripts gain -x postsetup-nvidia.sh and the nonfree repo flag so nvidia packages resolve correctly - niri config: wireplumber started via supervisor loop (waits for PipeWire socket, auto-restarts on crash) replacing the one-shot exec — survives any D-Bus or pipewire disruption - build-niri-live-iso.sh: NVIDIA modprobe blacklist-nouveau.conf, btusb-quirks.conf, modules-load.d/nvidia.conf, dracut/10-nvidia.conf, Xorg intel/nvidia configs, prime-run helper, elogind run script loop guard, timezone Europe/Zurich overlay, updated BOOT_CMDLINE - build-live-iso.sh: same NVIDIA + timezone + sound udev rule overlays; live-setup.sh timezone and audio group fix - installer/lib/grub.sh: GRUB_CMDLINE_LINUX_DEFAULT gains nvidia-drm.modeset=1 rd.driver.blacklist=nouveau btusb.enable_autosuspend=0 - installer/lib/postinstall.sh: configure_nvidia_prime() adds blacklist-nouveau.conf, btusb-quirks.conf, dracut omit_drivers nouveau, modules-load.d with all four nvidia modules
82 lines
2.8 KiB
Bash
Executable File
82 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# void-mklive postsetup hook (-x flag).
|
|
#
|
|
# Runs AFTER copy_include_directories (overlay applied) but BEFORE
|
|
# generate_initramfs (boot initramfs). The xbps initramfs-regenerate trigger
|
|
# fires during install_packages — BEFORE the overlay — so the squashfs rootfs's
|
|
# own /boot/initramfs-KVER.img is missing our etc/dracut.conf.d/10-nvidia.conf.
|
|
#
|
|
# This script re-runs dracut inside the rootfs chroot for every installed kernel
|
|
# so the squashfs initramfs:
|
|
# • includes nvidia.ko (add_drivers from 10-nvidia.conf)
|
|
# • excludes nouveau.ko (omit_drivers from 10-nvidia.conf)
|
|
#
|
|
# $1 = absolute path to the rootfs directory being built.
|
|
|
|
set -euo pipefail
|
|
|
|
ROOTFS="$1"
|
|
|
|
if [[ ! -d "$ROOTFS/usr/lib/modules" ]]; then
|
|
echo "[postsetup-nvidia] no modules dir — skipping"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ ! -x "$ROOTFS/usr/bin/dracut" ]]; then
|
|
echo "[postsetup-nvidia] dracut not in rootfs — skipping"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ ! -f "$ROOTFS/etc/dracut.conf.d/10-nvidia.conf" ]]; then
|
|
echo "[postsetup-nvidia] WARNING: 10-nvidia.conf not found in rootfs overlay — skipping"
|
|
exit 0
|
|
fi
|
|
|
|
# Mount pseudo-filesystems needed by dracut inside the chroot.
|
|
_umount_pseudo() {
|
|
for f in dev proc sys; do
|
|
[[ -d "$ROOTFS/$f" ]] && \
|
|
{ umount -R -f "$ROOTFS/$f" 2>/dev/null || umount -R -l "$ROOTFS/$f" 2>/dev/null || true; }
|
|
done
|
|
}
|
|
trap _umount_pseudo EXIT
|
|
|
|
for f in dev proc sys; do
|
|
mkdir -p "$ROOTFS/$f"
|
|
mount --rbind "/$f" "$ROOTFS/$f"
|
|
done
|
|
|
|
echo "[postsetup-nvidia] regenerating initramfs with nvidia config"
|
|
echo "[postsetup-nvidia] 10-nvidia.conf:"
|
|
sed 's/^/ /' "$ROOTFS/etc/dracut.conf.d/10-nvidia.conf"
|
|
|
|
found=0
|
|
for kdir in "$ROOTFS/usr/lib/modules"/*/; do
|
|
[[ -d "${kdir}/kernel" ]] || continue
|
|
kver="${kdir##*/}"
|
|
found=1
|
|
|
|
# Verify nvidia.ko is present for this kernel version.
|
|
nv_ko=$(find "$ROOTFS/usr/lib/modules/$kver" -name 'nvidia.ko' -o -name 'nvidia.ko.zst' 2>/dev/null | head -1)
|
|
if [[ -z "$nv_ko" ]]; then
|
|
echo "[postsetup-nvidia] WARNING: nvidia.ko not found for kernel $kver — initramfs regeneration skipped"
|
|
continue
|
|
fi
|
|
echo "[postsetup-nvidia] kernel $kver: nvidia.ko at ${nv_ko#"$ROOTFS"}"
|
|
|
|
echo "[postsetup-nvidia] running dracut --force for $kver ..."
|
|
chroot "$ROOTFS" env -i PATH=/usr/sbin:/usr/bin:/sbin:/bin \
|
|
/usr/bin/dracut --force \
|
|
"/boot/initramfs-${kver}.img" \
|
|
"$kver" 2>&1 | grep -v '^$' | tail -5 || {
|
|
echo "[postsetup-nvidia] WARNING: dracut failed for $kver — continuing"
|
|
continue
|
|
}
|
|
|
|
sz=$(ls -lh "$ROOTFS/boot/initramfs-${kver}.img" 2>/dev/null | awk '{print $5}')
|
|
echo "[postsetup-nvidia] done: /boot/initramfs-${kver}.img ($sz)"
|
|
done
|
|
|
|
[[ "$found" -eq 1 ]] || echo "[postsetup-nvidia] WARNING: no kernels found in rootfs"
|
|
echo "[postsetup-nvidia] complete"
|