Смонтируем все! 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 работает со следующими файловыми системами: |