ACPI in OpenBSD reparieren

Übersetzungen

Den Bootprozess des Kernels unterbrechen

Als erstes muss der Kernel noch bevor autoconf(4) abgearbeitet wird angewiesen werden, in den UKC mode (boot_config(8)) zu wechseln. Dazu muss am Kernel Boot prompt -c eingegeben werden.

boot> -c

If you want to boot another kernel and enter UKC mode:

boot> boot hd0a:/bsd.rd -c

Den Kernel "on the fly" konfigurieren

In dem UKC mode (=User Kernel Configuration mode) wird ein anderes Prompt angezeigt: UKC>

Um ACPI zu deaktivieren, gibt man an diesem Prompt folgendes ein:

UKC> disable acpi
492 acpi disabled

Die Ausgabe von 492 acpi disabled bedeutet, dass der Kernel jetzt alle ACPI Funktionen deaktiviert hat und im nun folgenden Bootprozess kein ACPI konfigurieren wird.

Natürlich kann dasselbe Vorgehen auch auf alle anderen Geräte angewendet werden, die den OpenBSD Kernel am booten hindern.

Auf einem älteren Notebook half dieser Befehl:

UKC> disable acpiprt*
426 acpiprt* disabled

Allerdings zeigte mein Thinkpad 570 stattdessen die Ausgabe 503 acpiprt* disabled.

Wenn die Kernel Konfiguration nun auf diesem Wege verändert wurde, kann mit dem normalen Bootprozeß fortgefahren werden:

UKC> quit

Wenn der Kernel dann erfolgreich gestartet werden kann, können die gemachten Änderungen im nächsten Schritt permanent gemacht werden.

Falls nicht, muss die Kernelkonfiguration erneut gestartet und andere bzw. zusätzliche Kerneloptionen deaktiviert werden.

Um eine Liste der verfügbaren Kernel Optionen zu erhalten, kann am UKC> prompt list eingegeben werden. Die Eingaben help or ? am Prompt geben Information zum User Kernel Configuration aus.

Die Änderungen an der Kernelkonfiguration permanent machen

Bevor an der Kernelkonfuration dauerhaft etwas verändert wird, empfehle ich, die Lektüre der OpenBSD FAQ und in diesem speziellen Fall das Kapitel über die Kernel Konfiguration.

Um einen neuen Kernel zu bauen, brauchen wir folgenden Befehl:

# config -u -f -e /bsd

Allerdings wird dies wahrscheinlich nicht funktionieren, denn config(8) -u benötigt kvm(3), um auf die Änderungen, die in UKC gemacht wurden, zuzugreifen. Doch seit OpenBSD 6.1 wird der Zugriff auf /dev/{,k}mem im securelevel > 0 deaktiviert.

Dieses Verhalten könnte man nun natürlich austricksen und in die Datei /etc/sysctl.conf die Zeile kern.allowkmem=1 eintragen. Aber dieses Vorgehen hebelt das Sicherheitskonzept von OpenBSD aus und darum lassen wir solche unschöne Tricksereien.

Viel besser ist es, die Änderungen nochmals in config(8) einzugeben und dann den geänderten Kernel in eine neue Datei (hier bsd.new) zu schreiben:

# config -e -o /bsd.new /bsd