Was machen die Kernel-Parameter acpi_osi = linux und acpi_backlight = vendor?

21

Ich hatte Probleme mit der Bildschirmhelligkeit Kontrolle in meinem Laptop und ich regelte es durch das Hinzufügen acpi_osi=linuxund acpi_backlight=vendorParameter in die Datei grub.cfg. Ich möchte wissen, was diese Parameter bedeuten und warum sie funktionieren.

user91655
quelle

Antworten:

28

Die Kernelparameter sind auf kernel.org dokumentiert .

Um zu verstehen, was acpi_osifunktioniert, müssen Sie ungefähr wissen, wie ACPI funktioniert. ACPI besteht aus sogenannten Tabellen, die das BIOS vor dem Start des Betriebssystems in den Arbeitsspeicher lädt. Einige von ihnen enthalten lediglich Informationen zu wichtigen Geräten auf dem Mainboard in einem festen Format, andere wie die DSDT-Tabelle enthalten AML-Code. Dieser Code wird vom Betriebssystem ausgeführt und bietet dem Betriebssystem eine Baumstruktur, die viele Geräte auf dem Mainboard und aufrufbare Funktionen beschreibt, die vom Betriebssystem ausgeführt werden, wenn z. B. das Energiesparen aktiviert ist. Der AML-Code kann das Betriebssystem durch Aufrufen der _OSIFunktion fragen, um welches Betriebssystem es sich handelt . Dies wird häufig von Anbietern verwendet, um beispielsweise Fehler in einigen Windows-Versionen zu umgehen.

Da viele Hardwareanbieter ihre Produkte nur mit der (zu diesem Zeitpunkt) neuesten Windows-Version testen, sind die "normalen" Codepfade ohne die Problemumgehungen häufig fehlerhaft. Aus diesem Grund antwortet Linux normalerweise mit Ja, wenn es gefragt wird, ob es Windows ist. Linux antwortete auch mit "Ja", wenn gefragt wurde, ob es sich um "Linux" handelt. Dies führte jedoch dazu, dass BIOS-Anbieter Fehler oder fehlende Funktionen in der (zu diesem Zeitpunkt) neuesten Linux-Kernelversion umgingen, anstatt Fehlerberichte zu öffnen oder Patches bereitzustellen. Als diese Fehler behoben wurden, verursachten die Problemumgehungen unnötige Leistungseinbußen und andere Probleme für alle späteren Linux-Versionen.

acpi_osi=Linux Lässt Linux erneut mit Ja antworten, wenn gefragt wird, ob der ACPI-Code "Linux" enthält. Auf diese Weise kann der ACPI-Code Problemumgehungen für Linux aktivieren und / oder Problemumgehungen für Windows deaktivieren.

acpi_backlight=vendorändert die Reihenfolge, in der die ACPI-Treiber für die Hintergrundbeleuchtung überprüft werden. Normalerweise verwendet Linux den generischen videoTreiber, wenn das ACPI DSDT ein Hintergrundbeleuchtungsgerät bereitstellt, das Standardkompatibilität beansprucht, und prüft andere herstellerspezifische Treiber nur, wenn ein solches Gerät nicht gefunden wird. acpi_backlight=vendorkehrt diese Reihenfolge um, sodass zuerst die herstellerspezifischen Treiber ausprobiert werden.

cg909
quelle
3

Das erste Google-Ergebnis für "acpi_osi" erklärt acpi_osi=linux:

[...] BIOS deaktiviert normalerweise die Funktionalität, wenn Windows nicht [...] standardmäßig erkannt wird. Der Kernel antwortet falsch, wenn er gefragt wird, ob Linux ausgeführt wird. acpi_osi=Linuxteilt dem Kernel mit, wahr zu antworten (siehe drivers/acpi/osl.c). Es scheint, dass Sie dem BIOS die Wahrheit sagen müssen.

Das zweite Google-Ergebnis für "acpi_osi" erklärt acpi_backlight=vendor:

acpi_backlight=vendorwird herstellerspezifische Treiber (zB bevorzugen thinkpad_acpi, sony_acpietc.) anstelle der ACPI - video.koTreiber.

Martin von Wittich
quelle
Ich würde argumentieren, dass diese Antworten (insbesondere für acpi_osi) nicht detailliert genug sind.
Cestarian