Вход Регистрация

Забыли пароль?

Чужой компьютер

Сообщения пользователя Taras-ua

(сообщение #1 - #25)
Вначале немного истории, теории и зачем вообще это нужно.

Являясь владельцем двух ноутбуков ASUS U6V (рабочий) и Acer 6935G (домашний) периодически сталкиваюсь с проблемой повышенного нагрева ASUS, из турбины выдувается воздух по температуре как из фена, даже в ненагруженном режиме. Это обусловлено конструкцией данного ноутбука ввиду его малых габаритов и достаточно "горячего" процессора P8600. Имея некоторый опыт по оптимизации производительности и тепловыделения для микросерверов основанных на процессорах Xeon серии L, решил посмотреть какая версия микрокодов для моего процессора загружается в ноутбуке. На ноутбуке стоит предпоследний BIOS версии 213, последний 214 версии не поддерживает WakeOnLan, а он мне важен для работы. Версия микрокодов для моего процессора датирована 2008 годом, поискав обновления нашел последнюю версию от 2010 года, очевидно в это время закончилась поддержка Интелом данного процессора. Путем несложных манипуляций по замене микрокода в BIOS и перепрошивке, я получил ноутбук с процессором на последней версии микрокодов. На какое-то время я забыл об этом и обнаружил что мой ноутбук стал меньше греться, турбина в обычном ненагруженном режиме не поднимается выше 4200 оборотов и из неё дует теплый воздух, а не горячий как ранее.

Итак немного теории. Микрокоды были внедрены в процессоры для возможности программного исправления ошибок преобразования и выполнения команд x86 системы в RISC uops. Воизбежание отзыва процессоров с обнаруженной проблемой прозводители стали применять загружаемые микрокоды. При каждой загрузке вашего ноутбука или ПК, BIOS материской платы по определенному протоколу пересылает в процессор обновленные микрокоды. По мере обнаружения ошибок производители обновляют и оптимизируют версии микрокодов. Это одна из причин почему вам настоятельно рекомендуют прошивать последнюю версию BIOS, которая в теории должна содержать последние микрокоды. Но на практике это не всегда так. Обновления микрокодов выпущены производителем процессоров, а производители, в данном случае, ноутбуков не спешат с обновлениям BIOS.

Я не могу напрямую доказать влияние микрокодов на тепловой режим работы процессора, но факты на лицо. Мои размышления остановились на том, что микрокоды кроме основного своего назначения - исправлять ERRATA ошибок команд, влияют на EIST (Enhanced Intel Speed Step Technology) и позволяют более оптимально переводить процессор в состояния пониженного энергопотребления, что влечет за собой облегчение теплового режима.

Перейдем окончательно к вопросу зачем это нам нужно:
- исправим ошибки, обнаруженные производителем процессоров;
- улучшим тепловой режим в моем случае (я не могу гарантировать что на ваших ноутбуках будет также, но могу предположить что будет аналогично).

Если у вас нет уверенности, что вам это нужно, далее можете не читать.
Итак, какого же было мое очередное разочарование в разработчиках ACER, точнее компании-подрядчике производящей для Acer ноутбуки. Ранее я уже писал про невозможность включения VT (Virtual Technology) посредством BIOS в нотбуке Acer 6935G. Теперь насколько просто замена микрокодов реализована в AMI BIOS с помощью утилиты MMTOOL. И насколько непрозрачен механизм обновления микрокодов на Insyde H2O BIOS. Хотя утилита обновления FlashIt и имеет специальный ключ /FM для обновления микрокодов. Отдельно обновлять биос файлами микрокодов она отказалась, только из файла образа биоса для вашей модели. И тут производитель о нас покупателях не позаботился... Прийдется самим исправлять эту ситуацию.

Нам понадобится:
- AIDA (она же Everest в прошлом), для примера взял версию 4.5 Portable Edition;
- обновления микрокодов для процессоров Intel с сайта Intel, последнее датировано 30 апреля 2014;
- любой Hex редактор, для примера взял WinHex 16.9;
- BIOS для вашей модели с сайта Acer, для меня версия 1.20 модель 6935G;


1) Запускаем AIDA и в секции CPUID смотрим какой у нас процессор и версия микрокодов загружена в него.
в моем варианте это CPUID 10676 (Core 2 Duo Penryn) степпинг С0, версия микрокодов 60С;

2) Берем обновления микрокодов для процессоров Intel, для вашего удобства я их уже распаковал из DAT файла.

Сверяем по версии CPUID и платформы находим соответствующий файл микрокодов. Находим файл содержащий микрокоды версии 60F, которые новее имеющихся у меня в BIOS версии 1.20; Внимание !!! Обязательно берите обновления только для вашего CPUID и идентификатора платформы !!!

