Fuse что за программа

Одной из приятных черт философии Unix, которую унаследовала Linux, является модульная организация файловой системы. И это, на самом деле, очень хорошо, так как в типичной установке ОС могут понадобиться различные файловые системы, вроде ext4 , reiserfs , btrfs , или даже сетевые файловые системы — вроде nfs . Кроме того, в Linux существуют и виртуальные файловые системы, вроде /sys и /dev , которые помогают Linux сделать так, чтобы всё в ней выглядело бы как файл.

Слабая сторона средств работы с файловыми системами в Linux заключается в том, что для создания механизмов, обеспечивающих работу файловой системы, нужно вносить изменения в ядро, или, как минимум, создавать загружаемые модули. Это, правда, не так уж и сложно, но, всё же, немного сложнее, чем разработка обычных программ. Решить эту проблему призван интерфейс FUSE (Filesystem in USErspace — файловая система в пользовательском пространстве). В частности, речь идёт о модуле файловой системы, который позволяет создавать новые файловые системы путём написания вполне обычного кода.

Как принимают на работу в США. HR Fuse

Мои любимые файловые системы пользовательского пространства

Существует несколько FUSE, которые способны принести тем, кто их применяет, реальную пользу. Вот некоторые из моих любимых:

  • sshfs — монтирует удалённую файловую систему, используя лишь ssh-доступ.
  • rclone — позволяет организовывать доступ ко многим удалённым файловым системам и осуществлять их монтирование.
  • tagsistant — файловая система, основанная на тегах, облегчающая работу с большим количеством файлов.
  • fuse-zip — позволяет монтировать zip-файлы в виде файловых систем.
  • gitfs — позволяет монтировать в виде файловых систем git-репозитории.

А как насчёт Windows?

FUSE в Linux — это весьма полезная штука. А есть ли что-то подобное в Windows? Да, нечто такое есть и в Windows. Называется оно WinFsp и выглядит как интересный механизм для работы с файловыми системами. Правда, прямой совместимости с FUSE у него нет.

Но имеются слои совместимости с FUSE (один — для версии 2.8, и ещё один — для версии 3.2), которые упрощают портирование существующего FUSE-кода на WinFsp.

Это — достаточно новый проект такого рода. Но существует ещё один подобный проект — Dokan, авторы которого говорят о наличии интерфейсов к его API для FUSE. Правда, если верить бенчмаркам, выполненным в рамках проекта WinFsp, оказывается, что WinFsp отличается более высокой производительностью.

Итоги

Если имеется какая-нибудь FUSE, которая вам очень нравится, то она, вероятно, является опенсорсной. А если она вам и правда нравится — вы можете попытаться портировать её на Windows. Если вы не используете Windows, но хотите написать собственную FUSE для этой платформы, вышеописанные проекты дадут вам достаточно простые механизмы для переноса ваших трудов на Windows.

Читайте также:
Складская программа что это

Что такое фьюзы? Как работать с фьзами (fuse bits) на микроконтроллерах AVR

Например, у вас может быть некая система для логирования данных. Вы решили, что хотите представить результаты её работы в виде файловой системы. Сделать это не так уж и сложно. Так, например, имеются некоторые структуры данных, которые нужно заполнить, причём, заполнять нужно далеко не все эти структуры.

Нужно написать функции, которые будут использоваться в виде инструментов для чтения и записи данных, представляющих директории и файлы. Вот — пример, написанный на C. А вот — C++-обёртка, которая позволит создать файловую систему, написав меньше кода, чем при выборе C. В этом примере имеется всего четыре простых функции. Так что — если вам нужна собственная файловая система пользовательского пространства — вы, что для Linux, что для Windows, вполне можете создать её своими силами.

Возникала ли у вас когда-нибудь необходимость в создании собственной файловой системы?

  • Блог компании RUVDS.com
  • Настройка Linux
  • Системное администрирование
  • *nix

Источник: habr.com

Fuse

Fuse (the Free Unix Spectrum Emulator) — кроссплатформенный эмулятор компьютеров ZX Spectrum. Работает на операционных системах Windows, Linux, Mac OS X, FreeBSD, OpenBSD, NetBSD, Maemo, AmigaOS 4 и MorphOS.

