Как протекает загрузка в режиме загрузки UEFI? - PullRequest
0 голосов
/ 19 сентября 2019

Выражение этого вопроса такое же, как Какова последовательность загрузки UEFI? , но это не то, что я хочу.Я хотел бы знать последовательность UEFI в перспективе инструкций.

Например, в случае режима загрузки BIOS, в упрощенном виде,

  • Питание компьютера включено.
  • Содержимое микросхемы BIOS, подключенной к материнской плате, выполняет процесс POST (Самотестирование при включении питания).
  • BIOS выполняет поиск MBR (основной загрузочной записи), которая имеет загрузочную подпись в предустановленном порядке загрузки устройства.
  • Если найдена MBR с загрузочной подписью, загрузите первый сектор (512 байт) устройства в DRAM, адрес 0x7C00.Этот загруженный сектор (512 байт) становится «загрузчиком первой ступени».
  • BIOS передает управление этому загрузчику первой ступени.Другими словами, исполняется код операции, расположенный по адресу физической памяти 0x7C00 в DRAM.

image

Статья по теме: https://neosmart.net/wiki/mbr-boot-process/

Но,

в случае UEFI, у меня возникают проблемы с пониманием этой последовательности.

Я уже просмотрел документацию по спецификации UEFI и часть OS Dev UEFI.

UEFI: https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf

OS Dev: https://wiki.osdev.org/UEFI

Кажется, эта функция efi_main () работает как точка, эквивалентная 0x7C00 в режиме BIOS.Но как?

Выполняет ли прошивка UEFI что-то вроде

jmp efi_main

после выполнения ряда заданий?

Q1.Как протекает режим загрузки UEFI?

Q2.Есть ли хороший пример UEFI или учебное пособие, например, Bormthorn, основанное на BIOS?

PS

Я видел новость (уже прошедшие годы), что Intel удаляет поддержку BIOS с помощью2020.

https://www.anandtech.com/show/12068/intel-to-remove-bios-support-from-uefi-by-2020

Там написано

Once CSM is removed, the new platforms will be unable to run 32-bit operating systems, unable to use related software (at least natively), and unable to use older hardware, such as RAID HBAs (and therefore older hard drives that are connected to those HBAs), network cards, and even graphics cards that lack UEFI-compatible vBIOS (launched before 2012 – 2013)

Q3.Не означает ли это, что все, что связано с загрузкой BIOS (загрузчик первой ступени в 0x7C00 и прерывания BIOS и т. Д.), Становится устаревшим?

Ответы [ 2 ]

4 голосов
/ 19 сентября 2019

Q1:

Последовательность загрузки UEFI разделена на несколько «фаз», здесь вы можете найти некоторую базовую информацию о каждой фазе .

Для загрузки фазы SEC SecCore находится по адресу памяти 0xFFFFFFF0 (этот адрес сопоставлен с флэш-памятью UEFI) и, следовательно, является целью вектора сброса.

После фазы dxe несколько приложений UEFIможно вызвать до загрузки операционной системы.

Q2:

Если вы хотите получить общее представление о том, как работает UEFI, я бы порекомендовал книгу «Beyond BIOS».".

Если вы хотите узнать, как писать драйверы / приложения UEFI, я бы порекомендовал взглянуть на некоторые примеры приложений в EDK2 репозитории ( и какСборка приложений с его помощью ), более подробную информацию можно найти в спецификации.

1 голос
/ 25 сентября 2019

Ниже приведено руководство по загрузке UEFI.https://github.com/tianocore/tianocore.github.io/wiki/UEFI-EDKII-Learning-Dev

...