Uefi platform initialization зависает
Всем привет! Раз уж в предыдущей статье я затронул тему ошибок BIOS'а, то напишу как решить еще одну неисправность, которая возникает в начале загрузки компьютера, а именно в момент прохождения POST BIOS'а - это зависание на логотипе материнской платы.
Данная инструкция пойдет как к классическому BIOS, так и к UEFI в режиме BIOS.
Способы устранения неисправности.
Affected configurations
The system may be any of the following IBM servers:
- System x3550 M2, type 4198, any model
- System x3550 M2, type 7946, any model
- System x3550 M3, type 4254, any model
- System x3550 M3, type 7944, any model
- System x3650 M2, type 4199, any model
- System x3650 M2, type 7947, any model
- System x3650 M3, type 4255, any model
- System x3650 M3, type 7945, any model
This tip is not software specific.
This tip is not option specific.
The following system BIOS or uEFI level(s) are affected:
Диагностируем проблему.
Для начала проведем диагностику. Для этого нам нужно отключить само лого материнской платы, чтобы компьютер грузился логами BIOS'a, тогда мы сможем понять, на каком моменте он зависает.
1) Войти в режим BIOS. Для этого при загрузке компьютера на логотипе нажмите клавишу DEL (на некоторых материнских платах может отличаться - уточняйте в мануалах к вашей материнской плате).
2) Переходим в раздел "Boot"
3) Находим функцию "Full Screen Logo". По умолчанию она будет стоять в режиме "Enable", то есть "Включено". Наша задача - это перевести ее в режим "Disable", соответственно "Отключено".
Теперь при загрузке не будет логотипа, а BIOS будет выдавать свои логи на экран, в итоге мы сможем понять в чем проблема. Тут у каждого будет свой путь решения проблемы.
2 ответа
Все компьютеры IBM uEFI берут возрасты для загрузки, так как после инициализации eEF и инициализации модуля и запуска модуля устаревшая эмуляция BIOS запускается, и ПЗУ ПЗУ PCI-E запускаются и т. д. и т. д. Это является «нормальным» на всех машинах IBM uEFI - независимо от того, лезвие или стандартный сервер стойки.
Вы можете отключить устаревшую загрузку BIOS, опционные ПЗУ, оптимизировать порядок загрузки и, как правило, сохранить эту машину на новейшем уровне прошивки, предлагаемом IBM.
Я согласен с тем, что устаревшая реализация x XEFI системы настолько болезненно медленна, что я даже не могу продать их в качестве платформы для своих клиентов.
Измерение формы IBM означает, что она запускает устаревшую загрузку USB-ключа до тех пор, пока я не получу приглашение ОС, это смехотворно долго. Я использую SmartOS (генератор иллюстраций /opensolaris для всех целей, которые когда-то загружались, и работает так же, как Solaris 11), который действует как щенок Linux, например. он загружает 275 МБ «сжатого» blob (всю ОС), а затем загружает ОС в память. Это действительно демонстрирует проблему с внедрением uEFI в IBM устаревшей загрузки .
Это почти так, как если бы реализация UEFI использовала крошечный размер блока, такой как 512 байт, а не большой буфер во время чтения. Когда я нахожусь в ОС, я могу сравнить производительность USB-ключа, который я загрузил, ИМХО, если код IBM UEFI будет просто читать размер блока 8192 или лучше, но размер блока 32768, получившаяся загрузка будет очень быстрой.
Итак, однажды в операционных системах SmartOS я увидел следующие характеристики производительности для моего USB-ключа, начиная от 512 байт до 131072 байта. Похоже на размер блока 8192 (12,3 МБ /с в загруженной ОС) или, лучше всего, размер блока 32768 (20,2 МБ /с в загруженной ОС) был бы хорошим выбором. Он также выглядит как размер блока 512 (0,64 МБ /с в загруженной ОС) соответствует довольно близким результатам, которые, как мне кажется, возникают в моих длинных ботинках.
Я использовал следующий IBM x3550 M3 с версией UEFI (BIOS) версии 1.13 (12 ГБ оперативной памяти и одним процессором Xenon с частотой 2,266 ГГц)
Я должен сказать, что я сильно разочарован «скоростью» загрузки USB в устаревшем режиме BIOS в реализации IBM UEFI.
Пища для размышления о моем 275 МБ изображении Supermicro XSCA9F или Oracle-Sun X4275 загрузит изображение с USB-накопителем емкостью 275 МБ всего за 32 или 33 секунды, в то время как IBM x3550 M3 занимает более 363 секунд для того же изображение (в 11 раз медленнее) .
Эта производительность абсолютно неприемлема, и проблема существует во всей линейке System X. Я был в контакте с IBM, и они просто говорят, что загрузили загрузочную загрузку uEFI (это похоже на то, что я рассказываю о спецификации UEFI, изучаю GRUB2 и пишу свой собственный пользовательский загрузчик, да, его можно сделать, но я неесть дополнительные 2-3 недели, чтобы возиться с этим материалом). Да, использование «чистой» загрузки uEFI должно работать быстро, но я не могу это доказать, однако тогда я не мог использовать «стандартные дистрибутивы», а также, как я указал, мне пришлось бы написать свой собственный загрузчик uEFI.
Время загрузки слишком медленное. Для загрузки VMware ESX потребуется около 20 минут когда используется EFI, по сравнению с менее чем 2 минутами с нормальной биозой
Это то же самое замедление 10X или 11X, которое я испытываю, надеюсь, когда-нибудь IBM это исправит.
Имеется нетбук MSI S12 (https://linux-hardware.org/index.php?probe=1fbdf6ab06).
Предустановлена Win8.1 в EFI-режиме, в планах было рядом в этом же режиме установить ROSA Desktop.
В режиме Legacy ROSA загружается и даже устанавливается (за исключением установки загрузчика), а вот в EFI - зависает после "Loading initramfs. "
Было испробовано:
- загружаться с флэшки, записанной при помощи Image Writer, а также с USB-DVD
- разные версии: ROSA Desktop R8.1 KDE/Plasma, ROSA Desktop R10 KDE/Plasma/XFCE
- физически отключал винт
Результат одинаковый.
Вводя последовательно команды загрузки в терминале GRUB, удалось выяснить, что зависание происходит сразу после выполнения команды boot.
Может, есть какой-то способ выяснить подробнее, что именно вызывает зависание?
P.S. Пробовал вводить различные параметры ядра типа acpi=off, nomodeset, radeon.nomodeset, debug и. т.п., но, похоже, что до передачи управления ядру дело не доходит.
P.P.S. После зависания при нажатии на стрелку "Вправо" на клавиатуре происходит короткое обращение к загрузочному носителю, либо перезагрузка ноута.
там при загрузке bios efi должен быть выбор файла для загрузки /EFI/BOOT/grubx64.efi, его надо выбрать.
Если grubx32.efi то скорей всего не загрузится, у меня биос о такой штуке не знает.
К сожалению, в BIOS нет возможности вручную создавать/редактировать загрузочные пункты меню EFI.
Т.к. загрузка производится с "родного" (x86_64) образа, то grubx32.efi в нём отсутствует. В каталоге /EFI/BOOT/ имеются файлы BOOTx64.efi, grubx64.efi и grub.cfg
чего то не хватает, не может быть так что ЕФИ работает только на определенное расположение ЕФИ файлов? хотя вроде стандартное расположение. может быть должно быть так:
/EFI/BOOT/windows/ для виндус
/EFI/BOOT/rosa/ для росы?
попробуйте раскидать в несколько мест в папке /EFI файлы BOOTx64.efi, grubx64.efi и grub.cfg, можно и в корень бросить.
По-идее, всего должно хватать, т.к. на другом железе с данной флэшки загрузка происходит в EFI-режиме без проблем. Да и меню GRUB2 выводится ведь, значит, не в этом дело.
На флэшке путь к файлам /EFI/BOOT/, на разделе EFI на жестком диске инсталятор расположил файлы в каталоге /EFI/BOOT/rosa/
попробуйте раскидать в несколько мест в папке /EFI файлы BOOTx64.efi, grubx64.efi и grub.cfg, можно и в корень бросить.
По-идее, всего должно хватать, т.к. на другом железе с данной флэшки загрузка происходит в EFI-режиме без проблем. Да и меню GRUB2 выводится ведь, значит, не в этом дело.
На флэшке путь к файлам /EFI/BOOT/, на разделе EFI на жестком диске инсталятор расположил файлы в каталоге /EFI/BOOT/rosa/
попробуйте раскидать в несколько мест в папке /EFI файлы BOOTx64.efi, grubx64.efi и grub.cfg, можно и в корень бросить.
можете еще и в корень и папку /EFI, позможно биос откуда нибудь подхватит. А потом методом исключения можно будет вычислить откуда загружается.
Предпологаю что initrams здесь не причем, так как вы режиме легаси грузитесь спокойно.
Могу предположить что в BOOTx64.efi, grubx64.efi нет какого то нужного модуля.
Возьмите эти файлы из любой из последних ubuntu 18.04 например, они подписаны и имеют кучу модулей в сборке, даже iso загружает. и замените Росовские, результат если будет в студию.
Можете и сами собрать эти файлы, мануалы по сети есть, сам не собирал.
Спасибо за подсказку!
После замены grubx64.efi на загрузочной флэшке Росы на соответствующий файл от Убунты ROSA загрузилась (с отключенным Secure boot).
Теперь пытаюсь установить/настроить загрузчик EFI на винте без переустановки системы. Оказывается, одна и та же инструкция выглядит совершенно по-разному на русском и английском языках: Русская, Английская)
Спасибо за подсказку!
После замены grubx64.efi на загрузочной флэшке Росы на соответствующий файл от Убунты ROSA загрузилась (с отключенным Secure boot).
Теперь пытаюсь установить/настроить загрузчик EFI на винте без переустановки системы. Оказывается, одна и та же инструкция выглядит совершенно по-разному на русском и английском языках: Русская, Английская)
В простейшем случае у вас должн сохранится /EFI/BOOT/ от виндус, туда и закинте свои файлы. Ну и grub2 установить нужно. хотя это все должно при установке ROSA произойти, и загрузчик ROSA виндус должен обнаружить виндус и прописать в загрузку. Виндус переустанавливать не надо, linux в отличии от виндус знает о других системах.
Если есть возможность пишите свои танцы с бубном, это опыт и информация для других. Разработчикам не плохо бы уже переделать grubx64.efi по типу Ubuntu хотя бы, так как видно запросы по оборудованию растут.
Да, каталог /EFI/BOOT/ от винды имеется, но даже теоретически не хотелось бы мешать всё в одну кучу.
Тем более, что установщик Росы создал каталог /EFI/rosa/ и переписал туда несколько *.efi файлов (вером будет ноут под рукой - распишу, какие именно). Но т.к. установка производилась в режиме Legacy, то загрузчик grub2 не был установлен и сконфигурирован, о чем установщик Росы честно предупредил. Также, не был создан пункт меню в EFI.
Собственно, два последних пункта мне и оставалось доделать:
Установил grub2 из-под Live-системы при помощи команды
В итоге, EFI не хочет загружать вновь созданный пункт меню - ошибок не пишет, просто выкидывает обратно в BIOS.
P.S. Единственное, что настораживает - файл \EFI\rosa\grub2\grub.efi, записанный Росой на раздел EFI, отличается по размеру от родного файла grubx64.efi на Live-флэшке.
Вчера уже поздно было экспериментировать, попробую сегодня заменить этот файл файлом от Убунты, отпишусь.
дальше устанавливаем загрузчик:
sudo grub2-install --boot-directory=/boot/ --efi-directory=/EFI/rosa/ --root-directory=/dev/sda1 /dev/sda
как то так вроде, груб виндус найдет.
вообще после установки grub файл grub.cfg должен быть одинаковым в /boot/grub2/ и в /EFI/rosa/
дальше устанавливаем загрузчик:
sudo grub2-install --boot-directory=/boot/ --efi-directory=/EFI/rosa/ --root-directory=/dev/sda1 /dev/sda
как то так вроде, груб виндус найдет.
Я вместо этой команды выполнял update-grub2, винду нашёл и прописал в конфиг. Думаю, пока у меня проблемы на уровне загрузки EFI.
grub.cfg в /EFI/rosa/ ссылается на grub.cfg в корневой ФС. Соглашусь - стоит его тупо переписать из /boot/grub2/ в отладочных целях.
дальше устанавливаем загрузчик:
sudo grub2-install --boot-directory=/boot/ --efi-directory=/EFI/rosa/ --root-directory=/dev/sda1 /dev/sda
как то так вроде, груб виндус найдет.
Я вместо этой команды выполнял update-grub2, винду нашёл и прописал в конфиг. Думаю, пока у меня проблемы на уровне загрузки EFI.
grub.cfg в /EFI/rosa/ ссылается на grub.cfg в корневой ФС. Соглашусь - стоит его тупо переписать из /boot/grub2/ в отладочных целях.
Победил, наконец! Вот пошаговая инструкция, как настроить запуск РОСЫ в EFI-режиме:
Загружаемся в Live-систему
Получаем список разделов на жестких дисках:
fdisk -l | grep sd
Монтируем целевую систему (например, находящуюся на sda7):
mount /dev/sda7 /mnt
Определяем раздел EFI (обычно раздел 300-500Мб с FAT32):
blkid | grep EFI
Монтируем EFI-раздел (например, sda2):
mount /dev/sda2 /mnt/boot/efi
Создаём на EFI-разделе каталог /mnt/boot/efi/EFI/rosa/grub2-efi , в него копируем файл /boot/efi/EFI/grub.efi
Устанавливаем загрузчик командой:
grub2-install --recheck --boot-directory=/mnt/boot/efi/EFI/rosa --efi-directory=/mnt/boot/efi
Проверяем успешность создания загрузочного пункта меню EFI:
efibootmgr -v
Должен создаться пункт меню примерно следующего содержания:
Boot0000* rosa HD(2,12c800,96000,f9c9188d-bece-4fc1-ba5a-6d93aa93a554)File(\EFI\rosa\BOOTx64.efi)
В случае необходимости изменения параметров пункта меню удаляем его:
efibootmgr -b 0000 -B
где 0000 - номер пункта меню rosa
И создаём заново:
efibootmgr --create --gpt --disk /dev/sda --part 2 --label "ROSA" --loader "\EFI\rosa\BOOTx64.efi"
где sda - диск, содержащий раздел EFI, 2 - номер раздела на этом диске
Переименовываем файл /mnt/boot/efi/EFI/rosa/grubx64.efi в BOOTx64.efi
Удаляем каталог /mnt/boot/efi/EFI/rosa/grub2-efi
Переименовываем каталог /mnt/boot/efi/EFI/rosa/grub2 в grub2-efi
Выполняем команду update-grub2
Копируем файл /boot/grub2/grub.cfg в каталог /mnt/boot/efi/EFI/rosa/
Перезагружаемся с винта, в меню загрузки выбираем пункт "ROSA. (on sda7)"
После загрузки выполняем команду update-grub2
копируем файл /boot/grub2/grub.cfg в каталог /mnt/boot/efi/EFI/rosa/ и перезагружаемся
P.S. grubx64.efi заменять не пришлось, т.к. в образе Росы (загруженном в Live-режиме) присутствует два efi-загрузчика:
1. /boot/efi/EFI/grubcd.efi - тот самый "кривой", из-за которого не стартует Live-система на моём железе
2. /boot/efi/EFI/grub.efi - загрузчик, который устанавливается в рабочую систему, с ним система стартует корректно
Вообще, старался написать универсальную инструкцию. Где в явном виде присутствуют значения - разъяснено, что они указаны в качестве примера и откуда их брать на конкретном ПК.
1. /boot/efi/EFI/grubcd.efi - тот самый "кривой", из-за которого не стартует Live-система на моём железе
Если выскочило на одном ПК, то где гарантия что не выскочит на другом ПК. Где стабильность и надежность?
Думаю что bsvsf проделал отличную работу. Но вопросы возникают, почему не работает grubcd.efi, чего не хватает для стабильной работы? У bsvsf пока в своем роде железо уникальное, поэтому все козыри только у него.
Желательно, конечно, сообщить о проблеме разработчикам, только я не знаю, как это правильно сделать.
Как обходной путь - заменять вручную на загрузочной флэшке файл \EFI\BOOT\grubx64.efi (брать от Убунты, например)
Если выскочило на одном ПК, то где гарантия что не выскочит на другом ПК. Где стабильность и надежность?
Инструкция создавалась для случая, когда, например, ROSA устанавливалась в Legacy-режиме, либо по какой-либо другой причине во время установки не был установлен загрузчик EFI, либо побился EFI-раздел и т.п. Инструкция поможет перевести систему на EFI-загрузку или восстановить EFI-загрузчик с нуля.
Кстати, чтобы не заморачиваться с отслеживанием версий и копированием /boot/grub2/grub.cfg на EFI-раздел, ROSA предлагает такое решение:
Это содержимое grub2.cfg на EFI-разделе, где X в параметре gptX - порядковый номер GPT-раздела, содержащего корневую ФС.
Я бы очень хотел выяснить, чего нехватает загрузчику на моём железе, но для этого нужны инструменты для отладки системы на самом начальном этапе загрузки. Если будут мысли, какие действия можно предпринять для получения нужных сведений, смогу попробовать проделать их.
Вводя последовательно команды загрузки в терминале GRUB, удалось выяснить, что зависание происходит сразу после выполнения команды boot.
Может, есть какой-то способ выяснить подробнее, что именно вызывает зависание?
после долгого висения в панику должен уйти и что нибудь написать, не может ядро просто так долго висеть? кнопки не трогать?
За 40 минут ожидания никаких изменений. После прошествия этого времени уже ни на какие нажатия клавиш реакции нет.
Заметил, что после подобной неудачной попытки загрузки первая загрузка с винта тоже неудачна - те же симптомы.
P.S. перезагрузка всегда мягкая (Ctrl-Alt-Del)
P.P.S Может, с применением SysRq что-нибудь попробовать?
За 40 минут ожидания никаких изменений. После прошествия этого времени уже ни на какие нажатия клавиш реакции нет.
Заметил, что после подобной неудачной попытки загрузки первая загрузка с винта тоже неудачна - те же симптомы.
P.S. перезагрузка всегда мягкая (Ctrl-Alt-Del)
P.P.S Может, с применением SysRq что-нибудь попробовать?
болдово, не встречал такого. при live ram не может создаться? а первая загрузка с винта? где может стыковаться? swap?
Может быть виноват BIOS, т.к. обнаружилось, что первый раз с винта также не стартует после временного переключения в Legacy-режим, затем обратно в UEFI.
может биос на дефолт скинуть, про ваш биос информацию найти? особенности какие? прошить не предлагаю.
Скорее, проблема обойдена
Возможно, также, что последовательность выполнения кода загрузчика Росы таким образом взаимодействует с этим BIOS, а в самом BIOS ошибок нет - вариантов масса.
Скорее, проблема обойдена
Возможно, также, что последовательность выполнения кода загрузчика Росы таким образом взаимодействует с этим BIOS, а в самом BIOS ошибок нет - вариантов масса.
для чистоты эксперемента ubuntu установить, и из легаси в ефи по переключатся, в РОСА grubx64 кривой? grubcd.efi кривой?
grubx64.efi на загрузочной флэшке и grubcd.efi в установленной системе - это один и тот же файл с разными именами.
Что даст установка Убунты? Она установится скорее всего, во всяком случае, с начальной загрузкой у неё проблем у неё нет и Роса с её grubx64.efi грузится и успешно устанавливается в EFI-режиме.
grubx64.efi на загрузочной флэшке и grubcd.efi в установленной системе - это один и тот же файл с разными именами.
Что даст установка Убунты? Она установится скорее всего, во всяком случае, с начальной загрузкой у неё проблем у неё нет и Роса с её grubx64.efi грузится и успешно устанавливается в EFI-режиме.
тогда выводы grubx64.efi кривой, в стандартном дистрибутиве РОСА, это надо передать сборщикам, туда же, что нет поддержки загрузки iso grubx64.efi. Пусть пересоберут по образцу ubuntu, у них он универсальный.
Resolving The Problem
Workaround 3
- Unplug the AC power.
- Clear the Complementary Metal Oxide Semiconductor (CMOS) by removing the battery for at least ten (10) seconds.
- Re-install the battery, and power on the system.
Note: If Workaround 3 is performed, then users should refer to RETAIN Tip H194649 at the following location:
У меня есть пара серверов IBM System x3620. Эти серверы прекрасно справляются, как только они, наконец, достигают точки, в которой происходит работа операционной системы, но требуется forever , чтобы пройти мимо новой системы загрузки UEFI . хорошие пять минут или около того; может быть, дольше. Я не приурочил его, но это то, что вы делаете, чтобы выпить чашечку кофе, пока вы ждете, и это все еще происходит, когда вы вернетесь.
Обычно единственный раз, когда я закрываю эти данные, - это ежемесячный цикл обслуживания (обычно это просто обновления Windows). Это встроенное время обслуживания, и поэтому дополнительные 5 минут не учитывают наши SLA и не имеют большого значения. Тем не менее, в случае, если у меня может быть перебой, я бы хотел получить эти 5 минут назад. Есть ли что-нибудь, что я могу сделать, чтобы сказать им, чтобы они просто пошли и загрузились уже? Я уже отключил все, что могу найти, чтобы отключить его до дополнительных параметров загрузки.
Source
RETAIN tip: H197013
Workaround 1
- Power on the system and the wait ten (10) seconds.
- Press the reset button on the LPD panel and then wait ten (10) seconds.
- Press the reset button again and then wait ten (10) seconds.
- Press the reset button again.
This procedure will load the default UEFI configuration. You might have to use a pen or the end of a straightened paper clip to press the reset button. The reset button is located on the lower right-hand corner of the LPD panel.
Symptom
When updating the Unified Extensible Firmware Interface (UEFI), the system could hang at Power On Self Test (POST) with the following message:
UEFI Platform Initialization |
On the second reboot, the system could hang and the Light Path Diagnostics (LPD) panel will display check point: B8.
Solution
The issue has been fixed in UEFI Version 1.11 (D6E150C).
The file is or will be available by selecting the appropriate Product name, Product machine type, and Operating system on IBM Support's Fix Central web page, at the following URL:
Workaround 2
For a system hung in the "UEFI PLATFORM INITIALIZATION" state, follow these steps:
- Boot to "backup UEFI" mode. This is done by moving jumper (J29 - UEFI) on the system board to the backup position (move Jumper 29 from pins 1 - 2 to pins 2 - 3).
This allows the system to complete POST, and power up properly in most cases. - Flash the UEFI to the latest version.
- Move the jumper back to "Primary UEFI" by moving Jumper 29 from pins 2 - 3 back to pins 1 - 2.
If the system fails to complete POST when booting from backup UEFI mode, or after returning to Primary UEFI mode after flashing UEFI in backup mode, contact IBM support. Do not replace the system board.
Workaround
There are two (2) Workarounds for this issue.
Система зависает при загрузке UEFI
В локальной сборке chroot Заменил в /EFI/. grubx64.efi и /boot/. grubcd.efi с переименованием от ubuntu. В результате, у меня был проблемный ноут асус с единственным типом загрузки UEFI, и загрузился и без проблем установился. РАЗРАБОТЧИКИ АУ?
В первой части этой статьи мы познакомились с форматом UEFI Capsule и Intel Flash Image. Осталось рассмотреть структуру и содержимое EFI Firmware Volume, но для понимания различий между модулями PEI и драйверами DXE начнем с процесса загрузки UEFI, а структуру EFI Firmware Volume отставим на вторую часть.
UEFI Platform Initialization
С высоты птичьего полета процесс загрузки UEFI выглядит так:
Вообще говоря, нас интересует не весь это процесс, а его часть — Platform Initialization (PI), которая делится на 3 фазы: SEC , PEI и DXE .
Всю документацию по PI можно свободно загрузить с сайта UEFI Forum. Фазы SEC и PEI описаны в Volume 1, фаза DXE — в Volume 2, общие архитектурные элементы, в том числе интересующие нас форматы файлов и заголовков EFI FFS — в Volume 3, субфаза SMM (стартует в середине DXE и идет параллельно) — в Volume 4, стандарты на совместимое с PI оборудование и ПО — в Volume 5. Про оборудование и ПО здесь я писать не стану, а вот остальные фазы нужно упомянуть, т.к. не зная их, сложно понять, зачем в файле BIOS'а столько всего и чем это всё отличается друг от друга.
Фаза SEC
- Обработать все виды platform restart'ов: включение питания после неактивного состояния, перезагрузка из активного состояния, выход из режима глубокого сна, различного рода исключительные ситуации
- Подготовить временную память
- Стать Root of Trust системы: или доверять остальным частям PI, или проверить их валидность каким-либо способом
- Подготовить необходимые структуры данных и передать их и управление в фазу PEI. Как минимум, передаются состояние платформы, адрес и размер BFV , адрес и размер временной RAM, адрес и размер стека
- Reset Vector: сброс кэша и переход на главную процедуру иницилизации в ROM
- Switch to protected mode: переключение в защищенный режим процессора с плоской памятью без подкачки
- Initialize MTRRs for BSP: запись в кэш известных значений для различных областей памяти
- Microcode Patch Update: обновление микрокода всех доступных процессоров
- Initialize NEM : свободный кэш помечается как несбрасываемый, после чего его можно использовать как временную RAM до инициализации основной, а также позволяет написать эту самую инициализацию на обычных ЯП со стеком, в данном случае на C
- Early BSP /AP interactions: отправка всем AP прерывания INIT IPI , затем Start-up IPI, получение данных BIST со всех AP
- Hand-off to PEI entry point: передача управления и данных в фазу PEI
Фаза PEI
- Establish use of «memory»: перенос данных из ROM в раннюю RAM (т.е. в кэш)
- PEI Dispatcher: запуск модулей PEIM в порядке от не имеющих зависимостей до имеющих сложные зависимости. Это цикл, который заканчивается в момент, когда не запущенных модулей не остается
- CPI PEIM: инициализация CPU, настройка MSR и т.п. (Мы вернемся к этому модулю при обсуждении патча CPU PM)
- Platform PEIM: ранняя инициализация MCH , ICH , встроенных интерфейсов платформы (SMBus , Reset, и т.п.). Определение режима загрузки (обычный, Recovery, S3 Resume), используя данные, полученные в фазе SEC.
- Memory Initialization PEIM: инициализация основной RAM и перенос в нее данных из кэша, которым теперь можно пользоваться нормально. процесс зависит от определенного на предыдущем шаге состояния системы, например, при S3 Resume тестирование памяти не выполняется, что сокращает время загрузки
- Если система не находится в S3 Resume, то происходит передача HOB'ов и управления в фазу DXE, а фаза PEI на этом завершается
- Если все же находится — выполняется CPU PEIM for S3 Boot Script, выполняющий возврат всех процессоров в их сохраненное состояние
- S3 Boot Script Executor: восстановление состояния других устройств
- OS Resume Vector: переход к ОС
Фаза DXE
Cубфаза SMM
Заключение
Теперь вы знаете, как происходит загрузка UEFI и какие модули необходимы для нее.
Я принял решение разделить планируемую вторую часть еще на две, чтобы уменьшить размер поста и снизить когнитивную нагрузку на читателя.
Во второй части статьи мы наконец рассмотрим структуру файла EFI FV, и сведения из этой вам там очень пригодятся.
Спасибо за внимание.
3) Универсальный способ, который подойдет при конфликте настроек BIOS и при некоторых других проблемах.
Я описал две основные причины зависания, теперь я опишу самый простой и универсальный способ, который может помочь при мелких проблемах, типа конфликта настроек BIOS.
Снимаем крышку системного блока и вытаскиваем батарейку BIOS на 10 минут. Произойдет обнуление BIOS'а и сброс его до заводских настроек.
When updating the Unified Extensible Firmware Interface (UEFI), the system could hang at Power On Self Test (POST) with the following message: UEFI Platform Initialization On the second reboot, the system could hang and the Light Path Diagnostics(LPD) panel will display check point: B8.
2) BIOS зависает на определении жестких дисков и дисководов SATA или вовсе не видит их.
Я не буду описывать про IDE дисководы и ЖД, поскольку в наше время даже в самом слабом рабочем ПК используется SATA интерфейс.
Тут я могу сразу сказать, что ситуация пострашнее, дело в том, что может потребоваться поменять жесткий диск. Но еще рано торопиться.
Если есть такая возможность, попробуйте подключить к компьютеру другой жесткий диск. Если же такой возможности нет, но есть хотя-бы флешка или диск с установщиком системы или LiveCD система типа Windows PE, тогда можете смело отключать жесткий диск и пробовать загрузиться с LiveCD.
Однако, такой возможности тоже может не быть. тогда просто отключаем жесткий диск и пытаемся загрузиться в BIOS. Если загрузится быстро - то пора менять жесткий диск.
1) BIOS висит на инициализации USB контроллёров.
Именно так BIOS будет висеть, через некоторое время он продолжит загрузку. Фото взято из открытого доступа. Источник: Яндекс.Картинки
Именно так BIOS будет висеть, через некоторое время он продолжит загрузку. Фото взято из открытого доступа. Источник: Яндекс.Картинки
Для начала следует отключить все дополнительные USB-устройства, кроме мыши. Если компьютер все-равно будет висеть, а мышь в системе будет работать, то необходимо зайти в "Диспетчер задач".
Там можно будет обнаружить "Unknown Device". Если у вас есть такое, и у вас подключен кард-ридер, то проблема скорее всего в нем. Вам необходимо открыть крышку системника и отключить его от внутреннего интерфейса USB материнской платы.
Далее попробуйте не закрывая крышку запустить компьютер. Если проблема уйдет - значит все решено, если нет, то попробуйте отключить все устройства USB, которые находятся внутри системного блока (у них будет такой же интерфейс, как и у кард-ридера).
Внутренние интерфейсы USB материнской платы. Фото взято из открытого доступа. Источник: Яндекс.Картинки
Внутренние интерфейсы USB материнской платы. Фото взято из открытого доступа. Источник: Яндекс.Картинки
Если вы отключили все устройства, но компьютер все равно зависает с той же ошибкой, рекомендую почитать эту статью , возможно, скоро потребуется менять материнскую плату.
Читайте также: