Автор статьи: White_Mouse Дата: 25.07.2003
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
допускаются исключительно с согласия автора.
|