5.1 KiB
5.1 KiB
description, tags, last_updated
| description | tags | last_updated | |||||
|---|---|---|---|---|---|---|---|
| Decision to dual-install linux612 (LTS) + linux70 (stable) kernels and migrate NVIDIA from the pinned 575xx branch to the mainline 595.71 branch to prepare the workstation for Hyprland/Wayland. |
|
2026-05-18 |
ADR 2: Kernel and NVIDIA Driver Strategy for Hyprland/Wayland
Status
Accepted (2026-05-18)
Context
The workstation runs Manjaro Linux on AMD Ryzen 7 2700X with an NVIDIA GeForce GTX 1050 Ti (Pascal, GP107) driving three monitors. The next infrastructure plan switches the desktop from KDE/X11 to Hyprland on Wayland. Two preconditions must hold before that switch is safe:
- DRM/atomic and NVIDIA explicit-sync support — Hyprland on NVIDIA relies on driver-level explicit sync (introduced in 555.x and matured through 575.x and 595.x). Without it, flickering and missed vblanks are very common on Pascal+multi-monitor.
- Matching kernel modules — Manjaro ships pre-built
*-nvidiamodules pinned to a singlenvidia-utilsversion. Mixing575xxuserspace with a kernel that only has595.71modules (or vice versa) breaks the driver at the next kernel boot.
The starting point at the time of this ADR:
| Item | Version |
|---|---|
| Running kernel | linux612 6.12.77-1 |
| NVIDIA driver | 575.64.05-3 (575xx branch) |
| NVIDIA kernel module pkg | linux612-nvidia-575xx 575.64.05-31 |
linux70 available in repo |
7.0.3-1 |
linux70-nvidia available |
595.71.05-0.1 |
linux612-nvidia (mainline) |
595.71.05-2 |
Decision
- Run two kernels side by side.
- Keep
linux612(LTS 6.12.x) installed as the fallback boot entry. - Install
linux70(stable 7.0.x) and select it as the daily-driver kernel via GRUB at the next reboot.
- Keep
- Migrate NVIDIA from the
575xxbranch to mainline595.71in one atomic pacman transaction so both kernels have matching modules:- Remove:
linux612-nvidia-575xx,nvidia-575xx-utils,lib32-nvidia-575xx-utils,nvidia-575xx-settings. - Install:
linux612-nvidia,linux70-nvidia,nvidia-utils,lib32-nvidia-utils,opencl-nvidia,nvidia-settings.
- Remove:
- Do not change
GRUB_DEFAULTprogrammatically. The user pickslinux70from the GRUB menu on first boot. Iflinux70misbehaves, the next reboot is one menu selection away from the proven LTS path. - Encapsulate everything in an idempotent Ansible role
(
ansible/roles/system-upgrade/) that runs beforecommon,dev-toolsandmaintenance. It is invoked stand-alone with--tags system-upgradeand is safe on every subsequent run.
Rationale
- LTS as a parachute. 6.12 is a Linux LTS series with a multi-year support window. Keeping it installed makes the migration reversible by one keystroke in GRUB.
- 7.0 as the daily driver. The 7.0 series brings the maturest DRM/atomic-modeset and NVIDIA explicit-sync paths that Hyprland on Pascal needs to avoid flicker on multi-monitor.
- Mainline 595.71 over pinned 575.64.05. Manjaro builds
linux70-nvidiaonly againstnvidia-utils=595.71.05, so the 575xx branch is not an option for the new kernel. Pascal (GP107) is fully supported by 595.x, and 595.x ships the latest explicit-sync / modesetting fixes upstream. - Single atomic transaction. Removing the old branch and installing the new one in one pacman call (with the removal list narrowed to packages that are actually installed) keeps the GPU-driver window to roughly one second of cache I/O on a local SSD.
- Idempotent role over shell script. Matches the existing
common/dev-tools/maintenancepattern, supports--check, and re-running after success is a true no-op (validated by gating every mutating task onpacman_syu.changed or nvidia_migration.changed).
Consequences
- Two kernels on
/partition. Roughly +120 MB forlinux70plus ~50 MB forlinux70-nvidia. The role pre-flight refuses to start if free space on/is below 5 GiB. mhwdprofile referencing575xxstays as-is. Only the kernel-boundlinux612-nvidia-575xxand matching userspace are swapped;mhwd-nvidia-575xxstays installed so MHWD's profile listing remains consistent. A future cleanup can switch the MHWD profile tovideo-nvidiaoncelinux70is verified.- Manual reboot required. The role never reboots the machine; it
ends with a clear notice instructing the user to boot into
linux70from GRUB before applying the next (Hyprland) playbook. - Future kernel pin bumps are one-line changes in
ansible/vars/main.yml(kernel_packages/nvidia_kernel_moduleslists).
References
- Hyprland NVIDIA notes (wiki.hypr.land/Nvidia): explicit sync available from driver ≥555 and required for tear-free Wayland.
docs/tech/hardware-inventory.md(NVIDIA section).ansible/roles/system-upgrade/tasks/main.yml.- ADR 1:
docs/adr/0001-use-ansible-for-configuration.md— anchors the "Ansible-first" guardrail this decision follows.