3) Открываем файл нашего BIOS в WinHex. Поскольку BIOS грузит микрокоды непосредственно из памяти в процессор они всегда находятся в файле биоса в несжатом виде. Ищем HEX строку (Ctrl+Alt+X) согласно номера CPUID нашего процессора, младшим байтом вперед для 10676 это будет 760601;
У меня совпадение находит в строке по адресу 00187000. Убеждаемся что это не случайное совпадение. По смещению 4 должна быть версия наших текущих микрокодов 060С (байты в обратном порядке), а по смещению 18 идентификатор нашей платформы 80. Значит мы нашли правильное место.

4) Открываем в WinHex выбранный нами файл микрокодов. Выделяем блок содержащий весь файл микрокодов (Ctrl+A).

5) Копируем блок (Ctrl+C) и переходим на вкладку с нашим биосом.

6) Ставим курсор в позицию 00187000.

Выполняем запись блока как на картинке (Ctrl+B).

Должны получить следующее предупреждение о записи блока:

Нажимаем Ok и получаем следующий вид:

Сохраняем получившийся BIOS в новый файл для примера 140613_UPD.FD.

Записываем его на флешку с которой собираемся обновлять наш BIOS вместе с утилитой FlashIt.

7) Грузимся с флешки и запускаем Flashit <имя_нашего_сохраненного_файла> /FM
Наблюдаем процесс обновления в BIOS области микрокодов, который завершается перезагрузкой системы.

Загружаемся в Windows, запускаем AIDA и проверяем номер обновленных микрокодов для нашего процессора.


Файловый архив микрокодов и обновленный BIOS. Скачать ACER_6935G_MICROCODE_UPDATE.rar

Владельцы модели 6935G могут просто выполнить пункт 7 с файлом 140613_UPD.FD
Обновил ссылки в статье.
iexplorer,
да у Secureable были замечены некие неадекватные случаи поведения )))

по новым BIOS - присылайте dump посмотрим, что можно сделать.
Честно сказать странная ситуация, по коду все должно сработать...
А что пишет VirtualBox о состоянии виртуализации на патченом BIOS ?
iexplorer,

Какой у вас процессор?
iexplorer,

Вы проделали большую работу. Но к сожалению по вашей ссылке я скачать BIOSы не могу. Выложите их на файлообменник или почтой taras-ua@mail.ru

По блютусу у вас Broadcom овский адаптер:
USB\\VID_0489&PID_E011&REV_0861 Broadcom Corporation / Hon Hai Precision Ind. Co.,Ltd. BCM92046

Попробуйте стек от Майкрософта Здесь есть ссылка на совместимость.
Флешер (DOS) который вы выложили содержит внутри себя DOS утилиту - Insyde Flash Utility for InsydeH2O 1.3w IHISI 1.8.6
Ею или более поздней версией можно сделать копию вашего BIOS с ключом /G Save current BIOS to file (from IHISI)

Вот версия 1.3q IHISI 1.8.0
Думаю тоже подойдет.
iexplorer,
Сделайте копию вашего BIOS и выложите. Постараюсь помочь.
ev-kov,

Внимательно читай статью ))) до конца, там все описано )))

"P.S. Для модели Aspire 7720

Обращаемся на сайт производителя ACER, находим и устанавливаем BIOS с сайта производителя для модели 7720, на данный момент последняя протестированная версия 1.45.
Файлы vtenable.py берем ЗДЕСЬ . Файл diff.txt будет иметь только одну строчку."

- slic потеряешь - перезашьется;
- mac - не потеряешь - флешер умный и не перезатирает MAC.

Насчет вылетов - поподробнее:
- Какая версия VirtualBox? (последняя 3.1.8)
- Верно ли ты выбираешь версию системы? (должна быть именно x64)

lexalexalexa,

Taras-ua,
Нет, я просто не нашёл изменений в VSS)))
Т.е ты изменил что-то, но я не понял, что, но точно не Vt.


Значит не там или плохо искал )
Значение VT меняется именно в VSS )))
Могу выложить дамп, если нужно. Он выводится на экран во время патча.
ev-kov,
fellow спасибо, плюсиком в репутацию

разница в файлах как видите только по одному адресу.
Это о чем нибудь говорит ?
Можно пользоваться таким биосом ?


Что собственно смущает? 1 байт - изменяется только само значение ))) CRC в этом типе BIOS не вычисляется.
-=AsteriX=-,
Пропатчить можно только "живой" BIOS слитый из Вашего ноутбука, BIOS с сайта производителя не инициализирован.
-=AsteriX=-,
Securable изначально 32х битное приложение и под 64х битной ОС работает в эмуляторе - соответственно не может определять реальное состояние MSR.

