Internet, Linux & IT

Gentoo Linux: Secure Boot mit GRUB und SEDUTIL

Bisher war Secure Boot kein Thema für mich. Sowohl Gentoo Linux als auch Windows 11 lassen sich im Dual Boot Setup mit dem Bootloader GRUB problemlos bei deaktiviertem Secure Boot starten.

Windows 11 verwende ich grundsätzlich nur für einige wenige Computerspiele, die nicht unter Linux funktionieren. Hauptursache sind meistens die Anti-Cheat-Komponenten, welche die Linux-Kompatibilität verhindern. Nun haben die ersten Spielestudios im Kampf gegen Cheater angekündigt, dass sie zukünftig ein aktiviertes Secure Boot für ihre Spiele voraussetzen werden. Und so wurde dieses Thema plötzlich für mich relevant.

Die Problematik

Secure Boot soll die Systemsicherheit erhöhen, indem nur kryptographisch signierte Programmteile vom Bios bzw. UEFI geladen werden. Und das durchgehend. In meinem Fall muss eine Kette von mindestens 3 Teilen berücksichtigt und signiert werden:

  1. Der Kernel im Pre Boot Authorization System von SEDUTIL zum entsperren der per TCG OPAL Hardwareverschlüsselung gesperrten NVME-Speichermedien
  2. Der Bootloader GRUB zur Auswahl des Betriebssystems
  3. Der Kernel vom eigentlichen Gentoo Linux System bzw. vom Windows System

1. Vorbereitung im BIOS

Im BIOS bleibt Secure Boot zunächst deaktiviert. Hier beim ASUS Bios/UEFI ist dazu die Option "OS Type" auf den Wert "Other OS" gesetzt.

Allerdings muss Secure Boot in den Setup Modus versetzt werden, damit SBCTL (siehe Schritt 2) die Schlüssel installieren kann. Hier im ASUS Bios/UEFI setzt man dazu die Option "Secure Boot Mode" auf "Custom" und führt anschließend im Untermenü "Key Management" die Operation "Clear Secure Boot Keys" aus.

ASUS Bios: Secure Boot deaktivieren und Secure Mode auf Custom setzten

ASUS Bios: Clear Secure Boot Keys ausführen

2. Vorbereitungen in Linux

Nachdem die Vorbereitungen im Bios abgeschlossen sind, kann das Linux System mit dem Tool SBCTL für Secure Boot vorbereitet werden. Das geht mit folgenden Befehlen:

linux ~ # sbctl status
Installed: ✘ Sbctl is not installed
Setup Mode: ✘ Enabled
Secure Boot: ✘ Disabled
linux ~ # sbctl create-keys
Created Owner UUID 0444abb2-a0fe-4891-bf55-02c94d0a90e1
Creating secure boot keys...✔
Secure boot keys created!
linux ~ # sbctl enroll-keys -m
Enrolling keys to EFI variables...
With vendor keys from microsoft...✔
Enrolled keys to the EFI variables!

Weitere Informationen zu diesem Vorgehen siehe: Gentoo Wiki: sbctl

3. Installieren und signieren von GRUB für Secure Boot

Damit GRUB bei aktiviertem Secure Boot korrekt booten kann, ohne dass alle GRUB- und Kernel-Module signiert werden müssen, muss es auf eine bestimmte Art und Weise installiert und anschließend signiert werden. Das Signieren eines bereits vorhanden GRUB EFI Images ist ggf. nicht ausreichend, da ein dynamisches Nachladen von nicht signierten Modulen oder Fonts durch GRUB zu dem Fehler "error: prohibited by secure boot policy" führen kann (siehe dazu auch: EndeavourOS Forum: GRUB & Secure Boot).

Die Installation von GRUB kann wie folgt durchgeführt werden:

linux ~ # grub-install --target=x86_64-efi --efi-directory=<Mountpoint der EFI-Partition> --bootloader-id=GRUB --modules="tpm" --disable-shim-lock
linux ~ # grub-install --target=x86_64-efi --efi-directory=<Mountpoint der EFI-Partition> --bootloader-id=GRUB --modules="tpm" --disable-shim-lock --removable

Zusätzlich sollte ggf. geprüft werden, ob das neue GRUB-Image an allen magischen Orten installiert ist, siehe letzter Punkt in meinem Artikel zur Einrichtung von SEDUTIL.

Anschließend müssen alle GRUB-Images (ggf. mehrere, falls an verschiedenen magischen Orten abgelegt) signiert werden, z.B. wie folgt:

linux ~ # sbctl sign -s /boot/efi/EFI/gentoo/grubx64.efi
✔ Signed /boot/efi/EFI/gentoo/grubx64.efi

4. Signieren der Gentoo Linux Kernel für Secure Boot

Auch die verwendeten Kernel des Gentoo Systems müssen signiert werden, z.B. wie folgt:

linux ~ # sbctl sign -s /boot/vmlinuz-6.15.6-gentoo-dist
✔ Signed /boot/vmlinuz-6.15.6-gentoo-dist

Daran muss auch nach jeder neuen Kernelinstallation gedacht werden. Ggf. ist dass im Installationsscript der Distributionskernel schon enthalten oder kann per USE-Flag aktiviert werden. Ich selbst benuzte allerdings noch das Tool GENKERNEL für die manuelle Kernelerstellung.

5. Signieren und installieren des Kernels im Pre Boot Authorization System von SEDUTIL für Secure Boot

Nun wird es etwas komplizierter: Wenn man wie ich ein Pre Boot Authorization System im Shadow MBR eines per TCG OPAL verschlüsselten NVME-Laufwerkes installiert hat, muss natürlich auch der Kernel dieses Systems signiert werden. Mit Hinweisen aus dem Fehlerbericht 259: [HowTo] SecureBoot support konnte ich jedoch eine Lösung finden.

Wichtig ist, dass hier als Ausgangslage das gleiche RESCUE-Image verwendet wird, welches auch bei der Ersteinrichtung der Pre Boot Authorization (PBA) System verwendet wurde, da es sonst zu Inkompatibilitäten kommen kann, siehe dazu auch Anmerkung weiter unten. Ich hatte für meine Systeme die Version RESCUE64-1.15.1-44-ge29fbb1.img.gz aus dem Repositoy von ChubbyAnt genutzt. Das Vorgehen sollte für alternative Rescue-Images von SEDUTIL identisch sein.

Zunächst muss das RESCUE-Image eingebunden werden, um Zugriff auf das vorkonfekionierte PBA-Image zu erhalten:

linux ~ # mkdir /media/RESCUE64
linux ~ # gunzip RESCUE64-1.15.1-44-ge29fbb1.img.gz
linux ~ # mount -o loop,offset=1048576 RESCUE64-1.15.1-44-ge29fbb1.img /media/RESCUE64

Hinweis: Das angegebene Offset berechnet sich über die Sektorgrösse und den Startsektor des Dateisystems im Image, welches mit dem Befehl fdisk -l RESCUE64-1.15.1-44-ge29fbb1.img inspiziert werden kann.

Anschliessend wird das PBA-Image aus dem CPIO-Paket des RESCUE-Images extrahiert, eingebunden, der enthaltene Kernel signiert und das veränderte PBA-Image wieder ausgehängt:

linux ~ # cd /tmp
linux /tmp # xz -dc /media/RESCUE64/EFI/boot/rootfs.cpio.xz | cpio -idv 'usr/sedutil/UEFI64-1.15.1-44-ge29fbb1.img.gz'
usr/sedutil/UEFI64-1.15.1-44-ge29fbb1.img.gz
208082 Blöcke
linux /tmp # gunzip /tmp/usr/sedutil/UEFI64-1.15.1-44-ge29fbb1.img.gz
linux /tmp # mkdir /media/PBA
linux /tmp mount -o loop,offset=1048576 /tmp/usr/sedutil/UEFI64-1.15.1-44-ge29fbb1.img /media/PBA
linux /tmp sbctl sign /media/PBA/efi/boot/bootx64.efi
✓ Signed /media/PBA/efi/boot/bootx64.efi
linux /tmp umount /media/PBA
linux /tmp umount /media/RESCUE64

Jetzt hat man mit der Datei /tmp/usr/sedutil/UEFI64-1.15.1-44-ge29fbb1.img ein aktualisiertes PBA-Image vorliegen, das einen signierten Kernel enthält. Dieses muss nun mit SEDUTIL in den Shadow-MBR der NVME-Laufwerke geladen werden. Wenn im laufenden Linux System die korrekte Version von SEDUTIL (also aus dem gleichen Paket, aus dem auch das PBA stammt) installiert ist, funktioniert das mit folgendem Befehl:

linux ~ # sedutil-cli --loadpbaimage <Password> /tmp/usr/sedutil/UEFI64-1.15.1-44-ge29fbb1.img /dev/nvme0
Writing PBA to /dev/nvme0
33554432 of 33554432 100% blk=4734
PBA image /tmp/usr/sedutil/UEFI64-1.15.1-44-ge29fbb1.img written to /dev/nvme0

Sollte das laufende Linuxsystem kein kompatibles SEDUTIL besitzten, kann das neue PBA-Image in das ursprügliche CPIO-Paket im RESCUE-Image gepackt werden, dieses auf einen USB Stick geschrieben und dann zur Verwendung des PBA-Images mit der korrekten SEDUTIL Version gebootet werden.

6. Nachbereitung im BIOS (Aktivieren von Secure Boot)

Im ASUS Bios/UEFI kann abschliessend Secure Boot aktiviert werden. Bei ASUS funktioniert das mit der Option "OS Type" und dem Wert "Windows UEFI mode".

ASUS Bios: Secure Book aktivieren mit Option OS Type = Windows UEFI mode

Anschliessend den Rechner einmal vollständig ausschalten, damit auch das PBA-System erneut aufgerufen wird und die gesamte Kette getestet werden kann. Im Fehlerfall einfach Secure Boot im Bios/UEFI wieder deaktivieren.

Unter Linux lässt sich das aktivierte Secure Boot wie folgt prüfen:

linux ~ # sbctl status
Installed: ✓ sbctl is installed
Owner GUID: 0444abb2-a0fe-4891-bf55-02c94d0a90e1
Setup Mode: ✓ Disabled
Secure Boot: ✓ Enabled
Vendor Keys: microsoft

Unter Windows mit dem Tool msdiag32.

