illumium.org

Главная

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, даём ему права на выполнение, выполняем какой-нибудь запрос.

Ссылки

VGA Switcheroo

Спецификация ACPI

Модуль acpi_call

Вверх
  • Версия для печати
  • Добавить комментарий
RSS-материал

Навигация

  • Подшивки
  • Фотоальбомы

Работает на Drupal, система с открытым исходным кодом.

(L) 2010, Illumium.Org. All rights reversed ^_~