Создание новой файловой системы - PullRequest
1 голос
/ 07 мая 2011

Я хочу создать собственную файловую систему для проекта, над которым я работаю. В настоящее время я смотрю на его написание на Python в сочетании с fusepy, но меня удивляет, как в Linux создается скомпилированная файловая система, не предназначенная для пользователя Существуют ли определенные библиотеки, с которыми вам нужно работать, или функции, которые нужно реализовать для правильной работы команды mount. В целом, я не уверен, как работает весь процесс.

Ответы [ 3 ]

2 голосов
/ 07 мая 2011

Да, вы будете программировать для интерфейсов ядра, в частности, the VFS layer как минимум. Редактировать Лучшая ссылка [1]

Полная документация находится в дереве ядра: http://www.mjmwired.net/kernel/Documentation/filesystems/vfs.txt. Конечно, модуль ядра fuse запрограммирован наточно такой же интерфейс

Это, однако, не то, что вы бы назвали библиотекой.Это компонент ядра, который встроен в ядро, поэтому ядру не нужно знать, как реализована файловая система для его работы.

[1] Google был неправ: первый удар не быллучший :)

1 голос
/ 07 мая 2011

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

Итак, для создания новой файловой системывы просто добавляете новые файлы исходного кода на C в код ядра, определяя операции, которые ваша файловая система должна выполнять.Затем создайте функцию инициализации, которая выделяет новый экземпляр структуры VFS, заполняет его соответствующими указателями на функции и регистрирует с помощью VFS.

Обратите внимание, что FUSE - это не что иное, как доступный для пользователя API, который делает то же самое.поэтому перехватчики FUSE (приблизительно) соответствуют операциям VFS.

1 голос
/ 07 мая 2011

Если вы хотите написать это на Python, хороший вариант - fuse. Для этого есть множество обучающих программ, например, здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...