RT
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 поднимает сервисы, работают пользовательские программы, а прошивка отзывается, только когда её о чём-то спросят — например, когда система пишет загрузочную запись или обновляет прошивку.
Комментарии
Пока комментариев нет.