Да, вероятнее всего виноват UEFI, либо какое-то оборудование, которое не хочет спать и просыпаться нормально.
WOL есть почти во всех современных UEFI, но может быть достаточно глубоко запрятан с настройки Power Management, стоит поискать.
У меня есть полный образ от iMac 12.2.
Apple использует нестандартную файловую систему для некоторых FV, которая не похожа по структуре на вышеописанную. В моем дампе два таких нестандартных региона. Также Apple использует дублирование регионов, чтобы при повреждении одного можно было продолжить загрузку из другого, этот же прием использует ASUS на своих десктопных платах.
Образ BIOS'а у Apple — обычный Intel Flash Image, он открывается и поддается настройке через FITC.
Не перерабатывая прошивку достаточно глубоко — не получится, а без исходного кода и платформы для сборки сделать такую переработку было бы подвигом.
Я не думаю, что для плат на чипсетах 6 серии будут еще выпущены UEFI с поддержкой SecureBoot и FastBoot — производитель считает их устаревшими.
Я занимался восстановлением BIOS'ов после известного пользователям плат ASUS на P67 и Z68 сбоя при обновлении МЕ. вот моя тема на форуме overclockers.ru. В тот момент у меня было много времени на это хобби, т.к. я посещал языковые курсы после переезда в Германию, да и тема показалась интересной. Сейчас времени стало меньше, но интерес не пропал, зато появилось желание разобраться в теме получше. А лучший способ разобраться самому в чем-то — это попытаться другим это объяснить. Вот и объясняю по мере сил.
Для UEFI я пробовал писать простой DXE-драйвер, и портировал в среду UEFI свою утилиту FD44Copier, но загрузчик разрабатывать не буду пока.
Как раз хотел писать во второй части своей статьи про этот патч, но вы меня опередили.
От себя посоветую в следующий раз использовать не IDA Pro, которая далеко не всем доступна, а бесплатная версия не поддерживает 64-битые исполняемые модули, а objdump в Linux или dumpbin из MSVC в Windows.
Написал, вот она.
Часть получилась не вторая, а полуторная, т.к. информации, если ее расписывать подробно, оказывается слишком много для одной статьи, приходится делить.
Файл с UEFI Shell нужно положить либо на EFI System Partition, либо на внешний носитель с ФС FAT32 и назвать либо shell.efi, либо shell64.efi, либо чаще всего shellx64.efi, после чего подключить носитель и выбрать эту опцию. На всех платах, которые у меня есть — работает, но не все версии UEFI Shell запускаются, приходится скачивать и пробовать разные.
Во второй части я расскажу о процессе загрузки UEFI. Сейчас RAM инициализируется в конце второй фазы загрузки, а вся работа до этого происходит в кэше процеессора. А вообще, процесс начальной загрузки изменился не сильно, но переход в защищенный режим происходит теперь гораздо раньше.
Не думаю, что хаб UEFI будет чисто академическим, с учетом идущих вокруг SecureBoot холиваров.
На самом деле, эта статья — не чистое знание, а чистое «чуть чуть прошелся по верхам, и оборвал на самом интересном месте».
Тема UEFI очень обширная, тут и процесс загрузки, и разнообразие форматов исполняемых файлов, и схожесть структур данных в UEFI и Windows, и EDK, и UEFI Shell, и сборка своих исполняемых файлов для UEFI, и написание DXE-драйверов, и NVRAM, и SMM, и безопасность, и виды защит от прошивки, и это половина процента всего, что можно написать про UEFI, и что не будет выглядеть так скучно, как эта статья.
Если интересно — можно продолжать, если не сильно — можно написать пост со списком того, что стоило бы почитать на эту тему и остановиться на этом.
SecureBoot нужен только потому, что без него там вообще никакой безопасности нет. UEFI — это самая настоящая OS, работающая в ring 0, а частями и ниже, и имеющая собственные драйверы, собственный сетевой стек и доступ до всей памяти и всех устройств в обход основной ОС.
Без какой-либо защиты, в том виде, в котором оно реализовано на платах на P67/Z68 — это кошмар любого безопасника.
Любой получивший один раз рута код может сделать с БИОСом что угодно.
И не просто стереть его, а записать своих модулей, которые, при грамотном программировании, даже обновление БИОСа стандартными средствами будут переживать.
И все это вот нам подается под соусом «ускоряем загрузку на 10 секунд, пишем БИОС на С, в настройках высокое разрешение и мышь!» Поэтому SecureBoot — все-таки хоть какой-то, но выход из сложившейся ситуации.
ИМХО, лучшая реализация «двойного» БИОСа сейчас у EVGA на новых платах.
Там три разных микросхемы, одна из которых не припаяна, а посажена в ZIF-кроватку.
Никаких хитрых механизмов нет и не нужно, сломалось — щелкнул тумблером, загрузился, щелкнул обратно, прошил новую версию.
И всякие проприентарные прошивальщики они не используют, доверяя прошивку надежному и простому Intel FPT.
И Phoenix, и InsydeH2O, которые как раз и используюся Dell, HP и Lenovo — нисколько не менее глючные. Про новые Dell с UEFI 2.3.1C и SecureBoot сказать ничего пока не могу — не сталкивался, а вот на старых багов не меньше, если не больше, чем на десктопных AMI, и чинят их также крайне неохотно. Но хотя бы белых списков оборудования Dell не вводит и файлы BIOS Update не шифрует, как это делают HP и Lenovo.
Только за одни белые списки, из за которых каждую новую версию БИОСа приходится модифицировать и шить нестандартными способами, я больше никогда решения ни HP ни Lenovo не куплю, пусть там UEFI хоть каким отличным будет. Оборудование и так делают все более закрытым, а чтобы какой-то кореец решал, какие 3G-модем и WiFi-карту я могу поставить в свой ноутбук, а какие нет — увольте.
С учетом включенных на этом ноутбуке по умолчанию Intel AT и защиты от записи сторонними утилитами прошить такой модифицированный БИОС может быть очень непросто.
Поэтому нужно писать в техническую поддержку и требовать возврата опции в список доступных для редактирования. Если быть достаточно настойчивым — вернут.
Посмотрел в доступные настройки BIOS'а N76VZAS.213 на предмет отключения SecureBoot с помощью AMIBCP.
Возможность эта в прошивке есть и должна быть на вкладке Security.
Отображается эта настройка или нет — другой вопрос, конечно.
Не знаю, откуда в русской версии презентации эти слова про диск, в английской их нет. Да и микросхем там все же две, а восстановление работает без жестких дисков, так что вопросы тут к переводчику, скорее.
Нет, это про другое. На платах Gigabyte установлено 2 микросхемы SPI flash и при невозможности старта с основной происходит старт с дополнительной, копирование содержимого дополнительной в основную и старт с основной. Таким образом, пользователю после сбоя достаточно подождать 2 минуты, пока выполняется копирование, и потом выставить свои настройки заново.
Вообще, идея установки на плату нескольких микросхем SPI flash — очень хорошая, жаль, что не все производители это понимают.
WOL есть почти во всех современных UEFI, но может быть достаточно глубоко запрятан с настройки Power Management, стоит поискать.
Apple использует нестандартную файловую систему для некоторых FV, которая не похожа по структуре на вышеописанную. В моем дампе два таких нестандартных региона. Также Apple использует дублирование регионов, чтобы при повреждении одного можно было продолжить загрузку из другого, этот же прием использует ASUS на своих десктопных платах.
Образ BIOS'а у Apple — обычный Intel Flash Image, он открывается и поддается настройке через FITC.
Я не думаю, что для плат на чипсетах 6 серии будут еще выпущены UEFI с поддержкой SecureBoot и FastBoot — производитель считает их устаревшими.
Для UEFI я пробовал писать простой DXE-драйвер, и портировал в среду UEFI свою утилиту FD44Copier, но загрузчик разрабатывать не буду пока.
От себя посоветую в следующий раз использовать не IDA Pro, которая далеко не всем доступна, а бесплатная версия не поддерживает 64-битые исполняемые модули, а objdump в Linux или dumpbin из MSVC в Windows.
Часть получилась не вторая, а полуторная, т.к. информации, если ее расписывать подробно, оказывается слишком много для одной статьи, приходится делить.
На самом деле, эта статья — не чистое знание, а чистое «чуть чуть прошелся по верхам, и оборвал на самом интересном месте».
Тема UEFI очень обширная, тут и процесс загрузки, и разнообразие форматов исполняемых файлов, и схожесть структур данных в UEFI и Windows, и EDK, и UEFI Shell, и сборка своих исполняемых файлов для UEFI, и написание DXE-драйверов, и NVRAM, и SMM, и безопасность, и виды защит от прошивки, и это половина процента всего, что можно написать про UEFI, и что не будет выглядеть так скучно, как эта статья.
Если интересно — можно продолжать, если не сильно — можно написать пост со списком того, что стоило бы почитать на эту тему и остановиться на этом.
Вторую напишу в ближайшее время.
Без какой-либо защиты, в том виде, в котором оно реализовано на платах на P67/Z68 — это кошмар любого безопасника.
Любой получивший один раз рута код может сделать с БИОСом что угодно.
И не просто стереть его, а записать своих модулей, которые, при грамотном программировании, даже обновление БИОСа стандартными средствами будут переживать.
И все это вот нам подается под соусом «ускоряем загрузку на 10 секунд, пишем БИОС на С, в настройках высокое разрешение и мышь!» Поэтому SecureBoot — все-таки хоть какой-то, но выход из сложившейся ситуации.
Там три разных микросхемы, одна из которых не припаяна, а посажена в ZIF-кроватку.
Никаких хитрых механизмов нет и не нужно, сломалось — щелкнул тумблером, загрузился, щелкнул обратно, прошил новую версию.
И всякие проприентарные прошивальщики они не используют, доверяя прошивку надежному и простому Intel FPT.
Только за одни белые списки, из за которых каждую новую версию БИОСа приходится модифицировать и шить нестандартными способами, я больше никогда решения ни HP ни Lenovo не куплю, пусть там UEFI хоть каким отличным будет. Оборудование и так делают все более закрытым, а чтобы какой-то кореец решал, какие 3G-модем и WiFi-карту я могу поставить в свой ноутбук, а какие нет — увольте.
Поэтому нужно писать в техническую поддержку и требовать возврата опции в список доступных для редактирования. Если быть достаточно настойчивым — вернут.
Возможность эта в прошивке есть и должна быть на вкладке Security.
Отображается эта настройка или нет — другой вопрос, конечно.
Вообще, идея установки на плату нескольких микросхем SPI flash — очень хорошая, жаль, что не все производители это понимают.