ACPI Info
kayo — Втр, 01/03/2011 - 13:15
Как сдампить и декомпильнуть ACPI DSDT
Способ первый
Устанавливаем если не стоит:
sudo apt-get install acpidump iasl
Дампим и декомпилим:
sudo acpidump > acpidump.txt sudo acpixtract acpidump.txt iasl -d DSDT.dat && ls -l DSDT.dsl
Способ второй
Устанавливаем если не стоит:
sudo apt-get install iasl
Дампим и декомпилим:
sudo /proc/acpi/dsdt > DSDT.dat iasl -d DSDT.dat && ls -l DSDT.dsl
База dsl-ок
Если также как и я умудрились попортить свою ACPI подсистему обновлением BIOS-а, нам понадобится оригинальная DSDT.dsl. Где и как их искать под конкретное устройство, я не знаю, однако есть шанс найти в базе выкладываемых пользователями в сети. Самый большой список тут: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/312756/+activity однако найти там что-либо не так то просто, поэтому предлагаю поступить следующим образом:
- Выкачиваем всю базу так:
wget -c -O - https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/312756/+activity \ | sed -e 's/<[^>]*>/\n/g' -e 's/ /\n/g' \ | grep '^http.*\.dsl$' \ | while read dsl; do wget -c -O tmp.dsl $dsl mv tmp.dsl `cat tmp.dsl | md5sum | sed 's/[[:space:]]*\-$/.dsl/g'` done
Скрипт создаст в текущем каталоге кучу файлов названных по md5 хешу их содержимого.
grep K42J *.dsl
Инфа о системе и установленном оборудовании
sudo dmidecode -s system-product-name && sudo dmidecode -s system-version lspci -vnnn | perl -lne 'print if /^\d+\:.+(\[\S+\:\S+\])/' | grep VGA
Использование acpi_call
Для быстрой проверки идей можно выполнять ACPI запросы вручную, для чего нам потребуется модуль acpi_call. Ставим git, если не стоит, и берём исходник модуля:
sudo apt-get install git git clone https://github.com/mkottman/acpi_call.git acpi_call
Затем собираем и пробуем загрузить (конечно же у вас должен стоять пакет заголовочных файлов для установленной в системе версии ядра):
cd acpi_call make sudo insmod acpi_call.ko
Пишем простенький скрипт для выполнения запросов и просмотра результатов:
#!/bin/sh dev=/proc/acpi/call echo $* > $dev echo $(cat $dev)
Сохраняем в файл acpi_call, даём ему права на выполнение, выполняем какой-нибудь запрос.
Ссылки
