Проект Tilck развивает упрощённое Linux-совместимое ядро

В рамках проекта Tilck сотрудник VMware развивает монолитное ядро, фундаментально отличающееся от Linux, но спроектированное для совместимости с Linux на бинарном уровне и возможности запуска приложений, собранных для Linux. Код написан на языке Си и распространяется под лицензией BSD. На текущем этапе развития ядром поддерживается только архитектура x86, но код разработан с оглядкой универсальность и на реализацию в будущем поддержки других архитектур.

Ядро поддерживает вытесняющую многозадачность и реализует около 100 основных системных вызовов Linux, например, fork(),
waitpid(), read(), write(), select() и poll(), которых достаточно для выполнения консольных приложений, таких как BusyBox, Vim, TinyCC, Micropython и Lua, а также графических приложений, использующих фреймбуфер, таких как игра fbDOOM. Для сборки программ для Tilck предлагается инструментарий на базе библиотеки Musl.


Разработка нацелена на реализацию минимально необходимых возможностей, избегания перегруженности функциональностью, простую и понятную архитектуру, максимальное упрощения кода, небольшой размер бинарных файлов, предсказуемое (детерминированного) поведение, обеспечение минимальных задержек, достижение высокой надёжности и упрощение процессов разработки и тестирования.

Проект не ставит перед собой цели использования в многопользовательских серверных окружениях или десктоп-системах. Поддерживается только монолитная сборка с встраиваемыми на этапе компиляции модулями. Из файловых систем поддерживаются FAT16 и FAT32 в режиме чтения, а также ramfs, devfs и sysfs. Блочные устройства пока не реализованы, т.е. всё размещается в памяти. Для абстрагирования операций с ФС предоставляется VFS. Многопоточность на текущем этапе развития доступна только на уровне ядра (в пространстве пользователя пока не предоставляется).

Предложенный набор драйверов позволяет запускать Tilck как в окружении QEMU, так и на обычных системах, загружаясь с USB-накопителя. Имеется поддержка расширенных наборов инструкций SSE, AVX и AVX2. Для запуска предлагается собственный интерактивный загрузчик, поддерживающий системы с BIOS и UEFI, но возможно использование и сторонних загрузчиков, таких как GRUB2. При загрузке в QEMU ядро может работать в окружении с 3 МБ ОЗУ.

В настоящее время проект позиционируется как учебный, но в долгосрочной перспективе не исключено, что Tilck дорастёт до уровня, пригодного для применения в качестве ядра для встраиваемых систем, на которых требуется предсказуемое поведение и низкие задержки. Ожидается, что Tilck может занять промежуточную нишу между решениями на базе ядра Linux и специализированными ОС, работающими в режиме реального времени, такими как FreeRTOS и Zephyr. Среди планов упоминается портирование Tilck для процессоров ARM и процессоров без блока управления памятью (MMU), добавление сетевой подсистемы, поддержка блочных устройств и дополнительных ФС, таких как ext2.

Release. Ссылка here.