Вкратце: Linux - это монолитное ядро с некоторыми возможностями загрузки модулей.Это означает, что каждая функция ядра (файловые системы, планировщик, драйверы, управление памятью и т. Д.) Является частью одной большой программы под названием Linux.Загружаемые модули - это всего лишь специализированный способ связывания во время выполнения, который позволяет пользователю выбирать эти функции по мере необходимости, но все они все еще разрабатываются в основном как одна программа.
Итак, для создания новой файловой системывы просто добавляете новые файлы исходного кода на C в код ядра, определяя операции, которые ваша файловая система должна выполнять.Затем создайте функцию инициализации, которая выделяет новый экземпляр структуры VFS, заполняет его соответствующими указателями на функции и регистрирует с помощью VFS.
Обратите внимание, что FUSE - это не что иное, как доступный для пользователя API, который делает то же самое.поэтому перехватчики FUSE (приблизительно) соответствуют операциям VFS.