Первичная инициализация: роль прошивок BIOS и UEFI в подготовке оборудования
Первичная инициализация: роль прошивок BIOS и UEFI в подготовке оборудования
Вы нажимаете кнопку питания на сервере. В этот момент процессор получает ток, но он абсолютно «слеп». У него нет операционной системы, он не знает, где находится жесткий диск, и не умеет работать с файлами. До того как ядро Linux выведет на экран первую строчку логов, должна отработать невидимая, но критически важная цепочка инструкций, зашитая прямо в материнскую плату.
Если сервер не загружается, проблема часто кроется не в Linux, а в том, что система даже не смогла до него добраться. Давайте разберем самый первый этап жизни сервера — от подачи питания до поиска загрузчика.
Пробуждение железа: POST и Reset Vector
Как только напряжение стабилизируется, процессор обращается к жестко заданному адресу памяти — Reset Vector. По этому адресу находится точка входа в микропрограмму материнской платы (BIOS или UEFI).
Первое, что делает эта прошивка — запускает процедуру POST (Power-On Self-Test). Это базовая проверка жизнеспособности оборудования:
- Инициализация контроллера оперативной памяти (без RAM дальнейшая работа невозможна).
- Проверка наличия процессора и базовых шин ввода-вывода.
- Инициализация видеокарты (именно в этот момент на мониторе появляется логотип производителя).
- Опрос подключенных накопителей (HDD, SSD, NVMe) и USB-устройств.
Если на этапе POST обнаруживается критическая аппаратная ошибка (например, сгорела планка памяти), загрузка останавливается навсегда. Вы услышите звуковые сигналы (Beep codes) или увидите код ошибки на LED-индикаторе материнской платы. До Linux дело даже не дойдет.
Если POST пройден успешно, перед материнской платой встает главная задача: найти операционную систему на подключенных дисках и передать ей управление. Исторически сложилось два совершенно разных подхода к решению этой задачи.
Наследие BIOS: Загрузка вслепую
Классический BIOS (Basic Input/Output System) был создан в эпоху, когда диски измерялись мегабайтами. Его логика поиска операционной системы примитивна: BIOS ничего не знает о файловых системах, папках или файлах.
Он работает по жесткому алгоритму:
- BIOS опрашивает диски в порядке очереди (Boot Order).
- Находит первый диск и считывает его самый первый физический сектор — MBR (Master Boot Record).
- Размер этого сектора — всего 512 байт. В них нужно уместить таблицу разделов и крошечный кусочек машинного кода.
- BIOS загружает эти 512 байт в оперативную память и слепо передает им управление.
Этот крошечный код из MBR должен был сам разобраться, как прочитать остальную часть диска, чтобы вытянуть полноценный загрузчик ОС. Из-за физических ограничений MBR не поддерживал диски объемом более 2 ТБ и мог содержать только 4 основных раздела. Сегодня этот подход считается устаревшим и на современных серверах используется только в режиме совместимости (Legacy/CSM).
Эпоха UEFI: Прошивка как мини-ОС
На смену BIOS пришел UEFI (Unified Extensible Firmware Interface). Это уже не просто набор базовых инструкций, а полноценная мини-операционная система, живущая на материнской плате.
Главное отличие UEFI от BIOS — UEFI умеет читать файловые системы (в частности, FAT32). Ему больше не нужно вслепую запускать код из первого сектора диска. Вместо этого UEFI ищет на диске специально подготовленный раздел.
Этот специальный раздел называется ESP (EFI System Partition).
- Это небольшой раздел (обычно от 100 до 500 МБ).
- Он отформатирован в файловой системе FAT32.
- На нем хранятся исполняемые файлы загрузчиков с расширением
.efi.
Логика работы UEFI выглядит так:
- UEFI считывает таблицу разделов диска (используется современный формат GPT, который поддерживает диски любого объема).
- Находит раздел с флагом ESP.
- Монтирует его и ищет файл загрузчика по заранее сохраненному пути (например,
\EFI\ubuntu\grubx64.efiили дефолтный\EFI\BOOT\BOOTX64.EFI). - Загружает этот файл в оперативную память и передает ему управление.
Финал инициализации: Передача эстафеты
Как только UEFI нашел файл .efi и запустил его, роль материнской платы заканчивается. Прошивка сделала свое дело: проверила железо и нашла программу, которая знает, что делать дальше.
Этим .efi файлом в мире Linux в 99% случаев является GRUB (GRand Unified Bootloader). Именно GRUB возьмет на себя следующую задачу: показать вам меню выбора операционной системы, найти на диске сжатый образ ядра Linux и распаковать его. Но о том, как GRUB ищет ядро и какие параметры ему передает, мы поговорим в следующей главе.