Do czego służą parametry jądra acpi_osi = linux i acpi_backlight = vendor?

21

Miałem problemy z regulacją jasności ekranu w moim laptopie i naprawiłem to, dodając parametry acpi_osi=linuxi acpi_backlight=vendordo pliku grub.cfg. Chciałbym wiedzieć, co oznaczają te parametry i dlaczego działają.

użytkownik91655
źródło

Odpowiedzi:

28

Parametry jądra są udokumentowane na stronie kernel.org .

Aby zrozumieć, co acpi_osirobi, z grubsza potrzebujesz wiedzieć, jak działa ACPI. ACPI składa się z tak zwanych tabel, które BIOS ładuje do pamięci RAM przed uruchomieniem systemu operacyjnego. Niektóre z nich zawierają po prostu informacje o niezbędnych urządzeniach na płycie głównej w ustalonym formacie, ale inne, takie jak tabela DSDT, zawierają kod AML. Ten kod jest wykonywany przez system operacyjny i zapewnia systemowi drzewnemu strukturę drzewiastą opisującą wiele urządzeń na płycie głównej oraz funkcje do wywołania, które są wykonywane przez system operacyjny, gdy np. Włączone jest oszczędzanie energii. Kod AML może zapytać system operacyjny, który to system, wywołując _OSIfunkcję. Jest to często wykorzystywane przez dostawców w celu obejścia problemów, np. Dotyczących błędów w niektórych wersjach systemu Windows.

Ponieważ wielu dostawców sprzętu testuje swoje produkty przy użyciu (wówczas) najnowszej wersji systemu Windows, „zwykłe” ścieżki kodu bez obejść są często błędne. Z tego powodu Linux zwykle odpowiada tak, gdy pyta się go, czy to Windows. Linux również odpowiadał „tak”, gdy pytano go, czy jest to „Linux”, ale to spowodowało , że dostawcy BIOS-u omijali błędy lub brakowali funkcji w (w tym czasie) najnowszej wersji jądra Linuksa zamiast otwierać raporty o błędach lub dostarczać łaty. Kiedy te błędy zostały naprawione, obejścia spowodowały niepotrzebne obniżenie wydajności i inne problemy dla wszystkich późniejszych wersji Linuksa.

acpi_osi=Linux powoduje, że Linux ponownie odpowiada „tak” na pytanie, czy jest to „Linux” za pomocą kodu ACPI, umożliwiając w ten sposób kodowi ACPI włączenie obejścia dla systemu Linux i / lub wyłączenie obejścia dla systemu Windows.

acpi_backlight=vendorzmienia kolejność sprawdzania sterowników ACPI podświetlenia. Zwykle Linux używa ogólnego videosterownika, gdy ACPI DSDT zapewnia urządzenie podświetlające, twierdząc, że jest zgodne ze standardem, i sprawdza inne sterowniki specyficzne dla dostawcy, jeśli takie urządzenie nie zostanie znalezione. acpi_backlight=vendorodwraca tę kolejność, aby najpierw wypróbować sterowniki specyficzne dla dostawcy.

cg909
źródło
3

Pierwszy wynik Google dla „acpi_osi” wyjaśnia acpi_osi=linux:

[...] BIOS zwykle wyłącza funkcjonalność, jeśli Windows nie jest wykrywany [...] domyślnie jądro odpowiada na pytanie, czy Linux jest uruchomiony. acpi_osi=Linuxinformuje jądro, aby odpowiedziała prawdą. (patrz drivers/acpi/osl.c) Wydaje się, że musisz powiedzieć BIOSowi prawdę.

Drugi wynik Google dla „acpi_osi” wyjaśnia acpi_backlight=vendor:

acpi_backlight=vendorwolą kierowcy konkretnego dostawcy (np thinkpad_acpi, sony_acpiitp) zamiast ACPI video.kokierowcy.

Martin von Wittich
źródło
Twierdzę, że te odpowiedzi (szczególnie dla acpi_osi) nie są wystarczająco szczegółowe.
Cestarian