Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #78, ИЮНЬ 2005 г.

Смонтируем все!

j1m (j1m@list.ru)

Хакер, номер #078, стр. 078-096-1


Знакомство с виртуальными файловыми системами

Одним из самых заметных отличий никсов от других операционных систем является оригинальная древовидная файловая система. Механизм монтирования, а также возможность представлять отдельные компоненты ОС и железа в виде файлов сделали такую организацию ФС эталонной. И вот, спустя уже 30 лет, трудно себе представить *nix без каталогов /dev и /proc. Но что нам мешает пойти дальше? Сегодня я расскажу тебе, как, используя виртуальные файловые системы, примонтировать FTP-архив, CVS-репозиторий, диск с зашифрованными данными и даже файловое хранилище сотового телефона.

[зачем извращаться?]

Один за другим возникают резонные вопросы: «Почему бы не использовать стандартные методы работы с данными — к примеру, ftp- и ssh-клиенты?», «Зачем нужно искать дополнительный софт для подключения файлов и представления их в виде файловой системы?». Все просто — с файлами мы умеем работать с первых дней общения с компьютерами, поэтому гораздо удобнее оперировать данными, представленными в виде привычного дерева ФС, чем вникать в километровые маны по ftp, ssh, cvs и другим программам. Например, вместо того чтобы использовать ftp-клиент, проще примонтировать ftp-ресурс к определенному каталогу и лазить по нему, как по своему диску. Все твои знания по эффективной работе с файлами пригодятся и в этом случае. Ведь не просто так создатели UNIX Деннис Ритчи и Кен Томпсон в своей относительно новой ОС Plan9 развили идею виртуальных ФС до предела.

[fuse: расплавленная ФС]

Что такое fuse и почему я начал статью с его описания? FUSE (Filesystem in Userspace) — это модуль ядра Linux, позволяющий любой программе создавать свою виртуальную файловую систему. Изначально fuse был частью уже прекратившего свое существование проекта avfs, но в настоящее время пакет распространяется отдельно. Нам этот модуль нужен по той простой причине, что половина рассматриваемого в статье софта пользуется его услугами.

Заходи на сайт fuse.sf.net и качай последнюю версию модуля (мне досталась 2.2.1). Распаковывай архив, далее:

# ./configure && make && make install

Если установка прошла успешно, можешь подгрузить модуль (советую прописать эту команду куда-нибудь в загрузочные скрипты):

# modprobe fuse

[lufs: подвинься, fuse]

LUFS (Linux Userland File System) — весьма схожий с fuse проект, отличающийся только архитектурой. Если fuse — это модуль и библиотека, предоставляющая возможность программерам создавать свои виртуальные файловые системы, то lufs — не только модуль, но и программа, слинкованная с несколькими библиотеками, каждая из которых реализует определенный тип ФС. К сожалению, автор забросил разработку, но исходники собираются и для новых ядер. Последнюю версию можно утянуть с lufs.sf.net. Установка сводится к выполнению банальной последовательности команд:

# ./configure && make && make install

Далее необходимо подгрузить модуль, который по какой-то причине не устанавливается в /lib/modules. Придется все делать ручками:

# insmod kernel/Linux/2.6/lufs.ko

Lufs работает со следующими файловыми системами:

Содержание  Вперед на стр. 078-096-2