POST

UEFI

POST (Power-On Self-Test, самотестирование при включении) — первая часть работы прошивки после нажатия кнопки питания: она проверяет и настраивает оборудование, чтобы дальше можно было запустить загрузчик и операционную систему.

Важно понимать: POST — не отдельная программа рядом с UEFI, а начальный этап самой прошивки. В современном компьютере это стадии SEC → PEI → DXE, после которых та же прошивка переходит к BDS и запускает загрузчик.

Название «тест» описывает лишь половину работы. POST не столько проверяет железо, сколько приводит его в рабочее состояние: до инициализации контроллера памяти у процессора вообще нет оперативной памяти, а до инициализации видео — нет вывода на экран. Поэтому «просто протестировать» оборудование нельзя — сначала его нужно включить и настроить.

Место POST в цепочке загрузки

  1. нажатие кнопки включения;
  2. прошивка (UEFI) начинает работу;
  3. POST — инициализация железа: SEC → PEI → DXE — эта страница;
  4. BDS — выбор загрузочного устройства;
  5. запуск загрузчика GRUB 2;
  6. ядро и initramfs;
  7. systemd;
  8. окно входа (login или графический экран).

POST — единственный шаг, который не зависит ни от диска, ни от операционной системы. Он выполняется, когда на компьютере ещё нет ни того, ни другого.

Что делает POST

Этап Что происходит
Процессор Сброс, загрузка микрокода, проверка базовых регистров
Чипсет Настройка мостов, контроллеров, питания
Память Обучение DRAM (тайминги, напряжения), проверка
Видео Инициализация видеокарты, вывод первых сообщений
Ввод Клавиатура, мышь, USB
Накопители Обнаружение дисков, NVMe, RAID
Прошивка Проверка контрольных сумм и подписей, применение настроек
Финал Выбор загрузочного устройства и передача управления

Порядок примерно такой, но у каждого производителя он свой: POST — часть прошивки конкретной материнской платы, а не стандартизованная программа.

Как процессор запускает POST

1. Сброс и фиксированная точка входа

При подаче питания чипсет сбрасывает процессор. Процессор переходит в заранее определённое состояние и начинает выполнять команды с одного и того же адреса, зашитого в архитектуру x86: FFFFFFF0h — последние 16 байт четырёхгигабайтного адресного пространства.

Сменить этот адрес нельзя: он часть архитектуры. Именно поэтому прошивка обязана оказаться именно там (см. следующий раздел).

В этих 16 байтах лежит команда перехода (jmp) на настоящий код POST. Первые инструкции выполняются в реальном режиме, без оперативной памяти и без какой-либо операционной системы.

2. Cache-as-RAM: POST работает без памяти

Чтобы что-то делать, нужна память. Пока контроллер DRAM не настроен, её нет — поэтому современные процессоры используют кэш как оперативную память (Cache-as-RAM; у Intel это No-Eviction Mode). Стек, переменные и таблицы на этом этапе живут в кэше.

3. Инициализация памяти — самая долгая часть

Настройка DRAM (у Intel — Memory Reference Code, у AMD — AGESA) — самая длительная стадия POST: читаются параметры модулей (SPD), подбираются тайминги и напряжения, проверяется стабильность. Именно поэтому при проблемах с памятью компьютер чаще всего «висит» дольше обычного и выдаёт ошибки памяти.

С этого момента POST может писать в настоящую оперативную память.

4. Прошивка проверяет сама себя

Дальше прошивка проверяет собственные контрольные суммы, а на современных платформах — и подписи модулей: Intel Boot Guard, AMD Hardware Verified Boot. На многих платах до этого успевает запуститься отдельный микроконтроллер (Intel Management Engine, AMD Platform Security Processor) со своей прошивкой — он живёт в той же микросхеме и тоже может остановить загрузку.

5. Видео, ввод, накопители — и передача управления

После памяти инициализируется видео, и на экране наконец появляются первые строки POST. Затем опрашиваются клавиатура и USB, обнаруживаются накопители, применяются настройки из Setup. В конце POST прошивка переходит к BDS и запускает загрузчик.

Обычно всё это занимает от долей секунды до нескольких секунд; на серверах обучение памяти может затянуться заметно дольше.

Где размещается код POST и почему именно там

Код POST лежит не на диске, а в микросхеме флеш-памяти на материнской плате — обычно это SPI NOR-флеш на 8–32 МБ (её часто называют «BIOS-чип»). Диск для POST бесполезен: до инициализации накопителей прочитать его невозможно.

Почему именно там:

  • Адрес входа фиксирован. Процессор после сброса начинает с FFFFFFF0h. Значит, код обязан быть доступен по этому адресу.
  • Чипсет переназначает адрес. Процессор не умеет читать SPI-флеш напрямую, поэтому чипсет отображает (алиасирует) верхнюю часть адресного пространства на флеш — по адресам у верхней границы 4 ГБ оказывается прошивка. Процессор выполняет её оттуда «на месте» (execute-in-place), подкачивая модули в память по мере надобности.
  • Это же место использовали всегда. В реальном режиме старые BIOS жили по адресам F0000h–FFFFFh (последние 64 КБ первого мегабайта), и верхнее отображение — та же область, только в 32-битном адресном пространстве. Так сохраняется совместимость.
  • Флеш не зависит от остального железа. Чтобы прочитать прошивку, не нужны ни драйверы, ни контроллер диска, ни память — только работающий чипсет. Это единственный носитель, доступный так рано.

Практическое следствие: прошивка привязана к конкретной материнской плате, поэтому сообщения, звуковые сигналы и коды ошибок POST у разных производителей разные.

