Помощь с файловой системой FUSE

Я новичок в Ubuntu, и мне нужно создать файловую систему на основе FUSE. Я видел много примеров в Интернете, но я не могу понять разницу между примерами. Некоторые примеры из того, что я видел до сих пор, включают C-программы, поэтому:

  1. Мне любопытно, почему юнит-тесты создаются с помощью Python, а именно py.test модуль.
  2. Некоторые из архивов файловой системы FUSE содержат исходные коды ядра, а некоторые нет. Я не понимаю, почему это сделано.
  3. На официальной странице загрузки я изучил все примеры. Пожалуйста, помогите мне понять различия между fuse-2.9.7.tar.gz, fuse-2.9.7.tar.gz.asc и Исходным кодом (zip), Исходным кодом (tar.gz).

1 ответ

Три основных вопроса

Я разбил ваш вопрос на три области, которые вас беспокоили. Хотя я не могу помочь вам написать файловую систему FUSE, я могу ответить на эти 3 вопроса:

  1. Цитирование Википедии: В компьютерном программировании модульное тестирование - это метод тестирования программного обеспечения, с помощью которого отдельные единицы исходного кода, наборы из одного или нескольких компьютерных программных модулей вместе со связанными данными управления, процедурами использования и операционными процедурами тестируются, чтобы определить, являются ли они пригоден для использования.

Относительно того, почему использовался Python: Это было сделано, потому что некоторые, если не все языки программирования содержат рамки модульного тестирования. Фреймворк позволяет программисту использовать то, что уже существует, для расширения и тестирования своего кода. Python был выбором программиста для проекта libfuse. См. Руководство Автостопом по Python: Тестирование вашего кода.


  1. Из файла README.md:

FUSE (Файловая система в Userspace) - это интерфейс для программ пользовательского пространства для экспорта файловой системы в ядро ​​Linux. Проект FUSE состоит из двух компонентов: модуля ядра fuse (поддерживается в обычных репозиториях ядра) и библиотеки libfuse userspace (поддерживается в этом репозитории). libfuse предоставляет эталонную реализацию для связи с модулем ядра FUSE.

Файловая система FUSE обычно реализуется как отдельное приложение, связанное с libfuse. libfuse предоставляет функции для монтирования файловой системы, ее размонтирования, чтения запросов от ядра и отправки ответов обратно. libfuse предлагает два API: "высокоуровневый", синхронный API и "низкоуровневый" асинхронный API. В обоих случаях входящие запросы от ядра передаются в основную программу с помощью обратных вызовов. При использовании высокоуровневого API обратные вызовы могут работать с именами файлов и путями, а не с inode, и обработка запроса заканчивается, когда возвращается функция обратного вызова. При использовании низкоуровневого API обратные вызовы должны работать с inode, а ответы должны отправляться явно с использованием отдельного набора функций API.


Что касается вашего вопроса, все архивы должны содержать файлы C. Если то, что вы скачали, не содержало C-файлов, возможно, это не архив FUSE.


  1. Весь исходный код на основе Linux всегда поставляется в формате <packagename-Ver.si.on>.<compression format>,

    • .tar.gz является общим для Linux. Это сокращение от GZipped Tar Archive. Читать man tar а также man gzip для дополнительной информации.
    • .zip распространено в Windows. Это сокращение от Zipped File. Это эквивалент Linux, как две команды. Читать man zip а также man unzip,
    • .asc обычно называется контрольной суммой ASCII. Этот файл используется для проверки того, что загруженный вами файл не поврежден. Для проверки используйте программу GNU Privacy Guard. Посмотрите UNIX / Linux: Проверка ключей подписи файла PGP TarBall для примеров.

Относительно самого FUSE

Обратите внимание, что вам, вероятно, не нужно писать свою собственную файловую систему FUSE, так как большинство дистрибутивов содержат пакет FUSE. Ubuntu является одним из таких дистрибутивов. Смотрите Официальную страницу репозитория Ubuntu для FUSE и установите ее с sudo apt-get-update && sudo apt-get install fuse,

Другие вопросы по тегам