3 января 2013 г.

Получение DSDT в Linux Ubuntu.

Данные таблиц DSDT используются для различных целей: от написания приложений для управления устройствами материнской платы до установки "Хакинтош". Также данные эти часто используются для устранения возникших проблем во взаимодействии ОС с оборудованием.

*****
Таблица DSDT является частью спецификации ACPI, отвечающей за работу устройств материнской платы. ACPI, в свою очередь, является интерфейсом конфигурации и управления питанием. Его задача определять и управлять питанием устройств компьютера, тем самым обеспечивая взаимодействие операционной системы с аппаратной начинкой компьютера.

Таблицы ACPI приведены в прошивке материнской платы компьютера и отличаются от модели к модели. А потому некоторые узконаправленные устройства могут не работать либо не совсем корректно работать в вашей ОС. Например, на новых лэптопах могут не отключаться по сигналу wi-fi модули или не затухать дисплей по закрытии крышки.

Часть подобных проблем можно решить при помощи корректировки DSDT таблицы. Но, для того, чтобы получить данные с таблицы DSDT, нам для начала необходимо сделать ее копию в домашней директории. Для чего воспользуемся командой:

sudo cat /sys/firmware/acpi/tables/DSDT > dsdt.dat

Но полученный файл в таком виде мы не сможем прочесть. Его сперва необходимо декомпилировать, а для этого нам понадобится приложение iasl. А так как в Linux Ubuntu 12.10 оно не предустановлено, и у вас, скорее всего, тоже, то установим его такой командой:

sudo apt-get install iasl

После установки iasl файл dsdt.dat можно декомпилировать такой командой:

iasl -d dsdt.dat

В итоге мы получим файл dsdt с расширением .dsl, который легко откроется в любом текстовом редакторе, например, gedit.

При помощи приложения iasl можно не только декомпилоировать, но и перекомпилировать таблицы ACPI. Для этого используется команда:

iasl -tc dsdt.dsl

После чего мы обратно получим файл dsdt с расширением .dat.

Здесь я описал пример лишь для таблицы DSDT, но данный мануал также подходит и для других. Все они находятся в той же директории, что и DSDT, то есть в /sys/firmware/tables.

2 комментария: