Эксперимент по использованию бинарных модулей ядра NetBSD в Linux

Разработчики проекта NetBSD продолжили эксперименты с запуском компонентов ядра NetBSD во внешних окружениях. После успешного запуска ядра системы под управлением web-браузера, была предпринята попытка обеспечения работы модулей ядра NetBSD в Linux. В качестве полезного с практической стороны использования модулей NetBSD в Linux приведён пример задействования модуля с реализацией файловой системы FFSv2, а также других специфичных возможностей NetBSD, не поддерживаемых в Linux.

В проекте задействованы недавно внесённые в подсистему RUMP (Runnable Userspace Meta Program) улучшения, позволяющие запустить собранное в режиме RUMP ядро NetBSD на платформах, отличных от NetBSD. После небольшой доработки удалось обеспечить запуск rump-ядра в форме пользовательского процесса в Linux и реализовать функции загрузки модулей, собранных для ядра NetBSD. Для демонстрации разработки подготовлено небольшое приложение, запускающее в Linux процесс с ядром NetBSD и позволяющее монтировать разделы с файловой системой FFS, используя для работы с ними модуль ffs.kmod из состава NetBSD. При этом используются уже собранный для NetBSD набор модулей и загрузка модулей rump-ядром происходит динамически.

Напомним, что режим RUMP даёт возможность организовать выполнение частей ядра NetBSD в адресном пространстве пользователя. В частности, RUMP позволяет в виде оформленного в стиле микроядра серверного процесса выполнять в пространстве пользователя драйверы, изначально работающие на уровне монолитного ядра системы. По сути rump-ядро является частично паравиртуализированным ядром, запускаемым поверх высокоуровневного гипервизора. Указанная возможность позволяет легко портировать NetBSD под различные системы, так как для обеспечения работы rump-ядра достаточно подготовить для платформы только соответствующий небольшой гипервизор.

©  OpenNet