Ugolnik's Family blog

Различные заметки обо всем.

Browsing Posts tagged BIOS

Удалось мне пропатчить DSDT таким образом, что бы лэптоп просыпался после suspend-2-ram. Делюсь методикой.

Ставим BIOS последней версии.

Вся проблема в том, что последние версии прошивальщиков идут только под Windows. Скрипт для определения, чего и как шить написан на BASICе. Нас это не остановит.

Переименовываем файл прошивки SanAntonion10 BIOS590MP.exe в нечто с расширением rar590.rar и распаковываем его UNRARом.
Нас интересуют только файлы с расширением ROM. В зависимости от того, какая у вас видеокарта, выбираем нужный файл (GM – для лэптопов с Intel GMA, PM – для лэптомов с ATI/AMD и nVidia).

Так же нам понадобится DOS-версия флешера phlash16.exe (можно взять из старых версий прошивок в ISO-образе).


Подготовка к прошивке. Загрузочный диск.

Поскольку у меня нет флоповода, я воспользовался DVD. Взял ISO-образ инсталяционного диска FreeDOS, при помощи ISO Master положил в корень диска два файла phlash16.exe и s10pm590.rom. Записал этот образ на DWD-RW.


Прошивка.

Прошивку выполнял как обычно – загрузился со вновь созданного диска. И из командной строки выполнил команду:

phlash16.exe s10pm590.rom /X /MODE=3

Все ключи взяты из батника, который находится в ISO-образе старых версий прошивок. Но, судя по описанию ключей, они не обязательны.


Исправляем DSDT.

Тут я воспользовался мануалом на gentoo-wiki.com – HOWTO Fix Common ACPI Problems.

Нам понадобится Intel ACPI Source Language (ASL) compiler.

Делаем дамп DSDT:

# cat /proc/acpi/dsdt > dsdt.dat

Декомпилируем дамп:

# iasl -d dsdt.dat

Ищем в файле dsdt.dsl слово _OSI, исправляем Store (One, LINX) на Store (0×03E8, OSYS) (как вариант можно использовать Store (0×07D6, OSYS)). Возможно, лучшим вариантом было прикинуться, какой-нибудь Windows, но я поленился ;)

Компилируем заново:

# iasl -tc dsdt.dsl

Если ошибок компиляции небыло, то на выходе получаем два файла – dsdt.aml и dsdt.hex. Нас интересует последний.


Компиляция ядра с новым DSDT.

Далее все строго по мануалу Встраивание в Кернел.
Перегружаемся и проверяем. В моем случае нареканий небыло.

Вообще после всей проделанной работы, у меня сложилось впечатление, что Toshiba намерено внесла такие коррективы в биос.

Данная статья устарела. Написал новую статью Toshiba a100-906, BIOS 5.90 + suspend-2-ram.


Утомило меня постоянно делать suspend-2-disk, захотелось большего – suspend-2-ram. Что пришлось сделать:

  1. Перешил биос на версию 2.10 (прошивку получил на форуме ixbt). Перешивал вручную с помощью phlash16.exe, т.к. автопрошивальщик не хочет делать downgrade с текущей версии биоса (на данный момент была последней 5.90).
  2. Удалил sys-power/cpufreqd, kde-base/klaptopdaemon, app-laptop/laptop-mode-tools. Вместо них использую sys-power/powersave и sys-power/kpowersave.

Есть и минусы – не регулируется яркость подсветки, перестали работать мультимедийные клавиши.
На данный момент есть идея взять DSDT из биоса 2.10, вкомпилить его в ядро (благо такая возможность есть), установить последнюю версию биоса.

Столкнулся с проблемой – принесли компьютер в ремонт – по какой то причине не видна и не доступна полная емкость HDD Seagate ST3250820AS. Диск емкостью 250 G в биосе виден как 136 G или как 128 G. Все понятно, нужна поддержка LBA 48 bit. Но мамка то современная – GA-K8N-SLI. Кроме того, на другой мамке ситуация аналогичная.

Ладно, предположим, что мамка без поддержки LBA 48 bit, но ведь Windows XP sp2 или Linux должны работать с диском минуя биос, а следовательно поддержка материнкой не так уж и важна. Ну подумаешь, бутовый раздел должен располагаться в пределах первых 128 G. Это совсем мелкое ограничение мало кого может волновать. Но не тут тот было – ни Windows XP sp2, ни Linux не видят больше, чем показывает биос.

Пришлось “гуглить” и читать форум производителя материнской платы. Выяснилось, что есть такая “замечательная” функция у винчестера (появился он еще во времена LBA 28 bit) как HPA – Host Protected Area, которая позволяет ограничить физический объем диска. Что и случилось в моем случае – именно Seagate и некоторые маеринки от Gigabyte не дружат друг с другом. Если предыдущие модели Seagate и модели других производителей еще можно вернуть к нормальному состоянию, то 7200.10 лечится только в сервисном центре.

Есть хорошие утилиты, позволяющие восстановить первоначальную емкость диска – Victoria (тут же и подробная статья) и mhdd. Утилиты бесплатные, создаают згрузочную дискетку. Но, к сожалению, не всегда они способны помочь восстановить значение HPA в заводское состояние.