Linux

核心參數 acpi_osi=linux 和 acpi_backlight=vendor 有什麼作用?

  • December 13, 2020

我的筆記型電腦的螢幕亮度控制出現問題,我通過將acpi_osi=linuxacpi_backlight=vendor參數添加到文件來修復它grub.cfg。我想知道這些參數的含義以及它們為什麼起作用。

核心參數記錄在 kernel.org 上

要了解acpi_osi它的作用,您大致需要了解 ACPI 的工作原理。ACPI 由所謂的表組成,BIOS 在作業系統啟動之前將其載入到 RAM 中。其中一些只是以固定格式包含有關主機板上基本設備的資訊,但有些像 DSDT 表包含 AML 程式碼。該程式碼由作業系統執行,並為作業系統提供描述主機板上許多設備的樹形結構以及作業系統在啟用節能時執行的可呼叫函式。AML 程式碼可以通過呼叫_OSI函式來詢問作業系統是哪個作業系統。供應商經常使用它來解決一些問題,例如解決某些 Windows 版本中的錯誤。

由於許多硬體供應商只使用(當時)最新版本的 Windows 測試他們的產品,因此沒有變通辦法的“正常”程式碼路徑通常有問題。因此,當被問及是否是 Windows 時,Linux 通常會回答是。當被問及是否是“Linux”時,Linux 也曾經回答“是”,但這導致 BIOS 供應商解決(當時)最新 Linux 核心版本中的錯誤或缺失功能,而不是打開錯誤報告或提供更新檔。當這些錯誤被修復後,變通方法對所有後來的 Linux 版本造成了不必要的性能損失和其他問題。

acpi_osi=Linux當 ACPI 程式碼詢問它是否是“Linux”時,讓 Linux 再次回答是,從而允許 ACPI 程式碼啟用 Linux 的變通辦法和/或禁用 Windows 的變通辦法。

acpi_backlight=vendor更改檢查背光的 ACPI 驅動程序的順序。通常 Linux 將使用通用video驅動程序,當 ACPI DSDT 提供聲稱標準兼容性的背光設備時,如果未找到此類設備,則只會檢查其他供應商特定的驅動程序。acpi_backlight=vendor顛倒此順序,以便首先嘗試供應商特定的驅動程序。

引用自:https://unix.stackexchange.com/questions/110624