Загрузите с LiveCD 32х битную ОС и запустите Securable.

reylby,
нет, поддержки от производителя нет.
и похоже в ближайшее время не предвидится.
Господа, охотно приму "живые" BIOSы в работу.
Не забывайте указывать с какой модели и версию.
Добавлена поддержка 2930. smile
Zmei_gorini4,
nestav,
перепробовал на биосах 1.01\\\\1.12\\\\1.13\\\\1.14\\\\1.15\\\\1.17
не прокатило
может быть я сделал что-то не так


Пришлите "живой" образ BIOS от 2930
taras-ua@mail.ru

=======================================

Успешно пропатчен BIOS ver 1.20
Всем удачных апдейтов smile
restless,

Здесь есть описание по Phoenix BIOS, правда для моделей Sony.
Но если есть возможность, можно адаптировать.
restless,

Нет, этот метод работает только с BIOS InsydeH2O.
slovelissimo,
BIOS сетевухи и PXE loader составные части основного BIOS матплаты. В дампе своего BIOS вы можете найти MAC в прямом виде. Т.е. старший байт первый.
Обращение ко всем. Не вздумайте шиться чужим BIOSом !!!
Потеряете минимум свой MAC адрес не считая DMI области с UUID и т.п.

Метод потому так и построен, что за основу преобразований берется именно имеющийся ИНДИВИДУАЛЬНО у каждого свой BIOS.
FuzzyL,
Простите, вставлять DOS screenshot`ы считаю бессмысленным, только нагружают восприятие... Поскольку 99% действий происходит именно в этой ОС, какого плана еще картинки возможны?

Все ссылки на объекты в тексте или какие ссылки вы имели ввиду?
slovelissimo,

Статью причесал. Добавить не получилось, не хватает прав для размещения статей. )))
slovelissimo, спасибо. По написанию статей у меня нет опыта, если вопрос только в детализации и предупреждениях - добавлю )))

Это проба пера, можно так сказать, я планирую расширить поддерживаемый модельный ряд, сейчас тестирую на 6920. Не хватает физически тестирования на разных моделях и дампов BIOS с них.
Ни для кого не будет секретом, что некоторые производители ноутбуков, не хочется показывать пальцем ;) Sony, Acer … считают что ноутбук все еще некое урезанное подобие десктопа и посему ему не требуется выполнять все функции которые возложены на домашний компьютер как таковой. Примером тому является невозможность включения штатными методами технологии аппаратной виртуализации (VT), поддерживаемой большинством современных процессоров Intel. Наличие аппаратной поддержки у Вашего процессора можно посмотреть на сайте Intel . Проверить состояние битов разрешения и блокировки можно утилитой Securable . "On" - виртуализация включена, "Off" - отключена, "Locked" - изменение MSR заблокировано. Соответственно, типичное для ноутбуков сочетание "Off / Locked" означает невозможность использования 64-разрядных гостевых систем.

Меня такой подход не устраивает в принципе, я заплатил за свой Aspire деньги и хочу чтобы он их отрабатывал.

В Windows 7 есть великолепный механизм установки Windows XP в качестве виртуальной машины полностью поддерживаемый Microsoft с точки зрения легальности и апдейтов. Одно НО этот механизм построен на базе Microsoft Windows Virtual PC, которая без аппаратной поддержки VT не работает. (На момент написания статьи).



Итак, хватит лирики. Исправим этот недостаток производителя.

На текущий момент есть два пути решения.

Первый, подразумевает собой декомпиляцию блоков BIOS, нахождения в нем машинного кода запрещающего VT в MSR регистре и блокирующего дальнейшую модификацию MSR. Данный метод весьма трудоемок и требует недюжинных знаний, как архитектуры процессора, так и программирования на низком уровне.

Второй, поиск в BIOS так называемой VSS таблицы, которая хранит текущие настройки BIOS в энергонезависимой памяти (которая в данном случае является частью BIOS). Данный метод не модифицирует основной код BIOS, изменения вносятся только в таблицу VSS.

Вот на нем мы и остановимся более подробно.

Хочу предостеречь всех, кто пойдет по моим стопам, Вы выполняете все операции на свой страх и риск. Данные манипуляции, при некорректном выполнении, могут привести к полной неработоспособности ноутбука. Перед началом задайте себе вопрос: - А действительно ли вам это нужно? И если у Вас есть хоть тень сомнения, откажитесь от данной затеи.

ВЕСЬ МАТЕРИАЛ, ПРИВЕДЕННЫЙ НИЖЕ, АДАПТИРОВАН ПОД МОДЕЛИ ACER ASPIRE 6935, 8930, 2930 и 7720 (для 7720 см. отдельно внизу). С BIOS InsydeH2O НА КОТОРЫХ И ПРОХОДИЛ ТЕСТИРОВАНИЕ. ОН ТАКЖЕ БУДЕТ РАБОТОСПОСОБЕН НА ДРУГИХ МОДЕЛЯХ ИСПОЛЬЗУЮЩИХ ДАННЫЙ BIOS.

Итак, спасибо товарищу MARCAN, за наше счастливое даром не потраченное время.

Первоисточник - форум. Для глобальных познаний.

Он разработал данный метод , я лишь внес возможность исполнения его под Windows (не умею я работать под Linux) и многократным тестированием довел его до весьма упрощенной процедуры.

Перед началом работы вам нужно иметь загрузочный DOS USB Flash накопитель, Microsoft Windows 7 Ultimate с любой установленной программой виртуализации для проверки и Total Commander или аналогичный файловый менеджер.
Обращаемся на сайт производителя ACER, находим и устанавливаем BIOS с сайта производителя для моделей 6935-8930, на данный момент версия 1.20 (успешно проверено 11 апреля 2010).

Качаем архив BURN с необходимыми нам утилитами ЗДЕСЬ .

Посещаем страничку PYTHON и скачиваем Python Installer 2.6 для Windows (соответственно 32 или 64 разрядный в зависимости от вашей ОС). Устанавливаем его с действиями по умолчанию.

1. Подключаем наш USB флеш накопитель. Из архива берем каталог BURN и копируем его на флешку.

2. Перезагружаемся и заходим в Setup по F2. Выполняем Load Setup Defaults после чего переходим в секцию Boot и поднимаем по F5/F6 накопитель USB флеш на первую строчку в списке загрузки. Сохраняем параметры и грузимся с флешки.

3. Переходим в каталог BURN и выполняем команду:

Flashit.exe bios_cur.fd /G

На экране отображается процесс чтения BIOS. Этой командой мы сохраняем наш текущий BIOS, вместе с областями переменных, в файл bios_cur.fd на флеш накопителе.

4. Вынимаем флеш накопитель из разъема.

5. Нажимаем Ctrl+Alt+Del и перезагружаемся в Windows.

6. Подключаем флеш накопитель. Запускаем Total Commander или иной файловый менеджер. Открываем каталог BURN на флешке и выполняем команду:

vtenXXXX.py bios_cur.fd bios_mod.fd

XXXX соответствует модели вашего ноутбука. Эта команда выполняет скрипт, который находит область VSS в теле сохраненного нами BIOS и модернизирует однобайтовое значение отвечающее за разрешение VT, а также корректирует контрольную сумму блока данных VSS. В результате мы получаем файл модернизированного BIOS bios_mod.fd

7. Проверяем результат действия скрипта, для чего вводим команду:

fc /b bios_cur.fd bios_mod.fd >diff.txt

Эта команда выполняет побайтовое сравнение файлов BIOS до и после модификации и записывает полученный результат в файл diff.txt Открываем для просмотра файл diff.txt. Если все прошло успешно мы увидим следующую картинку:

Сравнение файлов BIOS_CUR.FD и BIOS_MOD.FD
0018148D: 16 15
00181649: 00 01


Значения 0018148D и 00181649 это смещение от начала файла в HEXформе. Значения 16 и 15, будут индивидуальны у каждого, главное чтобы второе значение было на единицу меньше первого. Значения 00 и 01 будут такими у всех.

8. Перезагружаем компьютер и грузимся с флешки. Переходим в каталог BURN и выполняем команду:

Flashit.exe bios_mod.fd

На экране отображается процесс записи BIOS, который завершается перезагрузкой. После перезагрузки заходим в Setup и настраиваем процесс загрузки по своему усмотрению. Можно настраивать все, кроме выполнения Load Setup Default которая вернет таблицу VSS в первоначальное состояние и сбросит разрешение VT.

Вот мы и получили ноутбук с пропатченным BIOS.
Теперь загружаем Windows, стартуем Microsoft Virtual PC и наслаждаемся )))

Огромное спасибо господину MARCAN, береги его Господь )))

P.S. Для модели Aspire 7720

Обращаемся на сайт производителя ACER, находим и устанавливаем BIOS с сайта производителя для модели 7720, на данный момент последняя протестированная версия 1.45.
Файлы vtenable.py берем ЗДЕСЬ . Файл diff.txt будет иметь только одну строчку.
Opiym,
" (Код 52)" И стоит восклицательный знак ! Что делать ???"

давай мыло, скину, проверен на 7600 билде.
Template not found: /templates/acerfans/advert.tpl