Виртуальная файловая система Версия для печати   


1. Выбираем подходящий по размеру раздел.

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


2. Создаем файл, где будет жить наша файловая система, которую впоследствии присоединим к root.

Я сделал это так:
dd if=/dev/zero of=/mnt/win_d/filesystem.ext bs=1024 count=350000
Таким образом мы создадим файл, состоящий из нулей (т.к. используется /dev/zero) на разделе, подмонтированном к /mnt/win_d. Для того, чтобы понять смысл этой команды и создать новый файл нужного размера в своей системе, прочтите man dd. Крайне рекомендуется при создании нового файла использовать размер блока (bs) равный 1024. Это значительно ускоряет операцию создания файла. При bs=1 на моем компьютере файл создавался около 10 минут. (Благодарю за совет Ananas'а.)


3. Создаем файловую систему.

В принципе, внутри нашего файла можно создать любую файловую систему из тех, что поддерживаются ядром. В этом примере создается файловая система second extended (EXT2).
mkfs.ext2 /mnt/win_d/filesystem.ext
Еще раз отмечаю, что "гостевая" файловая система (в которой создается наш файл) и собственно создаваемая файловая система могут быть любого поддерживаемого ядром типа.

Рекомендуется к прочтению man mkfs


4. Монтирование.

Для того, чтобы использовать вновь созданную нами файловую систему, необходимо присоединить ее к корневой файловой системе командой mount.
mount -o loop /mnt/win_d/filesystem.ext /mnt/virtual
Здесь необходимо обратить внимание на опцию loop команды mount. Таким образом мы присоединяем наш файл-файловую систему к первому свободному устройству /dev/loopX Проверено для двух устройств. Первое монтируется к /dev/loop0, второе - к /dev/loop1. Рекомендуется к прочтению man mount.


5. Что такое losetup и как этим пользоваться.

Все изложенное выше правильно, но есть и другой вариант монтирования нашего "файла". Имеется в виду утилита losetup, которую можно найти практически в любом дистрибутиве GNU/Linux. losetup специально предназначена для присоединения "нестандартной" файловой системы (в виде файла, в частности) к устройствам /dev/loopX.

Делается это таким образом:
losetup /dev/loop0 /mnt/win_d/filesystem.ext

Теперь обращаясь к устройству /dev/loop0 (в том числе смонтировав его), мы будем обращаться к нашему файлу (то есть файловой системе) на /mnt/win_d/filesystem.ext
Теперь можно смонтировать устройство:
mount /dev/loop0 /mnt/virtual
Эти операции дают тот же эффект, что и в первом случае (mount -o loop /mnt/win_d/filesystem.ext /mnt/virtual).
losetup, однвко имеет несколько приятных особенностей. В частности, эта утилита позволяет шифровать данные в нашей файловой системе по алгоритму AES и установить пароль на доступ к ней. Более подробно об этом можно прочесть в man losetup. Особого внимания заслуживает опция offset. Кроме того, можно использовать gnupg для дополнительного шифрования данных ПЕРЕД тем как они попадут в нашу файловую систему :) Вероятно, это можно сломать... Лет через сто :) В этом состоит одно из преимуществ использования losetup по сравнению с обычным mount.


6. Автоматизация.

Для того, чтобы созданная нами файловая система была доступна при каждой загрузке системы автоматически, необходимо добавить соответствующие изменения в конфигурацию системы.
В нашем примере достаточно будет добавить одну строку в /etc/fstab для того чтобы наша файловая система монторовалась как любое другое устройство.
Выглядеть эта строка будет так:

/mnt/win_d/filesystem.ext /mnt/virtual ext2 loop 0 0

Теперь наша файловая система будет доступна из каталога /mnt/virtual сразу после старта системы.


7. Пользуйтесь
---------------

(c) White_Mouse (white_mouse_ at mail.ru). Публикации на других сайтах кроме Linuxportal.ru
допускаются исключительно с согласия автора.

Опубликовал: White_Mouse
Дата: 25.07.2003
постоянный адрес статьи: http://linuxportal.ru/entry.php/P32_0_3_0/