Я имел проблемы с контролем яркости экрана в моем ноутбуке , и я установил его, добавив 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 не обнаруживается [...] по умолчанию ядро отвечает false, когда его спрашивают, работает ли Linux.
acpi_osi=Linux
говорит ядру, что оно отвечает true. (см.drivers/acpi/osl.c
) Кажется, вам нужно сказать BIOS правду.
Второй результат Google для "acpi_osi" объясняет acpi_backlight=vendor
:
acpi_backlight=vendor
предпочтет драйвер конкретного производителя (напримерthinkpad_acpi
,sony_acpi
и т. д.) вместоvideo.ko
драйвера ACPI .