UEFI, или Unified Extensible Firmware Interface, представляет собой современный стандарт для инициализации и загрузки операционных систем на персональных компьютерах. Идеи отказаться от устаревших ограничений, внедрить модульность и сделать процесс загрузки более гибким начали формироваться давно. Однако, именно в начале XXI века IT-индустрия пришла к консенсусу и создала консорциум UEFI Forum в 2005 году. Этот консорциум включает в себя такие гиганты, как Intel, AMD, Apple, IBM, Microsoft и другие ключевые игроки отрасли.
Основные принципы, положенные в основу UEFI, включают “минималистичность”, “модульность” и поддержку различных процессоров. Универсальность UEFI проявляется в возможности сборки прошивки под 32-битные или 64-битные процессоры Intel, 32- или 64-битные процессоры ARM, а также для процессоров Intel Itanium. Кроме того, UEFI обладает своим менеджером загрузки и способен взаимодействовать с различными файловыми системами на диске, в том числе FAT32. Этот стандарт также поддерживает загрузку драйверов для обеспечения работы различного оборудования и поддержку разных файловых систем.
После включения компьютера и проведения первичного тестирования оборудования (аналогичного BIOS), UEFI инициализирует только те подсистемы, которые необходимы для загрузки. В режимах загрузки, известных как Fast-boot, даже клавиатура может оставаться не инициализированной до момента загрузки операционной системы. Настройки Fast-boot могут отключать USB-устройства, оставляя пользователя без возможности выбора источника загрузки.
В отличие от BIOS, где компоненты записаны в постоянную память, UEFI может хранить часть своего кода на диске, в специальном разделе ESP (EFI System Partition). Это обеспечивает легкость расширения, изменения и обновления кода, поддерживающего различные устройства, без необходимости перепрограммирования постоянной памяти компьютера. На ESP разделе также могут храниться драйверы и поддержка протоколов, что позволяет UEFI быть своеобразной маленькой операционной системой.
UEFI реализует свой собственный менеджер загрузки, поддерживая мульти-загрузку, что означает возможность выбора загрузки из разных операционных систем. Загрузчик операционной системы представляет собой efi-приложение, хранящееся на ESP разделе, и UEFI позволяет хранить много приложений на этом разделе. Таким образом, UEFI берет на себя многие задачи, которые ранее выполнялись загрузчиками операционных систем, например, GRUB.
Архитектура UEFI позволяет загружать драйвера устройств и даже само ядро операционной системы. Например, ядро Linux, собранное с опцией UEFISTUB, может быть загружено непосредственно из UEFI, и это может исключить необходимость в отдельном загрузчике. Эти возможности делают UEFI мощным инструментом для управления загрузкой и инициализацией компьютера.
Однако, как и в случае с BIOS, стандарт UEFI поддерживается разными поставщиками, что может привести к вариациям в его реализации. Интерфейсы утилиты настройки могут значительно различаться в различных версиях прошивок. Несмотря на это, базовые принципы работы стандарта UEFI остаются стабильными и были зафиксированы еще на ранних этапах его разработки.