Досистемная загрузка и EFI
- Досистемная загрузка: BIOS
- как BIOS узнаёт, откуда грузиться?
(частично x86/intel-specific, но у остальных похоже) Некоторые диапазоны адресов (задано посредством wiring пинов процессора) смотрят (I/O memory region) на южный мост, оттуда по LPC (ну или не по LPC, implementation-specific) на EEPROM flash (это уже задаётся посредством wiring южного моста). После POR (power on reset) выполняется команда по адресу reset vector (когда-то это был 0xFFFF0h, сейчас см. ссылку), в котором обычно находится jump на определённый адрес (или сам адрес). Там обычно находится код копирования кода из EEPROM в основную память (из памяти выполнять быстрее) и jump на неё. Этот код уже выполняет POST и прочее. Часть NVRAM хранит конфигурацию порядка загрузки, она также обычно доступна или напрямую (чаще; опять же, предопределёный адрес, wired на южном мосте обычно), или через интерфейс адрес/порт по определённым адресам (реже).
LecturesCMC/ComputerArchitecture2012/Conspects/07 — надо поискать источники, по которым это писалось
http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699 — один вот удалось найти
- как BIOS узнаёт, откуда грузиться?
- Как выглядит программа, которую можно загрузить с диска? как её сделать?
Это обыкновенный код для аппаратной платформы (на SPARC/POWER есть OpenFirmware, но кому он тут нужен). Вся магия в наличии BIOS (services, int 13h) и (на современных машинах) ACPI (совсем современных — (U)EFI), которые позволяют взаимодействовать с аппаратной платформой.
- MBR → bootloader → …
- HDPT
- Недостатки
- GPT
- EFI, UEFI
- зачем нужно
- как организовано
- как работает
- пример на VBox (и что в VBox нету)
- А пример чего? EFI-приложение маленькое собрать? Ну, как вариант, если на месте успеем.
TianoCore, GNU-EFI
- Можно и на QEMU-OVMF, кстати (и проблемы там те же, тот же цианокор покоцанный, что и в VB, ЕМНИП)
- А пример чего? EFI-приложение маленькое собрать? Ну, как вариант, если на месте успеем.
- если возможно, пример на чём-то совсем efiшном
SecureBoot (кто что знает)
Подписывание EFI executables с проверкой по ключам из key store, ничего интересного, поскольку риски уезжают в качество реализации UEFI, которое оставляет.
- В настоящее время бесполезен от слова "совсем".
- Полезнее TPM и measured boot:
https://mjg59.dreamwidth.org/24818.html — краткое overview, что это такое
https://mjg59.dreamwidth.org/39339.html https://media.ccc.de/v/32c3-7343-beyond_anti_evil_maid — хороший толк про текущее состояние вещей
Возможно, понадобится:
Category762
(про это есть всякие посты на кармадрочерских сайтах, если кому сильно лень самостоятельно разбираться, а так достаточно хотя бы этой новости: https://arstechnica.com/security/2016/08/microsoft-secure-boot-firmware-snafu-leaks-golden-key/)