Программист создал IRC-клиент, который работает внутри UEFI. Он написан на Rust и использует GUI со средством визуализации TrueType. Благодаря этой разработке пользователи могут подключаться к IRC-серверу, общаться в чате и читать сообщения, не выходя из среды предварительной загрузки материнской платы.
Разработчик Филипп Теннен создал графический IRC-клиент, который работает в UEFI. Он написан на языке Rust и использует графический интерфейс пользователя (GUI) со средством визуализации TrueType, которые разработаны для пользовательского пространства axle.
Что такое UEFI
UEFI — это небольшая операционная система, работающая над прошивкой PC, поэтому она способна на гораздо большее, чем BIOS.
Как и в BIOS, реализация UEFI поставляется на каждой материнской плате в ПЗУ. Прошивка UEFI обеспечивает среду для запуска загрузчика операционной системы, а также предоставляет различные API, которые загрузчик может использовать для выполнения своих задач.
Загрузчик с самого начала загружается в 64-разрядную среду, а UEFI предоставляет множество полезных API для переключения разрешений дисплея VESA, выделения памяти и взаимодействия с файловой системой EFI.
Как разработан проект
Теннен смог разработать его благодаря сетевому бэкенду vmnet, который он реализовал для QEMU. Пользователи могут подключаться к IRC-серверу, общаться в чате и читать сообщения, не выходя из среды предварительной загрузки материнской платы.
Разработчик потратил несколько дней на тщательное тестирование Rust-кода, чтобы убедиться, что у него не происходит утечка памяти, и отключить UAF буфера приема TCP.
Для считывания движений мыши и нажатий кнопок Теннен использовал протокол Simple Pointer от UEFI, а также включил визуальную обратную связь о текущем положении курсора в графическом интерфейсе.
После этого энтузиаст смоделировал IRC-сообщения и запустил GUI toolkit в UEFI. Первым этапом работы он обеспечил реализацию AwmWindow, которую можно использовать из UEFI. Далее большая часть libgui предоставлялась бесплатно, включая управление событиями, рендеринг шрифтов, компоновку слоев, оформление представлений и сложные компоненты, такие как виды прокрутки.
Чтобы сделать UEFIRC удобным, Теннен использовал графические примитивы в Rust GUI toolkit от axle. Чтобы решить проблему с визуализацией TrueType, он добавил стеки полигонов, которые должны уметь рисовать все реализации буфера просмотра, наряду с линиями, кругами и прямоугольниками.
Зачем нужна разработка
Поддержка разработанного варианта использования означает, что прошивка UEFI поставляет сетевой стек в комплекте с драйверами сетевой карты и реализацией TCP, а также предоставляет API для взаимодействия с этим стеком любым приложениям, запущенным в предзагрузочной среде. Это может быть полезно в некоторых корпоративных средах.
Однако Теннен отмечает, что IRC-клиент неудобен, потому что этот проект — тщательно продуманная шутка.
«Я сказал подруге, что создаю проект в шутку, а затем объяснил это. Она сказала, что не знает, когда смеяться. Я тоже не уверен».
Филипп Теннен, разработчик
Код проекта UEFIRC опубликован на GitHub.