Вводная информация:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
UEFI (Unified Extensible Firmware Interface) — замена устаревшему BIOS. Windows поддерживает работу с uefi только в 64-битных редакциях Основные отличия UEFI от BIOS: BIOS был 16-битным.UEFI же работает в «родном» для процессора режиме, ему доступны все гигабайты оперативной памяти компьютера. GPT - новый способ разметки, замена MBR. GPT - поддерживает диски размером более 2ТБ и неограниченное количество разделов ( хз ограничение в 128 разделов) MBR - поддерживает без костылей только 4. UEFI по умолчанию поддерживает FAT32 с GPT-разделов. MBR сам UEFI не поддерживает, поддержка и загрузка с MBR осуществляется расширением CSM (Compatibility Support Module). В UEFI есть два типа сервисов: boot services и runtime services. Boot services - работают только до загрузки ОС и обеспечивают взаимодействие с графическими и текстовыми терминалами, шинами, блочными устройствами и т.д., Runtime services может использовать ОС. Runtime services — variable service, который хранит значения в NVRAM. ОС Linux использует variable service для хранения креш дампов, которые можно вытащить после перезагрузки компьютера. |
Как происходит загрузка в UEFI?
1 2 3 4 5 |
С GPT-раздела с идентификатором EF00 и файловой системой FAT32, по умолчанию грузится и запускается файл \efi\boot\boot[название архитектуры].efi, например \efi\boot\bootx64.efi Т.е. чтобы, например, создать загрузочную флешку с Windows, достаточно просто разметить флешку в GPT, создать на ней FAT32-раздел и просто-напросто скопировать все файлы с ISO-образа. Boot-секторов больше нет, забудьте про них. |
Secure Boot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Secure Boot призван защитить от буткитов, от атак типа Evil Maid. Эту технологию придумали не в Microsoft, а она входит в спецификацию UEFI 2.2. Неотключаемый Secure Boot есть только на планшетах на ARM с предустановленной Windows! Он защищает от выполнения неподписанного кода не только на этапе загрузки, но и на этапе выполнения ОС, например, как в Windows, так и в Linux проверяются подписи драйверов/модулей ядра, таким образом, вредоносный код в режиме ядра выполнить будет нельзя. Но это справедливо только, если нет физического доступа к компьютеру, т.к., в большинстве случаев, при физическом доступе ключи можно заменить на свои. Secure Boot есть 2 режима: Setup и User. Setup - служит для настройки, из него вы можете заменить PK (Platform Key, по умолчанию стоит от OEM), KEK (Key Exchange Keys), db (база разрешенных ключей) и dbx (база отозванных ключей). KEK может и не быть, и все может быть подписано PK, но так никто не делает, вроде как. PK — это главный ключ, которым подписан KEK, в свою очередь ключами из KEK (их может быть несколько) подписываются db и dbx. User - служит для запуска .efi-файл (в Setup он должен быть подписан ключом, который в db(не в dbx)) Для Linux есть 2 пре-загрузчика, которые поддерживают Secure Boot: Shim и PRELoader. Оба пре-загрузчика есть в скомпилированном виде с валидной подписью от Microsoft, поэтому менять UEFI-ключи не обязательно. x86-процессор стартует с адреса 0xfffffff0 |