RT

UEFI

RT (Runtime) — последняя стадия по спецификации PI: операционная система работает, а от прошивки остались только runtime-сервисы. Это единственная стадия, которая не заканчивается, — она длится до выключения или перезагрузки.

Начинается RT в тот момент, когда ядро вызвало ExitBootServices() (это конец стадии TSL).

Что остаётся от прошивки

Только Runtime Services — небольшой набор вызовов, которые UEFI оставляет операционной системе:

Сервис Зачем он операционной системе
GetVariable / SetVariable / GetNextVariableName переменные UEFI: загрузочные записи, Secure Boot, настройки прошивки
GetTime / SetTime / GetWakeupTime часы реального времени (RTC) и будильник
ResetSystem перезагрузка и выключение «через прошивку»
UpdateCapsule / QueryCapsuleCapabilities обновление прошивки из-под ОС
SetVirtualAddressMap / ConvertPointer переход на виртуальные адреса ядра
GetNextHighMonotonicCount счётчик, по которому видно, что переменные не «откатили» назад

Код этих сервисов остаётся в памяти — в областях EFI runtime memory: ядро помечает их зарезервированными и не использует под свои нужды.

Как операционная система этим пользуется

  • Переменные UEFI — через файловую систему efivarfs:
    ls /sys/firmware/efi/efivars/
    
    # загрузочные записи — это тоже переменные
    efibootmgr -v
    
  • Часы — драйвер efi_rtc отдаёт время из прошивки как обычные часы (/dev/rtc0);
  • Обновление прошивки — fwupd, через капсулы UEFI:
    fwupdmgr get-devices
    fwupdmgr update
    
  • Проверка, видна ли прошивка из системы вообще:
    ls /sys/firmware/efi/
    cat /sys/firmware/efi/fw_platform_size
    

Почему это важно на практике

Если система загружена в режиме UEFI, но /sys/firmware/efi пуст или отсутствует — скорее всего загрузка шла через CSM, режим совместимости с BIOS. Тогда:

  • efibootmgr не работает — «EFI variables are not supported»;
  • загрузочные записи не пишутся;
  • прошивка не обновляется через fwupdmgr;
  • часть возможностей ядра, связанных с Secure Boot, недоступна.

Бывает и обратная ситуация: переменные есть, но запись в них запрещена. Например, при включённом Secure Boot и включённой защите ядра (lockdown) часть переменных доступна только на чтение — это защита, а не поломка.

Что происходит после RT

Ничего: RT — конец цепочки стадий. Прошивка больше не участвует в работе системы, кроме этих вызовов. Дальше начинается обычная жизнь операционной системы: systemd поднимает сервисы, работают пользовательские программы, а прошивка отзывается, только когда её о чём-то спросят — например, когда система пишет загрузочную запись или обновляет прошивку.

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

  • UEFI — общая картина стадий и два вида сервисов
  • TSL — предыдущая стадия
  • BDS — где выбирается загрузчик
  • SystemD — что происходит уже после прошивки
Оценка статьи 0

Комментарии

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