Меню Рубрики

Fuse for mac os что это

FUSE for macOS
File system integration made easy

What is FUSE for macOS?

FUSE for macOS allows you to extend macOS’s native file handling capabilities via third-party file systems. It is a successor to MacFUSE, which has been used as a software building block by dozens of products, but is no longer being maintained.

Features

As a user, installing the FUSE for macOS software package will let you use any third-party FUSE file system. Legacy MacFUSE file systems are supported through the optional MacFUSE compatibility layer.

As a developer, you can use the FUSE SDK to write numerous types of new file systems as regular user space programs. The content of these file systems can come from anywhere: from the local disk, from across the network, from memory, or any other combination of sources. Writing a file system using FUSE is orders of magnitude easier and quicker than the traditional approach of writing in-kernel file systems. Since FUSE file systems are regular applications (as opposed to kernel extensions), you have just as much flexibility and choice in programming tools, debuggers, and libraries as you have if you were developing standard macOS applications.

How It Works

In more technical terms, FUSE implements a mechanism that makes it possible to implement a fully functional file system in a user-space program on macOS. It provides multiple APIs, one of which is a superset of the FUSE API (file system in user space) that originated on Linux. Therefore, many existing FUSE file systems become readily usable on macOS.

The FUSE for macOS software consists of a kernel extension and various user space libraries and tools. It comes with C-based and Objective-C-based SDKs. If you prefer another language (say, Python or Java), you should be able to create file systems in those languages after you install the relevant language bindings yourself.

The filesystems repository contains source code for several exciting and useful file systems for you to browse, compile, and build upon, such as sshfs, procfs, AccessibilityFS, GrabFS, LoopbackFS, SpotlightFS, and YouTubeFS.

Источник

Крафтовая ФС. Как быстро сделать свою файловую систему на FUSE и Swift

Содержание статьи

Что такое FUSE?

FUSE (Filesystem in Userspace) — это интерфейс для программ пространства пользователя, позволяющий экспортировать файловую систему ядру ОС. Этот механизм появился в Linux, и условно его можно разделить на два базовых компонента: модуль ядра (поддерживается разработчиками ядра) и библиотека пользовательского пространства (libfuse). Эта библиотека предоставляет методы для монтирования, размонтирования, отправки запросов к ядру и получения ответов от него. Также она реализует удобный верхнеуровневый API, в котором мы можем оперировать привычными понятиями имен файлов и путей, вместо работы с inode.

Проект FUSE for macOS представляет собой аналогичный набор API (а также Objective-C фреймворк), позволяющий реализовать полноценную файловую систему, которая будет работать в пространстве пользователя на macOS. Так как его API является надмножеством FUSE API из Linux, то существует теоретическая возможность завести многие из существующих файловых систем на macOS. В настоящее время этот проект остается единственной реализацией FUSE для macOS, которая развивается и поддерживается силами сообщества, хотя и активность на GitHub и в Google Groups сейчас довольно низкая.

Установка фреймворка

Установка не отличается сложностью: скачиваешь инсталлятор с сайта разработчика и запускаешь его. Если предпочитаешь собирать такие вещи из исходников, то это тоже не составит труда: достаточно установить зависимости через brew и запустить сборочный скрипт, все это подробно описано в Readme на GitHub.

Настройка проекта

Создадим новый проект в Xcode. Это должно быть Cocoa Application (в разделе macOS), я назвал его HelloFuse, язык выберем Swift, остальные параметры можно выбрать на свое усмотрение.

Подключим фреймворк

После установки фреймворк будет расположен по следующему пути: /Library/Frameworks/OSXFUSE.framework . Чтобы добавить его в проект, достаточно просто перетащить его в раздел Linked Frameworks and Libraries на вкладке General настроек сборки.

Подключение фреймворка

Создадим Bridging Header

Так как мы пишем проект на Swift, а фреймворк реализован на Objective-C, то нам нужно создать и подключить так называемый Bridging Header. Создадим заголовочный файл (File → New → File → macOS → Source → Header File), назовем его HelloFuse-Bridging-Header.h и добавим в него следующую строчку:

Теперь на панели навигации выбираем наш проект, выбираем сборку в разделе Targets, переходим на вкладку Build Settings, находим раздел Swift Compiler → General, в поле Objective-C Bridging Header добавляем

Подключаем Bridging Header в настройках проекта

Отключим Sandbox

По умолчанию во всех приложениях включена песочница, которая ограничивает возможности приложения, но в отличие от iOS на macOS ее можно отключить. Этим ты потеряешь право распространять приложение через App Store (что тоже не будет проблемой в случае с macOS), но в нашем случае нам нужен полноценный доступ к файловой системе, поэтому выбора нет.

Перейдем на вкладку Capabilities в настройках сборки и поставим переключатель в пункте App Sandbox в положение OFF.

Hello world

Описание файловой системы

Поведение файловой системы описывается в отдельном классе. Создадим класс под названием HelloFS и унаследуем его от NSObject. В минимальном примере нам понадобится реализовать только два метода: получение списка файлов, который мы будем отображать, и содержимое каждого файла.

В методе, отвечающем за отображение файлов, нужно вернуть массив строк с именами файла. В качестве параметра туда приходит путь (path), в более сложных случаях нужно будет его обрабатывать, чтобы показывать контент соответствующей директории. Здесь я просто возвращаю один файл hello.txt .

В метод, который отвечает за отображение пути файла, аналогично приходит путь, в зависимости от которого мы должны решить, какое содержимое отдавать для файла. В нашем же примере мы будем для всех файлов возвращать строку «Hello world!».

В итоге файл HelloFS.swift примет следующий вид:

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Источник

Использование MacFUSE — монтируйте практически что угодно как виртуальный жесткий диск

Кроме того, файловые системы могут действовать и как клиенты для сетевых протоколов, обеспечивая доступ к файлам, хранящимся на сервере (например, это справедливо для NTFS). Наконец, существуют так называемые «виртуальные» файловые системы, предоставляющие метод доступа к данным файловых устройств. В качестве примера такой системы в мире UNIX можно назвать procfs — в UNIX эта система предоставляет информацию о процессах в виде структуры каталогов.

MacFUSE позволяет реализовать полнофункциональную файловую систему в пользовательском пространстве Mac OS X. Это означает, что реализованный код файловой системы может создаваться и запускаться непривилегированными пользователями без необходимости переписывания кода ядра. Модуль файловой системы в пользовательском пространстве (FUSE) предоставляет «мост» к фактическому коду ядра. MacFUSE делает попытку обеспечения совместимости с исходным механизмом FUSE, который впервые появился в Linux. Это позволяет пользователям компилировать и использовать множество популярных файловых систем FUSE, разработанных на других платформах, в дополнение к новым, разработанным специально для Mac OS X. Это дает возможность разработчикам строить определения файловых систем, которые будут работать на любой платформе, при условии поддержки спецификаций FUSE.

Filesystem in Userspace (FUSE) — файловая система в пользовательском пространстве. Это модуль для ядер UNIX-подобных ОС, с открытым исходным кодом и относящийся к свободному программному обеспечению. Он позволяет пользователям без привилегий создавать их собственные файловые системы без необходимости переписывать код ядра. Соответственно, MacFUSE — это разновидность файловой системы FUSE (File System in User Space) для платформы Mac. Технология MacFUSE была разработана Амитом Сингхом (Amit Singh), руководителем направления свободного ПО для Macintosh в компании Google. Домашняя страница проекта MacFUSE — http://code.google.com/p/macfuse/.

