У мене виникли проблеми з керуванням яскравістю екрана в моєму ноутбуці, і я виправив це, додавши файл acpi_osi=linux
і acpi_backlight=vendor
параметри у файл grub.cfg
. Я хотів би знати, що означають ці параметри і чому вони працюють.
У мене виникли проблеми з керуванням яскравістю екрана в моєму ноутбуці, і я виправив це, додавши файл acpi_osi=linux
і acpi_backlight=vendor
параметри у файл grub.cfg
. Я хотів би знати, що означають ці параметри і чому вони працюють.
Відповіді:
Параметри ядра задокументовані на kernel.org .
Щоб зрозуміти, що acpi_osi
робить, потрібно приблизно знати, як працює ACPI. ACPI складається з так званих таблиць, які BIOS завантажується в оперативну пам'ять до запуску операційної системи. Деякі з них просто містять інформацію про необхідні пристрої на материнській платі у фіксованому форматі, а деякі, як таблиця DSDT, містять код AML. Цей код виконується операційною системою і надає ОС структурі дерева, що описує багато пристроїв на материнській платі та функції дзвінка, які виконуються операційною системою, коли включено, наприклад, енергозбереження. Код AML може запитати ОС, для якої ОС це, викликавши _OSI
функцію. Постачальники часто використовують це рішення для вирішення проблем, наприклад, навколо помилок у деяких версіях Windows.
Оскільки багато постачальників обладнання протестують свої продукти лише з (на той час) останньою версією Windows, "звичайні" кодові шляхи без обхідних шляхів часто бувають помилковими. Через це Linux зазвичай відповідає "так" на запитання, чи це Windows. Linux також відповідав "так" на запитання, чи це "Linux", але це змусило постачальників BIOS працювати над помилками або відсутністю функціональності в (на той час) останній версії ядра Linux замість відкриття звітів про помилки або надання патчів. Коли ці помилки були виправлені, вирішення проблем спричинило непотрібні штрафні показники та інші проблеми для всіх пізніших версій Linux.
acpi_osi=Linux
змушує Linux відповісти "так" ще раз, коли його запитують, чи це "Linux" за кодом ACPI, таким чином дозволяючи коду ACPI включити обхідні шляхи для Linux та / або відключити обхідні шляхи для Windows.
acpi_backlight=vendor
змінює порядок перевірки драйверів ACPI на підсвічування. Зазвичай Linux використовуватиме загальний video
драйвер, коли ACPI DSDT забезпечує пристрій з підсвічуванням, що вимагає стандартної сумісності, і перевірятиме лише інші драйвери, що відповідають певним постачальникам, якщо такий пристрій не знайдено. acpi_backlight=vendor
скасовує це замовлення, щоб спочатку спробувати конкретні драйвери.
Перший результат Google для "acpi_osi" пояснює acpi_osi=linux
:
[...] Зазвичай BIOS відключає функціональність, якщо Windows не виявлена [...] за замовчуванням ядро відповідає на помилку, коли його запитують, чи працює Linux.
acpi_osi=Linux
повідомляє ядро відповісти правдою. (див.drivers/acpi/osl.c
) Схоже, вам потрібно сказати BIOS правду.
Другий результат Google для "acpi_osi" пояснює acpi_backlight=vendor
:
acpi_backlight=vendor
віддасть перевагу конкретного постачальника драйвера (наприкладthinkpad_acpi
,sony_acpi
і т.д.) замість ACPIvideo.ko
драйвера.