Чем POST в BIOS отличается от POST в UEFI

Суть одна — инициализация железа. Отличаются организация и «хозяин» процесса:

BIOS UEFI
Как устроен единая процедура POST стадии SEC → PEI → DXE
Режим работы реальный, 16 бит защищённый, 32/64 бита
Драйверы Option ROM карт UEFI-драйверы внутри прошивки
Проверка прошивки контрольные суммы подписи, Secure Boot
Что после выбор диска по порядку BDS и Boot Manager

Поэтому подробности POST ниже одинаковы для обоих, а различия — на страницах BIOS и UEFI.

Как пользоваться POST

В обычной работе POST не требует участия — он просто проходит. Вмешательство нужно в двух случаях: настроить загрузку (зайти в Setup) и разобраться с ошибкой. Из-под Linux самого POST не видно: наблюдать можно только сигналы материнской платы и данные, которые прошивка оставила о себе в таблицах.

Звуковые сигналы

Если видео ещё не инициализировано, о проблеме сообщает встроенный динамик. Коды зависят от производителя прошивки; типичные примеры (сверяйтесь с документацией платы):

  • один короткий — всё в порядке;
  • повторяющиеся длинные — память;
  • один длинный и два коротких — видео;
  • один длинный и три коротких — клавиатура.

Индикаторы и POST-коды

На многих платах есть индикатор прохождения POST:

  • 7-сегментный индикатор (ASUS Q-code, Gigabyte Debug LED, MSI) — показывает шестнадцатеричный код текущего этапа; зависшее значение и есть тот этап, на котором POST остановился;
  • четыре светодиода CPU / DRAM / VGA / BOOT — самый простой способ понять, где застряла загрузка;
  • POST-карта — плата расширения, которая читает коды из порта 80h; на современных платах вместо неё используют отладочный разъём LPC/eSPI.

Сообщения на экране

Как только видео инициализировано, POST выводит текстовые сообщения и подсказки: объём памяти, найденные диски, ошибки вроде CMOS checksum error, No keyboard detected, Boot device not found и приглашение вида «Press DEL to enter Setup».

Как увидеть POST-сообщения

Производители прячут POST за логотипом и ускоряют его. Чтобы вернуть сообщения, в настройках прошивки отключают:

  • Quiet Boot / Full Screen Logo — показывать текст вместо логотипа;
  • Fast Boot — не пропускать инициализацию USB и проверку памяти.

Вход в настройки — обычно Del, F2 или F10 сразу после включения.

Серверы: BMC и Serial Over LAN

У серверов POST можно смотреть удалённо: отдельный контроллер (BMC — iDRAC, iLO, IPMI) имеет доступ к видеовыходу и последовательному порту.

# журнал событий BMC: ошибки питания, памяти, вентиляторов
ipmitool sel list

# перенаправление консоли по сети (Serial Over LAN) — видно POST и загрузку
ipmitool -I lanplus -H <адрес-bmc> -U <пользователь> -P <пароль> sol activate

Если POST завис

  1. Считайте сигнал. Звук или код на индикаторе подскажет, на каком этапе остановилось.
  2. Посмотрите, где застыли светодиоды CPU / DRAM / VGA / BOOT.
  3. Минимальная конфигурация: процессор, один модуль памяти, встроенное видео, питание — без лишних карт и дисков.
  4. Память: переставьте модули, попробуйте по одному, в разных слотах — при ошибках памяти POST чаще всего и висит.
  5. Сбросьте настройки (Clear CMOS — перемычка или извлечение батарейки): испорченные настройки нередко мешают пройти POST.
  6. Питание: проверьте разъёмы питания платы и процессора, попробуйте другой блок питания.
  7. Плата: найдите код ошибки в документации, при необходимости обновите прошивку.
  8. Сервер: смотрите журнал BMC — он пишет ошибки, даже если POST не вывел ничего.

Полезные команды

Данные о прошивке и то, что POST собрал в таблицах SMBIOS:

# версия и производитель прошивки
sudo dmidecode -t bios

# модель платы и компьютера
sudo dmidecode -t baseboard
sudo dmidecode -t system

# модули памяти, как их увидел POST (из таблиц SMBIOS)
sudo dmidecode -t memory

# то же без root — из sysfs
cat /sys/class/dmi/id/bios_vendor /sys/class/dmi/id/bios_version /sys/class/dmi/id/bios_date

# сообщения ядра текущей загрузки (уже не POST, но видно работу с прошивкой)
sudo journalctl -k -b

Проверка UEFI и Secure Boot:

# загрузочные записи UEFI
efibootmgr -v

# состояние Secure Boot
mokutil --sb-state

# сведения о прошивке (UEFI) и загрузчике
bootctl status

Что запомнить

  • POST — первая часть работы прошивки; она настраивает железо, а не только проверяет.
  • POST — не отдельная сущность: в UEFI это стадии SEC → PEI → DXE той же прошивки.
  • Код POST живёт в прошивке материнской платы, а не на диске, потому что диск на этом этапе ещё недоступен.
  • Процессор после сброса всегда начинает с адреса FFFFFFF0h — поэтому чипсет отображает прошивку именно туда.
  • Из-под Linux самого POST не видно: наблюдайте его по сигналам, индикаторам и экрану, а данные о прошивке берите через dmidecode.

Смотрите также

  • UEFI — прошивка, частью которой является POST
  • BIOS — как это было устроено раньше
  • SEC · PEI · DXE — стадии, из которых состоит POST
  • Setup — настройки прошивки
  • BDS — что происходит сразу после POST
Оценка статьи 0

Комментарии

Пока комментариев нет.