Различия
Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
— |
setups:howto-squashfs [2017/12/17 10:04] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ======Что такое SquashFS?====== | ||
+ | *[[http://ibiblio.org/gferg/ldp/css/SquashFS-HOWTO/index.html|Оригинал статьи. Revision 1.0]] | ||
+ | *[[http://www.tldp.org/HOWTO/html_single/SquashFS-HOWTO|Свежая версия. Revision 1.9]] | ||
+ | Это HOWTO описывает использование **SquashFS** --- высоко сжатой файловой системы только-для-чтения для Linux, которая предназначена для использования в очень маленьких и встроенных системах, где хотелось бы использовать сжатую файловую систему. С этим документом вы узнаете как подготовить Linux-ядро для SquashFS, создать сжатую файловую систему и успешно пользоваться ей. | ||
+ | |||
+ | |||
+ | =====Вступление===== | ||
+ | |||
+ | Когда создаются маленькие и встроенные Linux-системы, каждый байт запоминающего устройства (дискета, флэш-карта и т. д.) очень важен, поэтому сжатие используется везде, где возможно. Также, сжатые файловые системы часто используются для целей архивирования. Для огромных общих архивов, так же, как и для персональных медиа-архивов, это насущно необходимо. | ||
+ | |||
+ | ShquashFS выводит всё это на новый уровень. Это файловая система только для чтения, которая позволяет вам сжимать целые файловые системы или отдельные директории, переписывать их в другие устройства/разделы или в обычные файлы, а затем устанавливать их непосредственно (если это устройство) или использовать закольцовку устройства (в случае с файлом). Модульный, компактный системный дизайн SquashFS блестящ. Для целей архивирования SquashFS предоставляет вам гораздо большую гибкость и скорость исполнения, чем архивы ''.tar.gz''. | ||
+ | |||
+ | В выпуск SquashFS исходные тексты Linux-ядра (что делает возможным чтение Squash на вашем ядре), а также вспомогательная программа mksquashfs, которая создает сжатые файловые системы (в файле или в блочном устройстве). | ||
+ | |||
+ | Последнее дерево выпуска SquashFS 2.x, предыдущая была 1.x. Этот документ описывает оба эти выпуска с соответствующими пометками. Например, если какое-либо свойство или параметр различны в этих выпусках, это будет обозначено как: новое значение (2.х) или старое значение (1.х). | ||
+ | |||
+ | |||
+ | =====Обзор SquashFS===== | ||
+ | |||
+ | * Данные, связующие узлы и директории сжаты. | ||
+ | * Squashfs сохраняет полностью идентификаторы пользователя/группы (''uin/gids'') (32 бита) и время создания файла. | ||
+ | * Поддерживаются файлы до 2<sup>32</sup> байт. Файловые системы могут быть до 2<sup>32</sup> байт. | ||
+ | * Данные узлов и директорий очень сильно сжаты и упакованы в байтовых пределах. Каждый сжатый узел имеет в среднем размер 8 байт (конкретная длина зависит от типа файла (то есть обычный файл, директория, символьная ссылка и блочные/символьные узлы устройства имеют различные размеры). | ||
+ | * Squashfs может использовать блоки размером до 64 Кб (размер по умолчанию 64 Кб). Использование 64-килобайтовых блоков позволяет достигать большей степени сжатия, чем обычный 4-килобайтовый размер блока. | ||
+ | * SquashFS привносит концепцию фрагментарных блоков: возможность объединять множественные файлы, по размеру меньшие блока, в отдельный блок, достигая больших степеней сжатия. | ||
+ | * Копии файлов обнаруживаются и удаляются. | ||
+ | * Поддерживаются архитектуры как big-endian, так и little-endian. | ||
+ | * SquashFS может собирать файловые системы, созданные на машинах с различной последовательностью байтов. | ||
+ | |||
+ | |||
+ | =====Разъяснения===== | ||
+ | |||
+ | Теперь давайте убедимся, что любые последующие обсуждения вам будем проще понять. Процедура запуска работы SquashFS, в целом, состоит из следующих шагов: | ||
+ | |||
+ | * Патч и рекомпиляция Linux-ядра для возможности поддержки SquashFS | ||
+ | * Компиляция mksquashfstool | ||
+ | * Создание сжатой файловой системы с mksquashfs | ||
+ | * Проверка: установка squashfs в место временного назначения | ||
+ | * Модифицирование стартовых скриптов ''/etc/fstab'' вашей целевой Linux-системы для установления новой сжатой файловой системы, когда это необходимо | ||
+ | |||
+ | |||
+ | ======Приготовления для SquashFS====== | ||
+ | |||
+ | |||
+ | =====Приобретение SquashFS===== | ||
+ | |||
+ | [[http://squashfs.sourceforge.net/|Домашняя страница SquashFS]] содержит новости о последнем выпуске и лог изменений, а также общую информацию о SquashFS. Вы можете заполучить последнюю версию на странице проекта SquashFS SourceForge. | ||
+ | |||
+ | |||
+ | =====Подготовка совместимого со SquashFS ядра===== | ||
+ | |||
+ | Для того, чтобы читать SquashFS, вам необходимо, чтобы она поддерживалась вашим ядром --- точно так же, как если бы это были файловые системы reiserfs или ext3. Вы должны убедиться в наличии соответствующего пaтча для вашей версии ядра --- он должен быть расположен в субдиректории ''linux-2.x.y'' в дереве исходных текстов SquashFS. Помните также, что в большинстве случаев вам понадобится чистое (оригинальное) Linux-ядро от www.kernel.org. Если ваше ядро от продавца-дистрибьютера, оно может быть уже пропатчено, поэтому с патчем SquashFS скорее всего не будет работать, поскольку патчи SquashFS сделаны для оригинальных Linux-ядер. | ||
+ | |||
+ | |||
+ | ===="Склейка" исходных текстов ядра==== | ||
+ | |||
+ | С исходниками ядра и наличием надлежащего патча все, что вам нужно делать это (мы исходим из того, что у вас имеются исходные тексты ядра Linux в ''/usr/src/linux'' и ''xnj'' и исходные тексты ''SquashFS'' в ''/usr/src/squashfs''): | ||
+ | |||
+ | Внести изменения в директорию исходников SquashFS и скопировать пaтч ядра (мы исходим из того, что он называется ''squashfs-patch'') в ''/usr/src/linux''. | ||
+ | |||
+ | <code bash> | ||
+ | cd /usr/src/squashfs | ||
+ | cp linux-2.x.y/squashfs-patch /usr/src/linux | ||
+ | </code> | ||
+ | |||
+ | Идем в директорию исходных текстов Linux ''/usr/src/linux'': | ||
+ | |||
+ | <code bash> | ||
+ | cd /usr/src/linux | ||
+ | </code> | ||
+ | |||
+ | Внимание: помните, что мы не будем покидать эту директорию в течение всех последующих связанных с ядром процедур и все дорожки будут даваться относительно ''/usr/src/linux''. | ||
+ | |||
+ | Теперь "склеиваем" исходные тексты с помощью пaтча SquashFS: | ||
+ | |||
+ | <code bash> | ||
+ | patch -p1 < squashfs-patch | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ====Компиляция ядра 2.6.x==== | ||
+ | |||
+ | чистим и подготовим ядро программы: | ||
+ | |||
+ | <code bash> | ||
+ | make distclean | ||
+ | make mrproper | ||
+ | </code> | ||
+ | |||
+ | Выберем конфигурацию ядра используя ваш любимый метод (''config''/''menuconfig''/''xconfig''/''gconfig''): | ||
+ | |||
+ | <code bash> | ||
+ | make menuconfig | ||
+ | </code> | ||
+ | |||
+ | В разделе "File systems" ("Файловые системы"), подразделе "Miscellaneous (различные) file systems" активируем опцию "Squashed filesystem" в качестве модуля либо как связанную с ядром. Обязательно компилировать SquashFS внутри ядра только в том случае, если планируем использовать "сквошенные" начальные виртуальные диски (''initrd''). | ||
+ | |||
+ | Для использования сжатого начального виртуального диска, активируем "Initial RAM disk support" в разделе "Device drivers", подразделе "Block devices". | ||
+ | |||
+ | Чтобы иметь возможность установить сжатую файловую систему после закольцовки устройства, следует активировать опцию "Loopback device support" ("Поддержка закольцовки") и разделе "Device drivers" ("Драйвера"), подразделе "Block devices" ("Блочные устройства"). | ||
+ | |||
+ | Теперь вы можем компилировать ядро и модули: | ||
+ | |||
+ | <code bash> | ||
+ | make | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ====Компиляция ядра 2.4.x==== | ||
+ | |||
+ | Выберем конфигурацию: | ||
+ | |||
+ | <code bash> | ||
+ | make menuconfig | ||
+ | </code> | ||
+ | |||
+ | В разделе "File systems" активируем опцию "Squashed filesystem" в качестве модуля либо как связанную с ядром. Обязательно компилировать SquashFS внутри ядра только в том случае, если планируется использовать "сквошенные" начальные виртуальные диски (''initrd''). | ||
+ | |||
+ | Если хотим использовать "сквошенные" начальные вирт диски, активируем "Initial RAM disk support" (поддержку начальных вирт дисков) в разделе "Block devices" ("Блочные устройства"). | ||
+ | |||
+ | Чтобы иметь возможность установить сжатую файловую систему после закольцовки устройства, следует активировать опцию "Loopback device support" ("Поддержка закольцовки") и разделе "Device drivers" ("Драйвера"), подразделе "Block devices" ("Блочные устройства"). | ||
+ | |||
+ | Теперь можно компилировать ядро и модули: | ||
+ | |||
+ | <code bash> | ||
+ | make dep | ||
+ | make bzImage | ||
+ | make modules | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ====Инсталляция и тестирование ядра==== | ||
+ | |||
+ | Теперь пора инсталлировать ваше новое ядро с возможностью работы SquashFS. Инструкции ниже для инсталляции и начальной загрузки ядра на хостовой машине. | ||
+ | |||
+ | Мы исходим из того, что ядро было компилировано на x.86 архитектуре, и что сжатый образ ядра находится в ''arch/i386/boot/'' субдиректории дерева ядра. Теперь скопируем ядро в директорию ''/boot'' (и назовем для удобства ''bzImage-sqsh''): | ||
+ | |||
+ | <code bash> | ||
+ | cp arch/i386/boot/bzImage /boot/bzImage-sqsh | ||
+ | </code> | ||
+ | |||
+ | Не забудем инсталлировать модули ядра, если они у вас есть: | ||
+ | |||
+ | <code bash> | ||
+ | make modules_install | ||
+ | </code> | ||
+ | |||
+ | Модифицируем конфигурацию файла начального загрузчика, чтобы он включал теперь наше новое ядро и инсталлируем (обновляем) начальный загрузчик. Теперь можно перезагрузиться с новым ядром. Когда оно запустится, проверим, что все прошло правильно: | ||
+ | |||
+ | <code bash> | ||
+ | cat /proc/filesystems | ||
+ | </code> | ||
+ | |||
+ | Или, если установили поддержку SquashFS в качестве модульного ядра: | ||
+ | |||
+ | <code bash> | ||
+ | insmod squashfs | ||
+ | cat /proc/filesystems | ||
+ | </code> | ||
+ | |||
+ | Если видим строку squashfs над другими файловыми системами, это означает, что SquashFS успешно внедрена в ядро. | ||
+ | |||
+ | |||
+ | =====Компиляция вспомогательной программы mksquashfs===== | ||
+ | |||
+ | Теперь нам нужно скомпилировать mksquashfs --- инструмент для создания сжатых файловых систем | ||
+ | |||
+ | <code bash> | ||
+ | cd /usr/src/squashfs/squashfs-tools | ||
+ | </code> | ||
+ | |||
+ | Компилируем и установим mksquashfs: | ||
+ | |||
+ | <code bash> | ||
+ | make | ||
+ | cp mksquashfs /usr/sbin | ||
+ | </code> | ||
+ | |||
+ | Если все прошло хорошо, набираем mksquash в строке подсказки, что выдаст сообщение как им пользоваться. | ||
+ | |||
+ | |||
+ | ======Вспомогательная программа mksquashfs, как она есть====== | ||
+ | |||
+ | |||
+ | =====Использование mksquashfs===== | ||
+ | |||
+ | **mksquashfs** --- это инструмент для создания новых "сквошенных" файловых систем и для добавления новых данных в уже существующие сквошенные файловые системы. Основной вид командной строки для mksquashfs: | ||
+ | |||
+ | <code bash> | ||
+ | mksquashfs source1 source2 ... destination [options] | ||
+ | </code> | ||
+ | |||
+ | ; source1, source2 и т. д. : файлы и директории, которые должны быть в итоге добавлены в полученную файловую систему с относительными и/или абсолютными путями | ||
+ | ; destination : обычный файл (файловая система, образ файла) или блочное устройство (такое как ''/dev/fd0'' или ''/dev/hda3''), куда мы хотим поместить свою сжатую файловую систему. | ||
+ | |||
+ | Заметки по работе mksquashfs по умолчанию: | ||
+ | |||
+ | Когда новые файлы добавляются в новую файловую систему или присоединяются к уже существующей, mksquashfs будет автоматически переименовывать файлы с одинаковыми именами: если два или более файла с названием ''text'' появятся в одной полученной директории, второй файл будет переименован в ''text_1'', третий в ''text_2'' и т. д. | ||
+ | |||
+ | Идентичные файлы будут удалены, поэтому будет оставаться только один физический экземпляр (в SquashFS 2.x можно отменить поиск/удаление копий с опцией %%--no-duplicates%%). | ||
+ | |||
+ | Если в пункте назначения уже есть существующая SquashFS по умолчанию, новые пункты будут добавлены в существующую ветвь директорий. Необходимо проверить список опций ниже, чтобы заставить mksquash переписать пункт назначения полностью и/или изменить его таким образом, чтобы добавить новые элементы исходных текстов. Пожалуйста обратите внимание, что невозможно присоединять записи к файловой системе, созданной с mksquashfs1.x используя mksquashfs2.x. Для этого понадобится установить SqyashFS-1.x файловую систему и скопировать файлы куда-нибудь, а затем присоединить их с другими нужными файлами, чтобы создать файловую систему SquashFS-2.x. | ||
+ | |||
+ | Если даны один файл исходных текстов или директория, они становятся ветвью в заново созданной файловой системе. Если даны два или более файлов исходников и/или директорий, они все станут подпунктами в ветви новой файловой системы. | ||
+ | |||
+ | Полученная в результате файловая система будет упакована во множество пакетов 4 Кб: это необходимо для файловых систем, используемых в блочных устройствах. Если вы абсолютно уверены, что вам это не понадобится, используйте опцию %%--nopadoption%%, чтобы отменить эту операцию. | ||
+ | |||
+ | Смотрите следующий раздел с более подробным описанием всех возможных опций. | ||
+ | |||
+ | |||
+ | =====Опции командной строки===== | ||
+ | |||
+ | Все возможные опции для mksquashfs представлены в таблице ниже. | ||
+ | |||
+ | Таблица 1. Опции командной строки инструмента mksquashfs | ||
+ | |||
+ | Описание опций | ||
+ | |||
+ | | -2.0 | заставляет mksquashfs версии 2.1 создавать файловую систему версии 2.0 | | ||
+ | | -all-root или --root-owned | объединяет все файлы целевой файловой системы в ветвь (UID=o, GID=o) | | ||
+ | | -always-use-fragments | разделяет все файлы размером больше блока на фрагменты (только 2.x, достижение больших степеней сжатия) | | ||
+ | | -b [block size] | использует [block size] размер блока файловой систему (32 Кб по умолчанию) --- это может быть также 512, 1024, 2048, 4069, 8192, 16384 или 32768 | | ||
+ | | -be или -le | запускает big endian либо little endian файловую систему, соответственно. | | ||
+ | | -check-data | активирует дополнительные проверки файловой системы | | ||
+ | | -e [file 1] ([file 2] ...) | задает, какие файлы и/или директории нужно опустить из новой файловой системы, которая должна создаваться | | ||
+ | | -ef [file] | указывает файл, который содержит перечень файлов/директорий, которые нужно исключить | | ||
+ | | -force-gid [GID] | устанавливает все групповые ID в целевой файловой системе в [GID] (может быть указано как имя или число) | | ||
+ | | -force-uid [UID] | устанавливает все юзерские ID в целевой файловой системе в [UID] (может быть указано как имя или число) | | ||
+ | | -info | выдает файлы, их оригинальный размер и степень сжатия после добавления в файловую систему | | ||
+ | | -keep-as-directory | если исходный текст представляет из себя одну директорию, опция делает эту директорию субдиректорией ветви в созданной файловой системе | | ||
+ | | -noappend | если целевой файл/устройство уже содержит сжатую файловую систему, лучше перепишите его, чем добавлять новые данные в уже существующую файловую систему | | ||
+ | | -no-duplicates | не обнаруживает/удаляет одинаковые имена файлов | | ||
+ | | -noD или --noDataCompression | не сжимать данные | | ||
+ | | -noF или --noFragmentCompresstion | не сжимать фрагменты (только для 2.x) | | ||
+ | | -no-fragments | не создавать фрагментарные блоки (только для 2.x, это создаст практически такую же файловую систему, как 1.x) | | ||
+ | | -noI или --no-Inode-Compresstion | не сжимать таблицу узлов | | ||
+ | | -nopad | не паковать полученную файловую систему во множественные пакеты 4 Кб | | ||
+ | | -root-becomes [name] | может быть использована в процессе присоединения к уже существующей сжатой файловой системе: это создаст новый корень и [имя] директорию, которая будет содержать все пре-существующие файлы/директории | | ||
+ | | -version | выдает сообщение о версии, авторских правах и лицензии | | ||
+ | |||
+ | В большинстве случаев нужно оставить все опции сжатия/блоков по умолчанию, поскольку они позволяют mksquashfs достигать наилучших возможных степеней сжатия. | ||
+ | |||
+ | |||
+ | ======Создание и использование сжатых файловых систем====== | ||
+ | |||
+ | |||
+ | =====Основные шаги===== | ||
+ | |||
+ | Для того, чтобы создать сжатую файловую систему из одной директории (скажем, ''/some/dir'' (''какая-то/директория'')) и вывести ее в обычный файл (таким образом продуцируя образ файловой системы), нужно сказать только одну волшебную фразу: | ||
+ | |||
+ | <code bash> | ||
+ | mksquashfs /some/dir dir.sqsh | ||
+ | </code> | ||
+ | |||
+ | mksquashfs начнет сжимать и печатать получаемое число узлов и размер записанных данных, так же, как среднюю степень сжатия. Теперь у нас есть образ директории ''/some/dir'' в файле ''dir.sqsh''. Теперь можно использовать команду установки, чтобы установить ее используя устройство закольцовки: | ||
+ | |||
+ | <code bash> | ||
+ | mkdir /mnt/dir | ||
+ | mount dir.sqsh /mnt/dir -t squashfs -o loop | ||
+ | </code> | ||
+ | |||
+ | Чтобы проверить, получилось ли то, что ожидали: | ||
+ | |||
+ | <code bash> | ||
+ | ls /mnt/dir | ||
+ | </code> | ||
+ | |||
+ | Если мы хотим вывести файловую систему непосредственно в устройство (скажем, дискета на ''/dev/fd0''): | ||
+ | |||
+ | <code bash> | ||
+ | mksquashfs /some/dir /dev/fd0 | ||
+ | </code> | ||
+ | |||
+ | Затем просто установим устройство: | ||
+ | |||
+ | <code bash> | ||
+ | mount /dev/fd0 /mnt/floppy -t squashfs | ||
+ | </code> | ||
+ | |||
+ | И проверим, все ли в порядке: | ||
+ | |||
+ | <code bash> | ||
+ | ls /mnt/floppy | ||
+ | </code> | ||
+ | |||
+ | |||
+ | =====Сжатие файловых систем===== | ||
+ | |||
+ | Операции, описанные здесь, обращены к большинству случаев, когда может использоваться сжатая файловая система только-для-чтения, хотите ли вы, чтобы она была на блочном устройстве или в файле. Это может быть все что угодно начиная от FTP/HTTP архивов, которые часто не обновляются до сжатого сегмента памяти и все, что угодно в этом духе. | ||
+ | |||
+ | |||
+ | ====Пример 1==== | ||
+ | |||
+ | Давайте предположим, что у нас есть директория ''/var/arch'' со множеством файлов и что надо превратить ее в сжатую файловую систему и сохранить на вашем сегменте ветви в качестве файла (это будет образ файловой систему который вы установите через кольцевое устройство). Операции, которые понадобится сделать: | ||
+ | |||
+ | Сожмем директорию, затем установим через кольцевое устройство, чтобы проверить: | ||
+ | |||
+ | <code bash> | ||
+ | mksquashfs /var/arch /var/arch.sqsh | ||
+ | mkdir /mnt/tmp | ||
+ | mount /var/arch.sqsh /mnt/tmp -t squashfs -o loop | ||
+ | ls /mnt/tmp | ||
+ | </code> | ||
+ | |||
+ | Если все прошло, как ожидалось, чтобы файловая система устанавливалась автоматически во время запуска, добавим эту строку в ''/etc/fstab'': | ||
+ | |||
+ | <file> | ||
+ | /var/arch.sqsh/var/archsquashfsro,defaults0 0 | ||
+ | </file> | ||
+ | |||
+ | Извлекаем файловую систему из временного места установки и установите используя компонент ''fstab'': | ||
+ | |||
+ | <code bash> | ||
+ | umount /mnt/tmp | ||
+ | mount /var/arch | ||
+ | </code> | ||
+ | |||
+ | Теперь просто убедимся, что все работает хорошо: | ||
+ | |||
+ | <code bash> | ||
+ | ls /var/arch | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ====Пример 2==== | ||
+ | |||
+ | Предположим, что у нас есть два раздела жесткого диска, ''/dev/hda6'' (который пуст) и ''/dev/hda7'' (который больше, чем ''/dev/hda6'', установлен в ''/at/arch'', содержит те же данные и полон). Теперь скажем, мы хотим сжать файловую систему ''/dev/hda7'' и переместить ее в ''/dev/hda6'', потом использовать ''/dev/hda7'' для каки-то других целей. Мы предположим, что у нас будет следующая строка в ''/etc/fstab'' (reiserfs это просто пример файловой системы, используемой на ''/dev/hda7''): | ||
+ | |||
+ | <file> | ||
+ | /dev/hda7/var/archreiserfsdefaults0 0 | ||
+ | </file> | ||
+ | |||
+ | И точно таким же образом, как с предыдущим примером: | ||
+ | |||
+ | <code bash> | ||
+ | mksquashfs /var/arch /var/arch.sqsh | ||
+ | mkdir /mnt/tmp | ||
+ | mount /var/arch.sqsh /mnt/tmp -t squashfs -o loop | ||
+ | ls /mnt/tmp | ||
+ | </code> | ||
+ | |||
+ | Если все прошло хорошо, извлекаем ''/dev/hda7'' (если нужно) и используйте ''dd'' чтобы копировать ''var/arch/sqsh'' в ''/dev/hda6'': | ||
+ | |||
+ | <code bash> | ||
+ | umount /dev/hda7 | ||
+ | dd if=/var/arch.sqsh of=/dev/hda6 | ||
+ | </code> | ||
+ | |||
+ | Теперь изменим строку в ''/etc/fstab'' для ''/dev/hda7'' на: | ||
+ | |||
+ | <file> | ||
+ | /dev/hda6/var/archsquashfsro,defaults0 0 | ||
+ | </file> | ||
+ | |||
+ | Установим новую файловую систему и проверим, все ли прошло хорошо: | ||
+ | |||
+ | <code bash> | ||
+ | mount /var/arch | ||
+ | ls /var/arch | ||
+ | </code> | ||
+ | |||
+ | Не забудем стереть ненужный образ файловой системы: | ||
+ | |||
+ | <code bash> | ||
+ | rm /var/arch.sqsh | ||
+ | </code> | ||
+ | |||
+ | |||
+ | =====Создание маленьких/встроенных систем===== | ||
+ | |||
+ | Под "маленькие/встроенные", подразумеваются Linux-системы, которые строятся в первоначальной загрузкой c дискет, IDE/USB флэш дисков, iso9660 CD-ROM'ов, маленьких жестких дисков и т.д. Хотите ли вы иметь вашу целую корневую файловую систему или единичный носитель (единичный сегмент, одна дискета) или у вас модульная система (несколько дискет или сегментов диска), процедура практически идентична. Создание таких Linux-систем стоит вне контекста этого HOWTO --- есть специальные HOWTO и гиды для этого (такие, как Bootdisk HOWTO и Linux From Scratch --- посетите [[http://www.tldp.org|tldp.org]] чтобы найти эти документы). | ||
+ | |||
+ | |||
+ | ====Сжатые файловые системы на дискетах/флэш/жестких дисках==== | ||
+ | |||
+ | Чтобы использовать SquashFS для создания Linux-систем на маленьких дисках, нужно сделать следующие обычные шаги для создания минимальных систем. | ||
+ | |||
+ | Проделайте следующие операции в соответствующих пунктах: | ||
+ | |||
+ | Когда создаеся ядро для вашей системы, убедитесь, что вы настраиваете поддержку SquashFS, чтобы оно могло устанавливать сжатые файловые системы. | ||
+ | |||
+ | Используйте mksquashfs для создания начального виртуального диска только-для-чтения и/или ветви и/или других файловых систем. | ||
+ | |||
+ | Не забудьте установить типа файловых систем для squashfs в ''/etc/fstab'' и/или начальных скриптах вашей системы для установления сжатых файловых систем. | ||
+ | |||
+ | Пример с дискетой. Предположим что у нас есть дерево системы дискеты в ''/home/user/floppylinux'' и мы хотим поместить корневую файловую систему на одну дискету, а ''/usr'' на другую. Что надо сделать: | ||
+ | |||
+ | <code bash> | ||
+ | cd /home/user | ||
+ | mksquashfs floppylinux root.sqsh -e usr | ||
+ | mksquashfs floppylinux/usr usr.sqsh | ||
+ | </code> | ||
+ | |||
+ | Примечание 1: здесь можно видеть, как мы используем опцию -e чтобы исключить директорию ''/usr'' из образа корневой файловой системы. | ||
+ | |||
+ | Примечание 2: не забудьте указать squashfs в директории ''/etc/fstab'' вашего корневого диска или стартовых скриптах когда устанавливаете файловую систему /usr. | ||
+ | |||
+ | Вставляем корневой диск в накопитель (предполагается , что на ней есть, положим, компилятор, и, таким образом, файловая система существует на этой дискете, а корневая файловая система будет постоянно храниться под директорией ''/boot'' этой файловой системы): | ||
+ | |||
+ | <code bash> | ||
+ | mount /mnt/floppy | ||
+ | cp root.sqsh /mnt/floppy/boot | ||
+ | </code> | ||
+ | |||
+ | Когда будет сделано, вытаскиваем корневую дискету, меняем дискеты на ''/usr'' диск и используем ''dd'' для передачи данных на ''usr'': | ||
+ | |||
+ | <code bash> | ||
+ | dd if=usr.sqsh of=/dev/fd0 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ====Сжатые файловые системы на CD-ROM==== | ||
+ | |||
+ | Посредством SquashFS можно сжимать большие файловые системы, что может быть использовано в CD дисках (просто как пример). | ||
+ | |||
+ | Запустите SquashFS в Linux-ядре целевой системы. Создаем сжатую корневую файловую систему. Изменяем начальные скрипты ''/etc/fstab'' целевой системы чтобы установить сжатую файловую систему, когда она нам понадобится. | ||
+ | |||
+ | Если мы создаем корневую файловую систему из запущенной Linux-системы, используем опцию ''-e'', чтобы mksquashfs исключил все псевдо-файловые системы, такие, как ''/proc'', ''/sys'' (на Linux-ядре после 2.5x) и ''/dev'' (когда используется DevFS). Также не забываем добавить сам образ ядра файловой системы который создается вместе с mksquashfs (Предполагается, что вы знаете причины для этих исключений). | ||
+ | |||
+ | |||
+ | ======Благодарности====== | ||
+ | |||
+ | Я бы хотел выразить мою искреннюю благодарность и безмерное уважение: | ||
+ | |||
+ | Phillip Lougher --- за его блестящую работу по squashfs, за создание эксклюзивного патча для linux-2.4.18, за его помощь в редактировании этого howto и ответы на мои письма. | ||
+ | |||
+ | Tabatha Marshall из TLDP Проекта Документации Linux за помощь мне написании этого HOWTO финального выпуска 1.0. | ||
+ | |||
+ | Всех из Проекта Документации Linux за их великолепную работу над всеми HOWTO и гидами, которые сильно помогли мне в исследовании и изучении тонкостей Linux. | ||
+ | |||
+ | Всех из рассылочных листов Проекта Документации Linux, которые помогли мне начать. | ||
+ | |||
+ | Бесконечная благодарность и уважение всем, кто развивает открытый для использования софт. | ||
+ | |||
+ | |||
+ | ======Лицензия====== | ||
+ | |||
+ | Этот документ может быть использован и распространен в пределах и под условиями , последующими дальше в Open Content licencе. Коротко это означает, что вы можете свободно изменять и распространять это HOWTO с основным условиям , что вы сохраняете ссылку на автора и авторские права. Полный текст лицензии вы можете увидеть на [[http://www.opencontent.org/opl.shtml]] | ||
+ | |||
+ | ---- | ||
+ | |||
+ | //Artemyi I. Pavlov// | ||
+ | |||
+ | //Опубликовал и редактировал Виктор Мелехин// |