7. Sonstige Anmerkungen

  • In Windows 11 sind keine Einstellungen erforderlich. Windows 11 bootet, unabhängig davon ob Secure Boot eingeschaltet oder ausgeschaltet ist. Auch gibt es keine Probleme, wenn Secure Bootnachträglich im Bios/UEFI wieder deaktiviert wird. Ob Secure Boot in Windows 11 aktiv ist, sieht man im Programm msinfo32.
  • Soweit mir bekannt ist, sind ein korrekt eingerichtetes Booten per GRUB im EFI Modus und die Nutzung von GPT-Partitionstabellen grundlegende Voraussetzungen für Secure Boot. Beides sollte aber mittlerweile Standard sein.
  • Alle Angaben ohne Gewähr! Macht Backups! Insbesondere wenn mit der Hardwareverschlüsselung etwas schief geht, muss im schlimmsten Fall per PS-ID-Revert das komplette Medium unwiderruflich gelöscht werden. Auf jeden Fall das PBA UEFI Image nutzen, welches auch ursprünglich verwendet wurde (ich z.B. verwende einer Version von ChubbyAnt/SEDUTIL.COM, welche aufgrund eines veränderten Password-Hash-Verfahrens mit dem Original SEDUTIL/PBA der Drive-Trust-Alliance und anderen Forks inkompatibel ist. Aber wenn man sowas wie SEDUTIL nutzt, sollte man eigentlich ohnehin immer einen Recovery USB Stick mit exakt der gleichen Version bereithalten, die man zum Zeitpunkt der Verschlüsselung genutzt hatte.

Internet, Linux & IT

Undervolting lohnt sich!

In den letzten Tagen habe ich mich mit dem Undervolting meines Prozessors und meiner Grafikkarte beschäftigt. Undervolting bei CPUs und GPUs bedeutet, dass man die Betriebsspannung (Voltage) der Prozessoren absenkt, ohne dabei (idealerweise) die Leistung spürbar zu beeinträchtigen. Ziel ist es, den Stromverbrauch und die Hitzeentwicklung zu reduzieren.

Undervolting des Prozessors AMD Ryzen 9950X3D

Hierzu stehen direkt im UEFI (Bios) verschiedene Tools zur Verfügung, unter anderem der Curve Optimizer und der Curve Shaper. Ich habe mich an dem Video von ParteeMike Tech orientiert, aber nur das Undervolting umgesetzt und keine Overclocking-Maßnahmen vorgenommen. Dabei habe ich festgestellt, dass mein Prozessor bei -30mV auf allen Kernen stabil läuft, und daher auch nur im Curve Optimizer entsprechende Einstellungen vorgenommen. Stabilität kann man u.a. mit dem kostenlosen Tool CoreCycler testen, darf aber neben der Stabilität unter Last auch das Verhalten im Leerlauf nicht vernachlässigen.

Curve Optimizer Einstellungen für den Ryzen 9950X3D im UEFI (Bios)

Die Ergebnisse können sich durchaus sehen lassen: Durch diese eine Einstellung verbraucht der Prozessor im Einzelkernbetrieb 21% weniger Energie bei 2% höherer Performance im Vergleich zu den Werkseinstellungen. Im Mehrkernbetrieb mit allen 16 Kernen sind es zwar nur 4% Energieersparnis, aber immerhin 4% Performancesteigerung. In der Praxis wird die relative Energieersparnis/Leistungssteigerung wohl irgendwo dazwischen liegen, da beispielsweise in Spielen nur 8 der insgesamt 16 Kerne verwendet werden.

Cinebench R23 - Single Core Performance Punkte Performance relativ Leistungs- aufnahme Watt Leistungs- aufnahme relativ
Werks- einstellungen 2.215 100 % 70 W 100 %
Core Optimizer: All Cores @ -30mV 2.269 102 % 55 W 79 %

Cinebench R23 - Multi Core Performance Punkte Performance relativ Leistungs- aufnahme Watt Leistungs- aufnahme relativ
Werks- einstellungen 42.328 100 % 200 W 100 %
Core Optimizer: All Cores @ -30mV 44.066 104 % 193 W 96 %

Undervolting der Grafikkarte Nvidia GeForce 5090FE

Im Bereich der Grafikkarten ist der kostenlose MSI Afterburner das etablierte Tool fürs Undervolting. Beim den Grundlagen und der Bedienung dieses Werkzeugs hat mir zunächst das Video von Panjno geholfen; speziell beim Undervolting der 5090FE habe ich dann aber die Einstellungen aus dem Video von Eiga übernommen. Diese laufen auch bei mir zuverlässig und stabil.

Spannungs-/Taktraten-Kurve der GeForce RTX 5090FE bei 2737MHz @ 885mV

Spannungs-/Taktraten-Kurve der GeForce RTX 5090FE bei 2572MHz @ 870mV

Auch bei der GPU kann man mit Undervolting sehr viel rausholen: Je nach Einstellung z.B. 1% mehr Performance bei 15% geringerer Leistungsaufnahme – was immerhin 86 Watt entspricht. Alternativ 2% weniger Performance bei 21% geringerer Leistungsaufnahme – satte 115 Watt. Zusammen mit dem Undervolting der CPU macht sich das nicht nur beim Stromverbrauch, sondern auch bei der Wärmeentwicklung im Gehäuse bemerkbar.

3DMark Demo Steel Nomad Performance Punkte Performance relativ Leistungs- aufnahme Watt Leistungs- aufnahme relativ
Werks- einstellungen 14.048 100 % 577 W 100 %
UV 2737MHz @ 885mV 14.181 101 % 490 W 85 %
UV 2572MHz @ 870mV 13.708 98 % 458 W 79 %

Internet, Linux & IT

Neuer PC: AMD Ryzen 9950X3D mit Nvidia GeForce RTX 5090FE im NCASE M2

Nach etwas mehr als fünf Jahren habe ich mir einen neuen PC zusammengestellt. Diesmal habe ich mir einen High-End-Rechner gegönnt und ihn in dem kompakten NCASE M2 Round Silver-Gehäuse im klassischen Layout verbaut.

Neuer PC im kompakten Gehäuse NCASE M2 Round Silver

Hardware:

  • CPU: AMD Ryzen 9950X3D
  • GPU: Nvidia GeForce RTX 5090FE
  • CPU-Kühler: Thermalright Peerless Assassin 120 Mini Black (PA120Mini)
  • Mainboard: ROG STRIX B850-I GAMING WIFI
  • RAM: 2× Corsair Pro 32 GB DDR5-5600
  • SSD: 2× Samsung 990 Pro 4 TB
  • Netzteil: Corsair SF1000
  • Gehäuselüfter: 5× Arctic P14 Slim PWM PST
  • Sonstiges: Gummischrauben für Lüfter, 3 mm Kühlkörper für hintere SSD (nicht im Bild), 5 mm Abstandshalter für Bodenlüfter, einfacher Anti-Sag-GPU-Halter, zusätzliche Lüfterhalterung für das NCASE M2

Die neue Hardware im Überblick

Verwendungszweck / Ziele:

  • Dual-Boot-System mit Gentoo Linux für Produktivität und Windows 11 für Gaming
  • Fast lautloser Betrieb im normalen Desktop-Einsatz (Web-Browsing, Videos)
  • Kann beim Gaming lauter sein, da ich ein Headset benutze

Bau-Erlebnis:

Der Zusammenbau verlief unkompliziert und ohne größere Probleme.

Der CPU-Lüfter ist als Lufteinlass konfiguriert. Die oberen und seitlichen Lüfter sind als Luftauslass eingestellt. Die Bodenlüfter sorgen für zusätzliche Frischluftzufuhr.

Linke Gehäuseseite

Rechte Gehäuseseite - Ich habe nachträglich noch einen 3 mm Kühlkörper auf die SSD gesetzt, was die Temperaturen etwas verbessert hat.

Ansicht von oben

Rückseite - Den 90-mm-Lüfter habe ich inzwischen entfernt, weil er selbst bei niedriger Drehzahl zu laut war.

Wie auf den Bildern zu sehen, hatte ich ursprünglich einen zusätzlichen 90-mm-Gehäuselüfter hinten als Lufteinlass montiert, habe ihn aber wegen der Lautstärke entfernt. Ich denke, er bringt nicht genug, um den zusätzlichen Lärm zu rechtfertigen. Vielleicht befestige ich ihn später direkt am CPU-Kühler, aber momentan bin ich mit den CPU-Temperaturen zufrieden.

Die 5090 FE kommt mit ihrer eigenen Kühlung gut zurecht. Die Bodenlüfter unterhalb der GPU sind nur dafür da, die Temperatur unter 52°C zu halten. Das ist die Schwelle, ab der die Lüfter der 5090 FE anspringen – und wenn das passiert, sind sie ziemlich laut. Damit das nicht passiert, müssen die Bodenlüfter so nah wie möglich an der GPU positioniert werden. Deshalb habe ich Abstandshalter unter die Lüfter gesetzt, um sie näher an die GPU zu bringen. So laufen sie sehr leise und langsam (~28 % PWM), sodass die GPU-Lüfter während Web-Browsing, YouTube oder im Idle nie anspringen.

Mit meinen aktuellen Lüftereinstellungen (siehe Anhänge) bleibt das System beim Surfen, YouTube oder im Idle angenehm leise, bei einer Raumtemperatur von etwa 22°C. Beim Spielen eines anspruchsvollen Spiels wie Indiana Jones mit maximalen Einstellungen zieht das System ca. 700 Watt und das Gehäuse wird spürbar heiß – fast wie ein großer Kühlkörper. Nach der Gaming-Session kühlt es aber schnell wieder ab. Natürlich werden die Lüfter dabei deutlich hörbar, aber da meine 5090 FE sowieso hörbares Spulenfiepen hat und ich mit Kopfhörern spiele, stört mich das nicht weiter.

Temperaturen & Optimierungen:

Im HWInfo-Screenshot sieht man die Temperaturen nach über einer Stunde Gaming. Insgesamt bin ich zufrieden, außer mit dem SSD-Controller-Chip meiner primären SSD. Diese Samsung SSD ist vorne am Mainboard montiert, zwischen GPU und CPU. Es gibt wohl ein bekanntes Problem mit diesem SSD-Kühlkörper: Der SSD-Controller-Chip sitzt etwas tiefer als die Flash-Speicher, sodass ein kleiner Spalt zwischen Controller und Kühlkörper entsteht. Eine mögliche Lösung besteht darin, Wärmeleitpads mit unterschiedlichen Dicken zu verwenden: 0,5 mm für die Flash-Speicher und 1 mm für den Controller. Ich habe solche Pads bestellt, aber sie sind gerade nicht lieferbar. Sobald sie ankommen, werde ich testen, ob sie helfen, die Temperatur unter 70°C zu halten.

Temperaturen während/nach dem Spielen von Indiana Jones: In der "Maximal"-Spalte sind die Temperaturen, die während dieses Spiels zu erwarten sind.

Ich habe weder Overclocking noch Undervolting oder EXPO-Profile aktiviert. Mir ist Systemstabilität wichtiger als eine kleine Leistungssteigerung. Deshalb habe ich auch bewusst JEDEC-konformen DDR5-5600 RAM gewählt, statt des oft empfohlenen DDR5-6000 „Sweet Spots“. Möglicherweise probiere ich aber in Zukunft Undervolting aus, um die Temperaturen weiter zu senken.

Und ja, mein Kabelmanagement ist schrecklich – bitte nicht beurteilen!

Übersicht der vorgenommenen Bios-Einstellungen:

SATA deaktiviert

Stromspareinstellungen

Stromspareinstellungen sowie WLAN und internes Audio deaktiviert, da nicht benötigt

In der CPU integrierte GPU deaktiviert

Der Standardlüfter des PA120 Mini bleibt bis etwa 35% PWM ruhig, weshalb ich ihn auf diesen Wert eingestellt habe für Temperaturen bis 70°C (die bei leichter Desktop-Nutzung normalerweise nicht erreicht werden). Darüber hinaus stelle ich ihn so ein, dass er schnell auf 100% PWM ansteigt, sobald 90°C erreicht werden, um die CPU unter die Drosselungsgrenze von 95°C zu halten, bei CPU-intensiven Aufgaben und gemischten CPU/GPU-Lasten, wie zum Beispiel beim Gaming.

Chassis-Lüfter: Dies sind die beiden oberen Abluftlüfter. Die Arctic P14 Slims bleiben bis etwa 25% PWM ruhig, weshalb ich sie auf niedrigen 20% belasse und sie erst hochfahre, nachdem die CPU 70°C erreicht, um die warme Luft abzuführen.

Extra Flow Lüfter: Dies ist der seitliche Abluftlüfter. Die Arctic P14 Slims bleiben bis etwa 25% PWM ruhig, weshalb ich sie auf niedrigen 20% belasse und sie erst hochfahre, nachdem die CPU 70°C erreicht, um die warme Luft abzuführen.

AIO-Pumpenlüfter: Dies sind die beiden unteren Zuluftlüfter. Die Arctic P14 Slims bleiben bis etwa 25% PWM ruhig, aber ich lasse sie bei etwa 28% PWM laufen, um zu verhindern, dass die GPU 52°C erreicht, was dazu führen würde, dass ihre lauten Lüfter anspringen. (Siehe Text)

Probleme und Lösungen:

Der im Mainboard integrierte Netzwerkadapter Intel I226-V ist leider als Problemkind bekannt. Ich hatte damit zwei verschiedene Probleme:

  • Unter Windows war die Übertragungsgeschwindigkeit sehr langsam (nur 10–100 Mbit/s statt der erwarteten 1000 Mbit/s). Ich habe zahlreiche Einstellungen ausprobiert – insbesondere bei den Energiesparfunktionen im BIOS und im Netzwerktreiber – sowie verschiedene Treiberversionen installiert. Irgendwann funktionierte es schließlich. Leider kann ich nicht mehr genau sagen, woran es letztlich lag. Da ich die Energiesparfunktionen inzwischen wieder aktiviert habe, dürften sie nicht die Ursache gewesen sein. Vermutlich hat die Installation des aktuellen Treibers aus dem Intel Ethernet Adapter Complete Driver Pack geholfen.
  • Unter Linux hat sich der Adapter gelegentlich nach einiger Zeit komplett deaktiviert, mit der Fehlermeldung: "lPCIe link lost, device now detached". Dieses Problem scheint tatsächlich mit den Energiesparfunktionen zusammenzuhängen. Laut diesem Beitrag können sie durch die Kernel-Parameter pcie_port_pm=off und pcie_aspm.policy=performance deaktiviert werden.

Internet, Linux & IT

Hardwareverschlüsselung nach TCG OPAL mit SEDUTIL

Mit SEDUTIL lässt sich die Hardwareverschlüsselung nach dem TCG-OPAL-Standard für kompatible SSDs aktivieren. Der große Vorteil: Die Lösung funktioniert betriebssystemunabhängig und kann zudem unkompliziert ein- oder wieder ausgeschaltet werden.

Das Grundprinzip: Im gesperrten Zustand stellt die SSD einen kleinen, unverschlüsselten, alternativen Bootbereich zur Verfügung. In diesem wird ein minimalistisches Linux-System installiert, das beim Start direkt eine Eingabeaufforderung zur Passworteingabe öffnet. Nach erfolgreicher Authentifizierung wird die SSD entsperrt und das eigentliche Betriebssystem neu gestartet.

Installation

Die Installation ist auf sedutil.com gut dokumentiert. Dort findet sich auch ein Build, das mit Ryzen-CPUs kompatibel ist – diese Version verwende ich selbst seit über fünf Jahren. Hier eine Kurzfassung der wichtigsten Befehle für die Installation nach dem Booten von der bootbaren Installations- bzw. Recovery-Disk (inkl. Beispielausgaben):

linux ~ # gunzip /usr/sedutil/UEFI64-*img.gz
linux ~ # sedutil-cli --initialsetup debug /dev/nvme0
- 14:06:39.709 INFO: takeOwnership complete
- 14:06:41.703 INFO: Locking SP Activate Complete
- 14:06:42.317 INFO: LockingRange0 disabled
- 14:06:42.694 INFO: LockingRange0 set to RW
- 14:06:43.171 INFO: MBRDone set on
- 14:06:43.515 INFO: MBRDone set on
- 14:06:43.904 INFO: MBREnable set on
- 14:06:43.904 INFO: Initial setup of TPer complete on /dev/nvme0
linux ~ # sedutil-cli --enablelockingrange 0 debug /dev/nvme0
- 14:07:24.914 INFO: LockingRange0 enabled ReadLocking,WriteLocking
linux ~ # sedutil-cli --setlockingrange 0 lk debug /dev/nvme0
- 14:07:46.728 INFO: LockingRange0 set to LK
linux ~ # sedutil-cli --setmbrdone off debug /dev/nvme0
- 14:08:21.999 INFO: MBRDone set off
linux ~ # sedutil-cli --loadpbaimage debug /usr/sedutil/UEFI64-*.img /dev/nvme0
- 14:10:55.328 INFO: Writing PBA to /dev/nvme0
33554432 of 33554432 100% blk=1500
- 14:14:04.499 INFO: PBA image /usr/sedutil/UEFI64.img written to /dev/nvme0

Test

Nun folgt ein wichtiger Test des Unlocking-Tools mit dem festgelegten Probepasswort "debug". Die Ausgabe für die betreffende SSD muss dabei "is OPAL Unlocked" lauten. Falls stattdessen eine andere Meldung erscheint, sollte OPAL wieder deaktiviert werden, um Probleme beim späteren Zugriff auf die Daten zu vermeiden.

linux ~ # linuxpba
DTA LINUX Pre Boot Authorization
Please enter pass-phrase to unlock OPAL drives: debug
Scanning....
Drive /dev/nvme0 Samsung SSD 960 EVO 250GB is OPAL Unlocked
Drive /dev/sda Crucial_CT250MX200SSD1 is OPAL NOT LOCKED

Echtes Password setzen und Shadow-MBR aktivieren:

Mit den folgenden Befehlen wird das Probepasswort "debug" durch ein eigenes Passwort ersetzt. Zudem wird der Shadow-MBR aktiviert, sodass die verschlüsselte SSD das zuvor installierte Linux-System zur Passworteingabe als bootbare Partition bereitstellt.

linux ~ # sedutil-cli --setsidpassword debug yourrealpassword /dev/nvme0
linux ~ # sedutil-cli --setadmin1pwd debug yourrealpassword /dev/nvme0
- 14:20:53.352 INFO: Admin1 password changed
linux ~ # sedutil-cli --setmbrdone on yourrealpassword /dev/nvme0
- 14:22:21.590 INFO: MBRDone set on

Deaktivierung von OPAL:

Falls erforderlich, kann mit den folgenden Schritten OPAL deaktiviert werden. Dabei ist "debug" das zuvor gesetzte Probepasswort. Falls bereits ein eigenes Passwort vergeben wurde, muss es entsprechend ersetzt werden.

linux ~ # sedutil-cli --disablelockingrange 0 debug /dev/nvme0
- 14:07:24.914 INFO: LockingRange0 disabled
linux ~ # sedutil-cli --setmbrenable off debug /dev/nvme0
14:08:21.999 INFO: MBREnable set off

Troubleshooting und Hinweise

Kompatibilität

Die SEDutil-Version von sedutil.com ist nicht kompatibel mit der Originalversion der Drive Trust Alliance, da sie für die Passwort-Hash-Berechnung SHA-512 anstelle von SHA-1 verwendet.

Initialsetup meldet "NOT AUTHORIZED"

Wie im Fehlerbericht #291 dokumentiert, schlagen bei einigen NVMe-SSDs die "initialsetup"-Operationen mit dem Fehler "NOT AUTHORIZED" fehl. In vielen Fällen kann dieses Problem durch das vorherige Ausführen des "PSIDrevert"-Befehls behoben werden:

linux ~ # sedutil-cli --PSIDrevert DieLaufwerksPSIDhier /dev/nvme0

(Der PSID-Code der SSD befindet sich auf einem Aufkleber auf dem Laufwerk selbst.)

Achtung: Der Befehl PSIDrevert ist gefährlich! Er löscht normalerweise alle Daten auf dem Gerät. Daher sollte vorher unbedingt ein vollständiges Backup durchgeführt werden.

In meinem Fall – sowie in anderen Fällen, die im verlinkten Fehlerbericht dokumentiert sind – wurde das Laufwerk jedoch nicht gelöscht. Stattdessen wurde dadurch die "initialsetup"-Operation freigeschaltet. Ich vermute, dass bei meinem Laufwerk der PSIDrevert-Befehl die Festplatte nur löscht, wenn die OPAL-Sperre aktiviert ist, und ansonsten lediglich den Schutz für die Aktivierung der Verschlüsselung aufhebt. Mittlerweile habe ich das ebenfalls getestet: Meine gesperrte SSD ließ sich auf diese Weise vollständig löschen und entsperren.

Windows Update überschreibt den Linux Bootloader bei Dual-Boot-Systemen

Im Fehlerbericht 27 habe ich meine Lösung für das Problem dokumentiert, dass Windows Update den Grub-Bootloader bei einer Dual-Boot-Konfiguration von Windows und Linux beschädigt. Da mein UEFI-Setup die Standard-Fallback-Pfade verwendet, musste ich Grub an den Speicherorten /EFI/Boot und /EFI/Microsoft/Boot ablegen und den Windows-Bootloader in ein anderes Verzeichnis verschieben, z. B. /EFI/Windows.

Das Verschieben von Grub an diesen Speicherort war notwendig, wie in dem Fehlerbericht beschrieben (siehe z. B. den Kommentar von mesiu84). Der Grund ist, dass mein UEFI nach der Pre-Authentifizierung alle UEFI-Einträge von nicht verfügbaren Partitionen löscht und daher nie Grub am Standard-Speicherort (/EFI/gentoo in meinem Fall) startet, sondern immer auf die Fallback-Pfade /EFI/Microsoft/Boot oder /EFI/Boot zurückgreift.

Nun habe ich herausgefunden, dass mein UEFI nach der Pre-Authentifizierung und dem Entsperren der Laufwerke immer versucht, von der EFI-Partition des ersten Laufwerks zu booten. In meinem Setup habe ich zwei identische Laufwerke, beide mit aktiviertem Verschlüsselungsmechanismus.

Die Lösung: Windows Boot Manager auf ein zweites EFI-Volume verschieben

Meine Idee war: Was wäre, wenn ich den Windows Boot Manager auf eine zweite EFI-Partition auf dem zweiten Laufwerk verschieben könnte? Dann könnte ich Grub ausschließlich auf der EFI-Partition des ersten Laufwerks installieren und den Windows Bootloader von der zweiten EFI-Partition auf dem zweiten Laufwerk aus starten (Chainloading).

Der Vorteil: Windows Update würde nur die zweite EFI-Partition aktualisieren und nicht mehr die primäre EFI-Partition mit Grub überschreiben. Gleichzeitig würde mein UEFI nach dem Entsperren der Laufwerke weiterhin automatisch Grub von der EFI-Partition auf dem ersten Laufwerk starten.

Und tatsächlich funktioniert das! Meine Grub-Installation hat seitdem die Windows-Updates überlebt!

Mittlerweile weiss ich, dass diese Methode auch mit nur einem Laufwerk funktioniert, indem man dort zwei separate EFI-Partitionen anlegt.

Ausgangs-Partitionierung

  • Laufwerk 1 (Disk 1):
    • EFI
    • Windows
    • Linux (System)
  • Laufwerk 2 (Disk 2):
    • Linux (Daten)

Durchgeführte Schritte

  1. Mit gparted die Linux-Partition auf Disk 2 verkleinert
  2. Mit fdisk eine neue (leere) EFI-Partition auf Disk 2 erstellt (Partitionstyp 1, entsprechend dem Gentoo-Handbuch)
  3. Windows starten
  4. cmd als Administrator ausführen
  5. Neue EFI-Partition auf Disk 2 mit diskpart als Laufwerk "Z:" einhängen:
    1. Verwende 'list disks', um eine Liste der Festplatten und deren Nummern anzuzeigen.
    2. Verwende 'sel disk <Nr.>', um das Laufwerk mit der neuen EFI-Partition auszuwählen.
    3. Verwende 'list par', um die Liste der Partitionen des ausgewählten Laufwerks anzuzeigen.
    4. Verwende 'sel par <Nr.>', um die EFI-Partition (Partition vom Typ "System") auszuwählen.
    5. Verwende 'assign letter="z"', um einen Laufwerksbuchstaben zuzuweisen.
    6. Verwende 'exit', um diskpart zu schließen.
  6. Windows Bootloader mit bcdboot auf die neue EFI-Partition schreiben:
    bcdboot c:\windows /l de-de /s z: /f UEFI
  7. Laufwerkbuchstaben der EFI-Partition mit diskpart im Administratormodus wieder entfernen:
    1. Verwende 'sel disk <Nr.>', um das Laufwerk mit der neuen EFI-Partition auszuwählen.
    2. Verwende 'sel par <Nr.>', um die EFI-Partition (Partition vom Typ "System") auszuwählen.
    3. Verwende 'remove letter="z"', um den Laufwerksbuchstaben zu entfernen.
    4. Verwende 'exit', um diskpart zu schließen.
  8. Linux booten
  9. Erste (ursprüngliche) EFI-Partition auf Disk 1 einhängen
  10. Alle Dateien der EFI-Partition auf Disk 1 löschen
  11. Grub neu installieren inklusive Removable Mode:
    linux ~ # grub-install --target=x86_64-efi --efi-directory=<Mountpoint der ersten EFI-Partition auf Disk 1>
    linux ~ # grub-install --target=x86_64-efi --efi-directory=<Mountpoint der ersten EFI-Partition auf Disk 1> --removable
  12. Grub konfigurieren, um den Windows Bootloader auf Disk 2 zu starten
    1. UUID der zweiten EFI-Partition mit lsblk ermitteln (in meinem Fall: 6276-B891)
    2. Grub-Konfigurationsdatei anpassen und um den Chainload-Eintrag für die zweite EFI-Partition (Windows EFI) ergänzen:
      menuentry 'Windows 11 (disk2, /Microsoft/)' --class windows --class os $menuentry_id_option 'osprober-efi-6276-B891' --unrestricted '' {
              insmod part_gpt
              insmod fat
              if [ x$feature_platform_search_hint = xy ]; then
                search --no-floppy --fs-uuid --set=root  6276-B891
              else
                search --no-floppy --fs-uuid --set=root 6276-B891
              fi
              chainloader /EFI/Microsoft/Boot/bootmgfw.efi
      }
      
  13. Sicherstellen, dass die Grub-EFI-Datei an allen "magischen" Orten auf der ersten EFI-Partition des ersten Laufwerks platziert sind (z.B. durch manuelles Erstellen der Verzeichnisse und Kopieren und Umbenennen der GRUB-EFI-Datei), die anscheinend wie folgt sind:
    1. /EFI/BOOT/BOOTX64.EFI
    2. /EFI/Microsoft/Boot/bootmgfw.efi
    Dies kann das UEFI dazu bringen zu glauben, dass auf diesem Laufwerk ein Windows-Bootloader installiert ist, und es bevorzugt dann diese Partition gegenüber der zweiten EFI-Partition.

Internet, Linux & IT

Linux Bluetooth: Stotternder Klang beim Start eines Songs

Problem: Der Klang ist stotternd, wenn man einen Song in Amarok oder einem anderen Linux-Audioplayer mit VLC-Backend und einem Bluetooth-Headset abspielt.

Merkwürdigerweise tritt dieses Problem nur auf, wenn der Song mit VLC mit einem Bluetooth-Headset abgespielt wird. Andere Anwendungen funktionieren einwandfrei. Auch die Verwendung kabelgebundener Kopfhörer ist unproblematisch.

Das Muster ist immer gleich: zwei Aussetzer von ca. 1 Sekunde, getrennt durch ca. 1 Sekunde normalen Klangs, danach spielt der Song ohne Probleme. Wenn man den VLC-Cursor zurück an den Anfang des Songs bewegt, um ihn erneut abzuspielen, ohne Stop/Start zu verwenden, treten keine Aussetzer auf.

Lösung: Öffne pavucontrol -> Ausgabegeräte -> Öffne den Abschnitt Erweitert in den Bluetooth-Geräteeinstellungen -> Stelle den Latenzversatz auf einen Wert zwischen -100 ms und -1000 ms ein.

Quelle: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2958

Internet, Linux & IT

Spiele und Desktop streamen mit Sunshine und Moonlight

Gestern habe ich auf Youtube den Erfahrungsbericht von Keno zum Spiele-Streaming mit Sunshine und Moonlight gesehen. Ich selbst hatte auch schon verschiedene Lösungen wie Parsec und Stream Remote Play ausprobiert. Wirklich überzeugen konnte mich aber bisher nichts.

Da ich die Kombination von Sunshine (Server) und Moonlight (Client) noch nicht kannte, habe ich es einmal ausprobiert, mit meinem Windows PC als Server und einem Raspberry PI4 2GB als Client. Ob es brauchbar ist, muss sich noch zeigen.

Die Installation war aber leider gerade auf Client-Seite etwas fummelig, daher hier meine Notizen:

Windows Host:

Die Installation erfolgte ohne Probleme: Einfach den aktuellen sunshine-windows-installer.exe von der Homepage laden und den Anweisungen des Installationsprogramms folgen.

Linux Client:

Das aktuelle Raspberry OS (bookworm) in der Lite-Version mit dem Raspberry Pi Imager auf eine SD-Karte installieren. Dabei kann direkt SSH, WLAN sowie ein eigener User konfiguriert werden.

Nach dem Booten konnte dann der Moonlight Client enstprechend der Anleitung installiert werden mit den Befehlen:

user@linux ~ $ curl -1sLf 'https://dl.cloudsmith.io/public/moonlight-game-streaming/moonlight-qt/setup.deb.sh' | distro=raspbian sudo -E bash sudo apt install moonlight-qt

Moonlight kann man dann grundsätzlich mit dem folgenden Befehl starten:

user@linux ~ $ moonlight-qt

Nach der Installation ggf. die Kernel-Parameter in Datei /boot/firmware/cmdline.txt um folgende zwei Parameter erweitern:

video=HDMI-A-1:1920x1080M@60 usbhid.mousepoll=0

Der erste Parameter stellt die Auflösung fest ein. Dies ist sinnvoll, falls diese nicht korrekt erkannt wird, was bei meinem Monitor der Fall war. Übrigens, dass Aktivieren der Anzeige-Option "4K Output" in raspi-config führte bei mir dazu, dass Moonlight keine Bildausgabe schaffte (Ich habe allerdings auch keinen 4K Monitor). Der zweite Parameter hilft dabei, falls die Maus zu langsam ist.

Zuächst funktionierte bei mir der Ton in Moonlight nicht. Hier half es, Pulseaudio zu installieren und anschliessend mit Raspi-Config den Audio-Ausgang auf den korrekten HDMI-Port zu legen:

user@linux ~ $ sudo apt install pulseaudio
user@linux ~ $ sudo raspi-config

Damit jetzt noch Pulseaudio und Moonlight in der richtigen Reihenfolge automatisch beim einschalten des Raspis gestartet werden, musste ich im Verzeichnis /lib/systemd/system zwei .service-Dateien anlegen:

/lib/systemd/system/pulseaudio.service:

[Unit]
Description=pulseaudio
After=rc-local.service
Before=moonlight.service

[Service]
Type=simple
User=pi
ExecStart=/usr/bin/pulseaudio --daemonize=no --log-target=journal

[Install]
WantedBy=multi-user.target

/lib/systemd/system/moonlight.service:

[Unit]
Description=moonlight
After=rc-local.service
After=pulseaudio.service

[Service]
Type=simple
User=pi
ExecStart=/usr/bin/moonlight-qt

[Install]
WantedBy=multi-user.target

Damit diese Services auch automatisch beim Systemstart gestartet werden, noch die Befehle ausführen:

user@linux ~ $ sudo systemctl enable pulseaudio.service
user@linux ~ $ sudo systemctl enable moonlight.service

Computerspiele

SiN

Mit Dominatrix ist ein Source Port für das Spiel SiN aus dem Jahr 1998 erschienen. Neben dem Source Port selbst wird auf der Homepage auch auch ein Installer bereitgestellt, mit dem die Spieldateien bequem von der Windows-CD unter Linux installiert werden können.

Computerspiele

Windowstaste umbelegen

In Computerspielen verwende ich gerne die linke Windowstaste für bestimmte Bewegungen (v.a. Ducken). Leider lässt sich diese nicht in allen Spielen binden, sondern ruft dann das Windows-Menü auf. Abhilfe schafft das kleine Tool AutoHotkey.

Dazu im Order Dieser PC > Dokumente eine Konfigurationsdatei mit dem Dateinamen AutoHotkey.ahk anlegen, um so beispielsweise die linke Windowstaste (LWin) auf einen anderen Buchstaben, hier "p", zu mappen:

LWin::p

Dieses Skript wird beim Start des Tools automatisch ausgeführt.

Computerspiele

Quake 2

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Yamagi Quake 2 mit Neural Upscale Mod

Yamagi Quake 2 mit Neural Upscale Mod

Für ein originalgetreues Spielerlebnis der Singleplayer-Kampagne von Quake 2 aus dem Jahr 1997 verwende ich den Source Port Yamagi Quake II mit der grafischen Modifikation Quake 2 Neural Upscale.

Das Spiel

Grundsätzlich wird auch für den Source Port eine Originalversion des Spiels benötigt. Wer das Spiel nicht ohnehin bereits auf CDROM besitzt, kann es u.a. bei Steam oder GOG erwerben. Laut Internetforen ist bei den digitalen Versionen allerdings nicht immer der Soundtrack enthalten.

Die Modifikationen

Die Modifikation Quake 2 Nueral Upscale enthält mit Verfahren der künstlichen Intelligenz hochskalierte Versionen der Originalgrafiken, welche auf den heutigen hochauflösenden Monitoren optisch ansprechender sind als die Originalgrafiken.

Die Verzeichnisstruktur und Spieldateien

Es wird davon ausgegangen, dass sich die Original-(Windows/Steam/GOG)-Version von Quake 2 im Ordner ~/Quake2 befindet. Hier werden zusätzlich gemäß den nachfolgenden Anweisungen die Dateien der Modifikationen und die Audiodateien des Soundtracks abgelegt. Der Source Port wird über die Paketverwaltung des Betriebssystems ausserhalb dieses Verzeichnisbaums installiert. Die Ordnerstruktur sieht in etwa wie folgt aus:

~/Quake2                    Originalversion von Quake 2
├── baseq2                  Datendateien des Hauptspiels und Modifikationen
│   ├── music               Verzeichnis für Soundtrack des Hauptspiels
│   ├── players
│   │   ├── crakhor
│   │   ├── cyborg
│   │   ├── female
│   │   └── male
│   ├── save
│   │   ├── current
│   │   └── save0
│   └── video
├── ctf                     Erweiterung Capture the Flag (optional)
├── docs
│   └── quake2_manual
│       └── images
├── rogue                   Erweiterung Ground Zero (optional)
│   ├── docs
│   ├── music               Verzeichnis für Soundtrack der Erweiterung
│   └── video
└── xatrix                  Erweiterung The Reckoning (optional)
    ├── docs
    ├── music               Verzeichnis für Soundtrack der Erweiterung
    └── video

Installation von Yamagi Quake II unter Gentoo Linux

Eine (fast) aktuelle Version von Yamagi Quake II ist in der offiziellen Paketdatenbank von Gentoo Linux enthalten. Ich empfehle die Installation mit den folgenden USE-Flags:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="client ctf dedicated openal opengl rogue softrender vulkan xatrix" emerge games-fps/yamagi-quake2 -pv

Download der Modifikationen

Die benötigten Dateien der Modifikationen können von folgenden Seiten bezogen werden:

Installation der Modifikationen

Es wird davon ausgegangen, dass sich alle heruntergeladenen Dateien im Ordner ~/Downloads befinden.

user@linux ~ $ cp ~/Downloads/quake2-neural-upscale-models-2.0.1.pkz ~/Quake2/baseq2/
user@linux ~ $ cp ~/Downloads/quake2-neural-upscale-textures-2.0.1.pkz ~/Quake2/baseq2/

Installation der Musikdateien:

Der Soundtrack von Quake 2 und den beiden Erweiterungen befindet sich nur in Form von separaten Tonspuren auf den jeweiligen Original-CDs. Das hantieren mit CDs ist in der heutigen Zeit natürlich unpraktisch und die Source Ports haben dafür eine elegante Lösung parat: sie können die Musik auch ohne CD abspielen, wenn die Tonspuren mit einem geeigneten Programm (z.B. K3b) ausgelesen und als Musikdateien im Ogg Vorbis-Format mit bestimmten Dateinamen in bestimmten Verzeichnissen abgelegt wurden:

  • Die Tonspuren von Quake 2 können mit den Dateinamen 02.ogg bis 12.ogg im Verzeichnis ~/Quake2/baseq2/music abgelegt werden.
  • Die Tonspuren von Ground Zero können mit den Dateinamen 02.ogg bis 11.ogg im Verzeichnis ~/Quake2/rogue/music abgelegt werden.
  • Die Tonspuren von The Reckoning können mit den Dateinamen 02.ogg bis 11.ogg im Verzeichnis ~/Quake2/xatrix/music abgelegt werden.

Starten von Yamagi Quake II

Um Yamagi Quake 2 zu starten, muss lediglich in das Verzeichnis ~/Quake2 gewechselt werden und dort das systemweit installierte Programm yquake2 aufgerufen werden. Die im Verzeichnis baseq2 abgelegten Modifikationen werden automatisch geladen. Parameter sind lediglich für die Auswahl der Erweiterungen erforderlich.

1. Start des Hauptspiels:

user@linux ~ $ cd ~/Quake2
user@linux ~/Quake2 $ yquake2

2. Start der Erweiterung Ground Zero:

user@linux ~ $ cd ~/Quake2
user@linux ~/Quake2 $ yquake2 +set game rogue

3. Start der Erweiterung The Reckoning:

user@linux ~ $ cd ~/Quake2
user@linux ~/Quake2 $ yquake2 +set game xatrix

Computerspiele

Heretic

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Heretic (1994)

Heretic (GZDoom) m. Neural Texture Pack

Den Fantasy-Doom-Clone Heretic aus dem Jahr 1994 spiele ich mit dem Source Port GZDoom. Für ein aufgewertetes, aber immer noch weitgehend originalgetreues Spielerlebnis kombiniere ich diesen mit der grafischen Modifikation Heretic Neural Texture Pack und den musikalischen Modifikationen Dwars's Heretic HQ SFX Pack sowie dem Heretic SC-55 Music Pack oder alternativ dem Heretic Music Cover by Xeotroid.

Das Spiele

Grundsätzlich wird auch für den Source Port eine Originalversion des Spiels benötigt. Diese kann u.a. bei GOG.COM erworben werden.

Die Modifikationen

Die Modifikation Heretic Neural Texture Pack enthält mit Verfahren der künstlichen Intelligenz hochskalierte Versionen der Originalgrafiken, welche auf den heutigen hochauflösenden Monitoren optisch ansprechender sind als die Originalgrafiken.

Dwars's Heretic HQ SFX Pack enthält originalgetreue Neuaufnahmen der Soundeffekte in hoher Tonqualität. In mühevoller Kleinarbeit wurden entweder die Originalquellen der Soundeffekte ermittelt oder annähernd gleichklingende Samples abgemischt.

Das Heretic SC-55 Music Pack enthält Aufnahmen der Original-MIDI-Soundtracks von einem echten Roland MIDI Synthesizer im SC-55 Standardprofil. Der SC-55 war in den 90er Jahren bei Komponisten beliebt und die MIDI-Wiedergabe auf diesen Geräten entspricht daher am ehesten der Originalkomposition. Alternativ ist das Heretic Music Cover by Xeotroid für den Soundtrack empfehlenswert.

Die Verzeichnisstruktur und Dateien für den Source Port

Alle für Heretic benötigten Datendateien sollen der Einfachheit halber unterhalb des Ordners ~/Heretic abgelegt werden, so dass am Ende die folgende Ordner/Dateistrukur entsteht:

~/Heretic
├── dos                             ORIGINAL DOS-VERSION VON HERETIC
│   ├── HERETIC.WAD                 Datendatei von Heretic
│   └── ...
└── mods
    ├── audio                       MODIFIKATIONEN AUDIO:
    │   ├── sfxogg.wad              Dwars's Heretic HQ SFX Pack
    │   ├── heretic_sc55_ogg.zip    Heretic SC-55 Music Pack
    │   └── HereticPK3.pk3          Heretic Music Cover by Xeotroid
    │
    └── graphics                    MODIFIKATIONEN GRAFIK:
        └── heretic_gz.pk3          Heretic Neural Texture Pack

Aufbau der Verzeichnisstruktur und Ablage der Original-Spieldaten

Zuerst werden die Verzeichnisse angelegt:

user@linux ~ $ mkdir -p ~/Heretic/{dos,mods/audio,mods/graphics}

Anschließend werden die Dateien des DOS-Originalspiels in den Ordner ~/Heretic/dos kopiert. Für den Source Port ist die WAD-Datei HERETIC.WAD ausreichend.

Installation von GZDoom unter Gentoo Linux

Die aktuelle Version von GZDoom ist in der offiziellen Paketdatenbank von Gentoo Linux enthalten. Ich empfehle die Installation mit den folgenden USE-Flags:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="gtk non-free openmp vulkan -debug gles2 -telemetry" emerge games-fps/gzdoom -pv

Download der Modifikationen

Die benötigten Dateien der Modifikationen können von folgenden Seiten bezogen werden:

  • Heretic Neural Texture Pack (Version 4.0.1 für GZ): heretic_gz.pk3
  • Dwars's Heretic HQ SFX Pack (OGG-Version for GZDoom, 06/28/21): sfxogg.wad
  • Heretic SC-55 Music Pack (OGG Pack): heretic_sc55_ogg.zip
  • Heretic Music Cover by Xeotroid (Game Covers -> Heretic -> For ZDoom-based ports): HereticPK3.pk3

Installation der Modifikationen

Es wird davon ausgegangen, dass sich alle heruntergeladenen Dateien im Ordner ~/Downloads befinden.

user@linux ~ $ cp ~/Downloads/heretic_gz.pk3 ~/Heretic/mods/graphics/
user@linux ~ $ cp ~/Downloads/{sfxogg.wad,heretic_sc55_ogg.zip,HereticPK3.pk3} ~/Heretic/mods/audio/

Starten und Konfigurieren von GZDoom

Um GZDoom mit der gewünschten Kombination von Spiel(daten) und Modifikationen zu starten, gibt es zwei Möglichkeiten: Entweder werden die Informationen in Form von Kommandozeilenparametern bei Programmstart übergeben, oder sie werden in einer Konfigurationsdatei hinterlegt und können anschließend bei Programmstart über ein Popup ausgewählt werden. Für beide Varianten gilt, dass nach dem ersten Programmstart im Options-Menü Einstellungen vorgenommen werden sollten. Mehr dazu unten.

Hinweis: Falls GZDoom schon früher verwendet wurde, empfehle ich, die alte Konfigurationsdatei ~/.config/gzdoom/gzdoom.ini zu löschen, um bei der Konfiguration mit einer sauberen Ausgangslage zu beginnen.

1. Auswahl von Spiel(daten) und Modifikationen per Kommandozeile:

Heretic mit SC-55 Music Pack:

user@linux ~ $ gzdoom -iwad ~/Heretic/dos/HERETIC.WAD -file ~/Heretic/mods/graphics/heretic_gz.pk3 -file ~/Heretic/mods/audio/sfxogg.wad -file ~/Heretic/mods/audio/heretic_sc55_ogg.zip

Heretic mit Music Cover by Xeotroid:

user@linux ~ $ gzdoom -iwad ~/Heretic/dos/HERETIC.WAD -file ~/Heretic/mods/graphics/heretic_gz.pk3 -file ~/Heretic/mods/audio/sfxogg.wad -file ~/Heretic/mods/audio/HereticPK3.pk3

2. Auswahl von Spiel(daten) und Modifikationen per Popup:

Analog zu den Angaben in meinem Beitrag zu Doom.

3. GZDoom nach dem ersten Start konfigurieren

Analog zu den Angaben in meinem Beitrag zu Doom.