Эмулятор использует библиотеку libspectrum.

  • 1 История разработки
  • 2 Возможности
  • 3 Связанные проекты
  • 4 Ссылки

История разработки

Разработка началась в 1999 году. Изначально эмулятор предназначался в первую очередь для Unix-подобных операционных систем, но со временем был портирован на множество других платформ.

Возможности

Fuse поддерживает использование снапшотов, эмуляцию звука и принтера, а также обычную и мгновенную загрузку программ. Есть возможность сохранения скриншотов (в форматах png и scr), записи видео и записи действий пользователя в формате rzx. Имеются встроенные дебаггер и poke finder.

По умолчанию используется интерфейс либо GTK+ (Unix-like), либо Win32 (Windows), но можно пересобрать программу и с другими библиотеками: SDL, Xlib, SVGAlib, framebuffer. Возможность переключения в полноэкранный режим доступна только при использовании интерфейса на основе SDL.

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

  • Образы кассет tap и tzx.
  • Образы дисков dsk, udi, fdi, tr0, sdf, mgt, img, sad, trd, scl, opd.
  • Образы картриджей dck и rom.
  • Файлы снапшотов z80, slt (частичная поддержка), sna и szx.
  • Файлы записей rzx.
  • Также есть возможность загрузки файлов из архивов bzip2 и gzip.

Список моделей компьютеров, для которых реализована точная эмуляция:

  • ZX Spectrum 16K
  • ZX Spectrum 48K (в том числе NTSC вариант)
  • ZX Spectrum 128K
  • ZX Spectrum +2
  • ZX Spectrum +2A
  • ZX Spectrum +3
Читайте также:
Web media extensions что это за программа и нужна

Список остальных поддерживаемых моделей:

  • ZX Spectrum +3E
  • ZX Spectrum SE
  • Timex Computer 2048 (TC2048)
  • Timex Computer 2068 (TC2068)
  • Timex Sinclair 2068 (TS2068)
  • Пентагон-128К
  • Пентагон-512К
  • Пентагон-1024К
  • Scorpion ZS 256

Поддерживается эмуляция следующих устройств и интерфейсов:

  • DivIDE
  • ZX Interface I
  • +D
  • Beta 128 Disk Interface
  • Opus Discovery
  • Kempston Mouse
  • Kempston Joystick
  • Fuller audio box
  • ZXATASP
  • ZXCF

Связанные проекты

Некоторые ответвления от главного проекта в целях портирования эмулятора на другие платформы:

Кроме этого, на ядре Fuse основаны эмулятор JSSpeccy и библиотека z80ex.

Ссылки

Источник: www.old-games.ru

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

Однажды передо мной встала задача показать файлы с удаленного сервера нативно в Finder. Первое, что пришло на ум, — использовать WebDAV, но это был публичный сервис, к серверу которого у меня не было доступа, а в распоряжении имелся только REST API. В голове промелькнула мысль написать свою файловую систему, но она казалась слишком амбициозной. Однако мои сомнения развеялись, когда я обнаружил, что сообщество энтузиастов развивает проект FUSE for macOS, который сводит создание собственной файловой системы к нескольким сотням строк кода. А идущий в комплекте фреймворк не требует унылых разбирательств с API на голом C и вполне пригоден для использования в комплекте с современным и мощным 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

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

Читайте также:
L and h tts3000 что это за программа

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

Расположение фреймворка OSXFUSE

После установки фреймворк будет расположен по следующему пути: /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 и добавим в него следующую строчку:

#import

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

$(PROJECT_DIR)/$(TARGET_NAME)/HelloFuse-Bridging-Header.h

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

Отключим Sandbox

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

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

Hello world

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

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

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

override func contentsOfDirectory(atPath path: String) throws → [Any]

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

override func contents(atPath path: String) → Data?

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

import Foundation final class HelloFS: NSObject < override func contentsOfDirectory(atPath path: String) throws → [Any] < return [«hello.txt»] >override func contents(atPath path: String) → Data? < return «Hello world!».data(using: .utf8) >>

Присоединяйся к сообществу «Xakep.ru»!

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

Источник: xakep.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru