Сооснователь CentOS создал с ИИ ядро Ginux на Rust за 11 дней

2026-10-28 467 комментарии
По отчёту Куртцера, длительный сеанс Codex с GPT-5.6 Sol дал около 139 тысяч строк реализации и тестов. Человек задавал архитектуру и критерии приёмки, агент писал и проверял код. Прототип загружает Rocky Linux 10 с systemd, однако общий набор тестов проходит не полностью, а независимый аудит безопасности не проведён

Грегори Куртцер, сооснователь CentOS и основатель Rocky Linux, представил экспериментальное ядро Ginux, созданное преимущественно на Rust при участии ИИ за 11 дней. Оно самостоятельно загружается через UEFI и запускает отдельные неизменённые Linux-программы, включая приложения Alpine Linux и Rocky Linux. Исходный код доступен по лицензии Apache 2.0; проект предназначен для исследований и пока не готов к использованию в рабочих системах.

Самостоятельное ядро с совместимостью с Linux

Ginux – самостоятельное ядро и прототип операционной системы для x86-64. В нём реализованы собственные управление памятью, планировщик задач, модель процессов, виртуальная файловая система, сетевой стек, поддержка устройств и слой совместимости с Linux ABI. Большинство механизмов написано на Rust, а для низкоуровневых переходов, обработки прерываний и системных вызовов используются небольшие участки ассемблерного кода.

Совместимость позволяет выполнять выбранные готовые программы из Linux-дистрибутивов поверх ядра Ginux. Автор сообщает о запуске приложений Alpine Linux с musl и BusyBox, а также программ Rocky Linux с glibc. В проверенной версии пользовательское окружение Rocky Linux 10 с systemd достигает multi-user.target – этапа загрузки многопользовательской системы.

Linux ABI – двоичный интерфейс между готовыми Linux-программами и ядром: системные вызовы, структуры данных и ожидаемое поведение системных механизмов. Запуск нескольких приложений подтверждает совместимость с проверенными сценариями, но не со всем программным обеспечением Linux.

В матрице совместимости учтены 375 номеров системных вызовов Linux 6.12 для x86-64. Их состояние распределено следующим образом:

СтатусКоличествоЧто означает
Полностью реализованы82По оценке проекта, соответствуют выбранному контракту Linux и проверены тестами, включая ошибки и граничные случаи
Реализованы частично245Обрабатываются и полезны в отдельных сценариях, но имеют ограничения либо ещё не доказано соответствие поведению Linux
Запрещены политикой48Распознаются и отклоняются как привилегированные операции; это не считается полноценной поддержкой
Не имеют обработчика0Ни один вызов выбранной таблицы не попадает в обработчик по умолчанию, возвращающий ENOSYS
Всего375Базовый интерфейс Linux 6.12 x86-64; варианты x32 и i386 не входят в область совместимости

Таким образом, наличие обработчика для каждого номера не означает полной реализации всех вызовов. Ограничения сохраняются в загрузке программ, процессах и потоках, сигналах, сетевых интерфейсах, псевдофайловых системах, пространствах имён и cgroups.

Как Куртцер организовал разработку с Codex

В техническом отчёте Куртцер описывает один длительный сеанс работы OpenAI Codex с моделью GPT-5.6 Sol. За 11 календарных дней в проекте осталось 138 790 строк реализации и тестов, или около 139 тысяч. Это объём сохранённого кода после доработок, а не число строк исключительно ядра.

Автор называет подход Human-Directed Agentic Engineering, или HDAE. Он определял архитектуру, требования, ограничения, этапы и критерии приёмки. Codex с GPT-5.6 Sol реализовывал компоненты, собирал и загружал систему, запускал тесты, изучал ошибки и вносил исправления. Архитектурные решения и текущие цели сохранялись в документах проекта.

Куртцер проверял поведение системы и уточнял задания по результатам работы с ней. Например, запуск второго домена выявлял общее состояние, которое требовалось разделить, а systemd обнаруживал пробелы в системных интерфейсах. По оценке автора, расходы составили около 8 000 $; выгрузка расхода токенов от провайдера не сохранена. Описанный в отчёте результат зафиксирован в коммите d11c126a048a51fe7eb9c4105f31760add1027ea от 23 октября 2026 года.

Домены, образы OCI и встроенный контроллер

Нагрузки в Ginux организованы в домены. Каждый домен имеет собственное состояние процессов, адресных пространств, корневой файловой системы, монтирований, полномочий и жизненного цикла. Несколько доменов используют одно ядро Ginux; внутри домена можно запускать пользовательское окружение дистрибутива с systemd в роли PID 1.

Домен Ginux – объект ядра, который задаёт границы владения ресурсами, выполнения и изоляции нагрузки. Образ OCI поставляет начальное содержимое файловой системы, а выполнение процессов и разграничение доступа обеспечивает Ginux.

Система умеет загружать, проверять, кэшировать и распаковывать образы OCI, собирая из их слоёв корневую файловую систему домена. Конфигурация контроллера, определения доменов и кэш образов сохраняются между перезагрузками. Записываемые слои доменов в исследованной версии остаются временными: сохранность конфигурации не означает сохранность всех изменений внутри нагрузки.

Ядро, необходимые загрузочные компоненты и контроллер администрирования упакованы в единый образ GINUX.EFI. При загрузке ядро запускает контроллер как обычный процесс пользовательского пространства, в ring 3. Контроллер управляет устройствами, сетью, хранилищем, образами и доменами; привилегированные операции проходят через проверяемый ядром интерфейс управления.

Что работает и какие ограничения остаются

Основная проверенная конфигурация – виртуальная машина QEMU x86-64 Q35 с прошивкой OVMF, Intel IOMMU и устройствами virtio. На подходящем компьютере с Linux и процессором x86-64 используется KVM, а на Mac с Apple Silicon – эмуляция x86-64 через QEMU TCG.

ОбластьПродемонстрированоОграничения
ЗагрузкаЕдиный UEFI-образ x86-64 в Q35/OVMFНет готовых для эксплуатации механизмов подписания, восстановления и проверенного профиля физического оборудования
УправлениеВстроенный контроллер в пользовательском пространствеНет готовой системы удалённого администрирования
ДоменыНесколько доменов с раздельным состоянием процессов, памяти, файловых систем и полномочийИзоляция устройств и принудительное соблюдение ограничений ресурсов реализованы не во всех путях
Linux-программыВыбранные приложения Alpine и Rocky; загрузка Rocky с systemd до multi-user.targetСовместимость с дистрибутивами целиком не заявлена
Хранение данныхСохранение конфигурации и проверенного кэша слоёв OCIПостоянное хранение записываемых данных доменов и восстановление после сбоев не завершены
СетьDHCP и DNS хоста, настройка виртуальных связей, loopback и проверка жизненного циклаНезависимые сетевые пути и аренда адресов для каждого домена не завершены
УстройстваБлочные и сетевые устройства QEMU virtio, MSI-X, механизмы VT-dНет поддержки GPU, NVMe, широкого набора оборудования и стабильного ABI сторонних драйверов
ПроизводительностьУзкое сравнение в QEMU с одним виртуальным процессором и одинаковым исполняемым файлом sysbenchЗамеры не характеризуют общее быстродействие ядра, работу на физическом оборудовании или многоядерные нагрузки
БезопасностьТесты механизмов полномочий и защиты от повторного использования устаревших идентификаторовНезависимый аудит не проведён; готовность к защищённой эксплуатации не заявлена

В исследованной версии также не проходит весь общий набор make test: остаётся известный сбой проверки жизненного цикла системного супервизора после execve(). Успешные отдельные проверки, включая загрузку Rocky с systemd, не означают, что весь набор тестов проходит без ошибок.

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

Как собрать и попробовать Ginux

Согласно текущему README, для сборки требуются Rust 1.99.0 через rustup, Clang с поддержкой целевой платформы x86_64-none-elf, QEMU с x86-64 и OVMF, а также GNU Make. В каталоге исходного кода проверка окружения и запуск выполняются командами:

make doctor
make run

Сборка создаёт загрузочный файл build/esp/EFI/BOOT/BOOTX64.EFI. Команда make run также создаёт разреженный файл тома build/qemu/volume.raw. Команда make reset-storage удаляет этот том; при следующей загрузке система создаёт чистый.

В приглашении ginux> можно создать домен Alpine Linux и открыть его оболочку:

domain new alpine
domain set alpine image=alpine:latest init=/bin/sh
domain start alpine --attach

Сочетание Control-] отключает консоль домена и возвращает к контроллеру. Повторное подключение и запуск дополнительных процессов доступны командами:

domain attach alpine
domain exec alpine /bin/echo hello
domain exec alpine --interactive /bin/sh

Для проверенного сценария Rocky Linux 10 с systemd README приводит отдельный образ с init и настройку памяти 2048 МиБ:

domain new rocky
domain set rocky image=rockylinux/rockylinux:10-ubi-init init=/sbin/init memory-mib=2048
domain start rocky --attach

Базовый образ rockylinux/rockylinux:10 не содержит systemd. Команда domain start ставит запуск в очередь; состояние можно посмотреть через domain list и domain status NAME. Эти примеры предназначены для экспериментов с прототипом в описанной виртуальной машине.

Вывод

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

Читаете нас в Google? Добавьте Comss.ru в источникиДобавьте Comss.ru в источники Google
Новые статьи будут чаще в «Главных новостях» Google. Без подписок и уведомлений, отключается в один клик. Нужен вход в аккаунт Google.Наши статьи будут чаще в «Главных новостях». Нужен вход в Google.
Добавить в Google
© .
Комментарии и отзывы

Нашли ошибку?

Новое на сайте