MacFUSE требует Mac OS 10.4 Tiger или более новой. Чтобы установить MacFUSE, загрузите и установите основной пакет MacFUSE, доступный на сайте проекта. Как только установка завершится, ваш компьютер будет готов к использованию некоторых файловых систем FUSE. Чтобы установить некоторые из них, вам может понадобиться добавить такие свободные пакеты, как pkg-config, gettext и, в особенности, glib. Установить эти пакеты можно с помощью Fink, MacPorts или вручную, следуя инструкциям, приведенным в разделе HOWTO на сайте MacFUSE (http://code.google.com/p/macfuse/wiki/HoWTo).

FTPFS (FTP File System) и SSHFS (SSH File System) — это файловые системы FUSE, позволяющие монтировать удаленные системы с использованием протоколов FTP и SSH. Удаленные системы при этом будут выглядеть как примонтированные диски, с которыми можно будет производить обмен файлами методом перетаскивания. FTP (File Transfer Protocol) — это широко распространенный сетевой протокол, используемый для передачи файлов, а SSH (Secure SHell) — это протокол, обеспечивающий шифрование при коммуникациях с удаленными системами. SSHFS позволит вам примонтировать удаленную файловую систему (например, файл-сервер в офисе, учебном заведении или на сервере, предоставляющем вам хостинг для вашего Web-сайта) при обеспечении безопасных коммуникаций с использованием протокола SSH. SSHFS можно скачать с сайта MacFUSE. Этот компонент снабжен базовым графическим интерфейсом и очень прост в использовании.

Как правило, под управлением Mac OS X, диски, отформатированные с использованием NTFS, доступны только на чтение. NTFS — это предпочтительная файловая система, используемая всеми современными системами Windows (включая и компьютеры Mac, использующие Boot Camp). Если вы так или иначе должны взаимодействовать с компьютерами, работающими под управлением Windows, вы, скорее всего, часто сталкиваетесь и с NTFS. Файловая система ntfs-3g FUSE позволяет обеспечить для дисков NTFS возможности как чтения, так и записи.

Использование Gmail для файлового хранилища

Кроме того, существуют некоторые очень интересные виртуальные файловые системы, например, WikipediaFS и GmailFS. WikipediaFS позволяет монтировать на ваш компьютер сайт Wikipedia таким образом, чтобы получить возможность просмотра и редактирования различных статей в точно таком же режиме, как если бы они представляли собой файлы на вашем локальном компьютере. Например, вместо перехода браузером по адресу http://en.wikipedia.org/wiki/Apple и перехода на вкладку Edit (Править), вы можете просто открыть файл /Volumes/WikipediaFS/Apple любым текстовым редактором и редактировать эту статью как текстовый файл. GmailFS позволяет вам хранить файлы в виде почты в Gmail. Аналогичным образом, существуют и виртуальные системы для других сервисов Web, например, таких, как PicasaWeb (http://picasaweb.google.com), Flickr (http://www.flickr.com/), каналы RSS и Google Docs (http://docs.google.com).

GmailFS — это виртуальная файловая система, разработанная Ричардом Джонсом (Richard Jones). Она использует учетную запись Gmail для хранения файлов. GmailFS не следует путать с GoogleFS — распределенной файловой системой, созданной Google для внутренних целей.

Чтобы подготовить вашу систему к установке GmailFS (а также для использования других популярных файловых систем FUSE), вам потребуется установить следующие модули, в дополнение к MacFUSE:

  • Python 2.4 или более новой версии — этот пакет можно установить как с помощью MacPorts, так и с помощью Fink.
  • Python-FUSE bindings — этот пакет также доступен и в MacPorts (установите пакет fuse-bindings-python), и в Fink (установите пакет fuse-py24 or fuse-py25).
  • Libgmail — этот пакет доступен через MacPorts (установите пакет py-libgmail) и через Fink (установите пакеты libgmail-py24 или libgmail-py25).
  • GmailFS — этот пакет можно получить через Fink или скачать непосредственно с сайте разработчика (http://richard.jones.name/google-hacks/gmailfilesystem/gmail-filesystem.html).

Если вы — активный пользователь, имеющий большое количество файлов для передачи, не стоит использовать Gmail в качестве хранилища файлов. Хранение файлов на Google — это один из видов активности, за который вашу учетную запись могут взять на заметку, в результате чего вы можете лишиться доступа на срок до 24 часов.

Поскольку все эти компоненты доступны через Fink, то использование Fink будет простейшим вариантом установить GmailFS. Если вы уже пользуетесь MacPorts и вполне довольны этой системой, вы можете установить через MacPorts все компоненты, кроме libgmail. После этого можно скачать последнюю версию GmailFS с Web-сайте разработчика.

Если вы установили GmailFS через Fink, то последующие инструкции можно пропустить. После того как вы загрузите GmailFS с Web-сайта разработчика, вам потребуется открыть архив с исходным кодом, дав из командной строки Terminal следующие команды.

123// Открытие архива с исходным кодом GmailFS$ tar –zxvf gmailfs-0.8.0.tar.gz$ cd gmailfs-0.8.0/

Комбинация 0.8.0 представляет собой номер версии GmailFS, который в будущем может измениться. Последующие несколько команды могут запросить у вас пароль к Mac OS X.

123// Перемещение файлов GmailFS в инсталляционный каталог$ sudo mv gmailfs.py /usr/local/bin/gmailfs.py$ sudo mv mount.gmailfs /sbin/mount_gmail

После этого для получения полностью работающей инсталляции GmailFS вам останется произвести лишь одну заключительную конфигурационную операцию. В каталоге GailFS-0.8.0 имеется файл с именем gmailfs.conf. Отредактируйте этой файл любым текстовым редактором, изменив в нем следующие строки.

1234// Строки из файла gmailfs.conf, подлежащие редактированию[account]username = gmailusernamepassword = gmailpassword

Здесь строку gmailusername следует заменить на имя вашей учетной записи Gmail, а gmailpassword — на ваш пароль Gmail. Затем вам следует сохранить этот файл в каталоге /private/etc на вашем компьютере (для этого вам потребуется воспользоваться командой sudo). Теперь можно приступать к перемещению файлов в хранилище, образованное на базе вашей учетной записи Gmail. Для этого запустите программу Terminal и дайте следующие команды.

12345// Перемещение файлов в хранилище, // организованное на базе учетной записи Gmail$ mkdir

/gmailfs$ mount -ovolname=bla -o username=gmailuser -o password=gmailpass -o fsname=zOlRRa -t gmailfs /usr/local/bin/gmailfs.py

Команды, приведенные в листинге выше, приводят к тому, что ваша учетная запись Gmail будет примонтирована к папке /Users/yourosxusername/gmailfs в вашем домашнем каталоге. При работе через командную строку домашний каталог обозначается символом

, и, соответственно, путь к папке, к которой будет примонтировано ваше новое хранилище, будет выглядеть так:

/gmailfs/. После успешного исполнения команд из листинга выше, все файлы, которые вы поместите в каталог

/gmailfs/, будут сохранены в виде почты в вашем почтовом ящике Gmail. Вы сможете получать к ним доступ как через Finder, где ваше хранилище Gmail также будет отображаться в виде примонтированного диска, так и через командную строку.

Файлы, которые вы будете сохранять на своем диске Gmail, будут выглядеть как несколько необычные почтовые сообщения, поступившие в ваш почтовый ящик в папку входящей почты. Это нормально, но возможно, что это не то, чего вы хотели добиться. Если вы не хотите, чтобы в вашей папке входящей почты появлялись такие сообщения, вы можете создать фильтр Gmail, в соответствии с которым все почтовые сообщения, содержащие строку zOlRRa, сразу же отправлялись в папку с вашим почтовым архивом. Строка zOlRRa используется командой mount в качестве имени вашей файловой системы, и, естественно, вы при желании можете заменить ее любой другой строкой по вашему вкусу.

Чтобы установить WikipediaFS, вам потребуются пакеты Python 2.4 или более новой версии, а также привязки Python-FUSE. Как уже говорилось ранее, эти пакеты можно установить с помощью Fink, MacPorts или непосредственно из исходных кодов. WikipediaFS на текущий момент недоступна через Fink или MacPorts, поэтому устанавливать пакет вам нужно будет вручную. Сам пакет и инструкции по установке доступны для свободного скачивания на сайте разработчика: http://wikipediafs.sourceforge. net/.

Расширяем возможности Spotlight

SpotlightFS — это одна из наиболее интересных файловых систем FUSE. Она разработана специально для Mac OS X. Кроме того, она и появилась одной из первых. SpotlightFS создает интеллектуальные папки (smart folders) на базе Spotlight, содержимое которых генерируется динамически и практически мгновенно. Эти интеллектуальные папки обладают более широкими возможностями, нежели интеллектуальные папки, встроенные в Mac OS X, поскольку, в отличие от них, это не виртуальные, а настоящие папки. В Mac OS X встроенные виртуальные папки в действительности представляют собой не папки, а файлы формата XML, при открытии генерирующие запросы Spotlight. Преимущество настоящих папок перед виртуальными заключается в том, что их можно использовать из любого приложения, а также из командной строки. SpotlightFS можно скачать из раздела Downloads Web-сайта MacFUSE15. После установки вы немедленно сможете воспользоваться SpotlightFS, запустив приложение SpotlightFS.app.

Существуют два различных метода использования SpotlightFS. Простейший из них заключается в применении функции SmarterFolders, которая, как логично предположить на основании ее названия, представляет еще более интеллектуальные возможности, нежели встроенные интеллектуальные папки Mac OS X. Это папки, которые не нужно создавать. Для просмотра их содержимого их достаточно просто открывать. Чтобы начать пользоваться SpotlightFS, запустите приложение SpotlightFS.app, а затем в окне Finder выберите опции Go→Open Folder. Теперь попробуйте ввести следующий путь: /Volumes/SpotlightFS/SmarterFolder/apple. В

ы откроете виртуальную папку, в которой будут содержаться все файлы, возвращенные в ответ на запрос Spotlight по ключевому слову apple. Таким образом вы будете использовать интеллектуальные папки без необходимости создавать их заранее и сможете получать к ним доступ из множества различных приложений. Чтобы получить доступ к интеллектуальной папке из командной строки, дайте следующую команду:

1$ ls -lrt /Volumes/SpotlightFS/SmarterFolder/apple

В результате выполнения этой команды будет выведен список всех файлов, возвращенных по запросу Spotlight по ключевому слову apple. Если вы свободно обращаетесь с командной строкой, то SpotlightFS поможет вам в выполнении пакетных операций над множеством файлов.

Второй метод использования SpotlightFS заключается в фактическом создании каталога, вложенного в /Volumes/SpotlightFS. Этому вложенному каталогу следует присвоить имя искомой строки, например, Apple Hacks. После этого вложенный каталог, названный по имени искомой строки, будет вести себя точно так же, как интеллектуальные папки в Mac OS X, оставаясь при этом реальной папкой. Чтобы создать такой каталог из командной строки и начать им пользоваться, вы можете ввести следующие команды.

1234// Создание и использование интеллектуальной// папки SpotlightFS$ mkdir /Volumes/SpotlightFS/Apple Hacks/$ ls -lrt /Volumes/SpotlightFS/Apple Hacks/

FUSE предоставляет множество возможностей упрощения доступа к данным. В дополнение к этим возможностям, FUSE предоставляет возможности реализации доступа к файловым системам, которые исторически не поддерживаются под Mac OS X. Правда, если экспериментирование с виртуальными файловыми системами является относительно безопасным, о реализации NTFS с помощью FUSE этого сказать нельзя. Поэтому прежде чем вы установите и начнете использовать полнофункциональную файловую систему, например, ntfs-3g, настоятельно рекомендуется выполнить полное резервное копирование всех ваших данных и, разумеется, внимательно прочесть инструкции.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Furmark для mac os x
  • Full throttle remastered mac os
  • Full reset mac os
  • Ftp сервер для mac os
  • Ftp manager mac os