ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Воскресенье, 30 марта, 2025

GRUB пробует вкус Rust с новым прототипом

GRUB пробует вкус Rust с новым прототипом

Нет сомнений, что язык программирования Rust набирает серьезные обороты в мире открытого исходного кода. Мы видим, как все больше и больше проектов принимают его — например, COSMIC desktop environment от System76 , которая полностью построена на Rust, и Fish Shell 4.

Rust даже начал проникать в ядро ​​Linux. Ubuntu недавно также объявила о планах заменить GNU Coreutils на альтернативу на основе Rust в предстоящем релизе 25.10. И теперь еще один важный компонент экосистемы Linux присоединяется к движению Rust: культовый загрузчик GRUB.

Один из ведущих разработчиков, Владимир Сербиненко, начал экспериментировать с интеграцией кода Rust в GRUB. Его первоначальная работа доступна в двух репозиториях GitHub: один посвящен простому модулю Rust «hello world» для GRUB, а другой содержит соответствующие изменения в самом GRUB.

Эксперимент Сербиненко сосредоточен на платформе i386-pc — понятная отправная точка, поскольку порт GRUB i386-pc исторически был более широко используемой конфигурацией. Однако он подчеркивает, что нет никакого внутреннего технического барьера, препятствующего интеграции Rust в другие архитектуры.

На данный момент реализован только i386-pc, но это не технический предел, просто другие пока не реализованы.

 

Интересно, что Сербиненко переключил модули GRUB с использования .oдвоичных файлов ET_REL ( ) на .soдвоичные файлы ET_DYN ( ). Такой подход позволяет модулям на основе Rust функционировать более естественно в тандеме с существующей инфраструктурой GRUB.

Еще одна техническая деталь, заслуживающая внимания, — это решение компилировать с помощью panic=abort. Для устранения паник потребовалось бы реализовать rust_eh_personality, что не было рассмотрено в этом раннем прототипе.

На практике это ограничение означает, что паники Rust не распространяются корректно через среду GRUB, поэтому код полагается на прерывание выполнения при возникновении серьезной ошибки.

Как и ожидалось, не все разработчики полностью согласны с переносом Rust в GRUB. В ответ на объявление другой разработчик, Максим Фомин, поделился некоторыми опасениями по поводу этого перехода:

Я нашел показательным, что пост о внедрении Rust в проект не содержит никаких технических обсуждений о достоинствах этого. Это согласуется с критикой Rust, что внедрение Rust в проект часто вызвано желанием программистов похвастаться («я/проект крутые, потому что в них есть Rust»), а не техническими достоинствами.

 

Однако большинство отзывов были положительными, и многие разработчики ожидали, что внедрение Rust в GRUB повысит надежность программного обеспечения.

Напоминаем, что аудит, проведенный еще в феврале, выявил список уязвимостей в коде GRUB, многие из которых были связаны с управлением памятью. Это именно тот тип проблем, которые Rust призван предотвращать по умолчанию.

Более подробную информацию можно найти в объявлении Сербиненко.

Exit mobile version