Filesystem squashfs чем открыть

Обновлено: 05.07.2024

Мне нравится, когда компьютеры мало шумят: с тихим компьютером работать приятнее. Шум, который издает компьютер, а точнее, его отсутствие, весьма важно, когда комьютер выполняет роль домашнего кинотеатра. Шумящий компьютер отвлекает и особенно будет заметен в тихих сценах.

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

Единственный практический выбор невращающегося носителя для установки системы - это USB Flash. Большинство BIOS поддерживают возможность загрузки с Flash-устройства, а других легкодоступных устройств с требуемыми габаритами нет. Поэтому выбор был очевиден: нужно скопировать операционную систему с жесткого диска на Flash-носитель и загрузить ее.

  • Сжать корневую файловую систему в образ диска
  • Загрузить ядро Linux с FAT-форматированного Flash-носителя
  • Заставить ядро смонтировать сжатый образ
  • Продолжить загрузку с этого образа

Что нам понадобится

  • Инструменты SquashFS. Будем использовать SquashFS для сжатия корневой файловой системы в образ, для этого потребуется средство создания файловой системы SquashFS.
  • SysLinux. Заставить Linux загружаться с FAT-диска - это подвиг, если только вы не использовали Syslinux; многие вещи становятся проще.
  • BusyBox. Чтобы заставить Linux загрузить образ файловой системы, нужно смонтировать, перейти в каталог и выполнить pivot_root (детали опущены). BusyBox предоставляет все это, объяснения немного позже.

Шаг 1а: Копируем существующую файловую систему

Первый шаг - создать образ диска, который в итоге должен стать корневой файловой системой. Наверняка вы захотите создать образ с текущей запущенной системы: у меня это был медиа-сервер, на котором запущен Gentoo. Нельзя сжимать / как есть, так как в данный момент могут быть примонтированы другие файловые системы. Поэтому нужно убрать эти монтирования. Простой способ - перемонтировать / где-нибудь в другом месте:

Новая бинд-монтированная корневая система станет чистым представлением того, что располагается на диске, без лишних на данный момент смонтированных файловых систем: это означает, что не должно быть файлов в каталогах /proc или /sys, и небольшое число файлов в /dev. Если все же остались какие-то файлы в этих каталогах, вы можете смело их удалить:

Последняя строка копирует три устройства, которые необходимы в процессе загрузки: символьные устройства console и null, а также FIFO-пайп, используемый системным процессом init. Другие файлы устройств создаются автоматически ядром.

Не забывайте, в /root/bindmount мы все еще работаем с самой корневой файловой системой; нужно сделать копию, с которой будем производить остальные действия:

После завершения копирования можно спокойно удалять все файлы в каталоге tmp и var/tmp (в копии!), так как это временные файлы и больше не нужны.

Шаг 1б: Сжимаем корневую файловую систему

В идеальном мире можно было бы взять и записать его на Flash, с которого бы загружалась система. К сожалению, есть две причины, почему это не так просто:

FAT32
Как ранее упоминалось, файловая система, реализованная во Flash-носителях - это FAT, которая непригодна для хранения корневой файловой системы Linux. Ладно, мы просто поместим несжатый образ диска на носитель и будем читать и писать с него. Тут мы сталкиваемся со второй проблемой;

Ограничение числа записей
Flash-память имеет ограничение по числу перезаписей, после достижения которого биты станут "липкими" и данные будут портиться. Правда, это число с шестью нулями, но я хочу сделать такую систему, чтобы она оставалась работоспособной не 1-2 года, а, предположим, десятки лет. Поэтому, нужен способ хранения файловой системы так, чтобы ее изменение не сопровождалось записью на Flash.

К счастью, умные люди уже придумали такой способ: держим сжатый образ на Flash лишь в качестве отправной точки файловой системы, а изменения храним RAM-диске в оперативной памяти. Создадим RAM-диск позже, но образ диска может быть создан прямо сейчас, с использованием SquashFS.

Есть два достоинства SquashFS. Во-первых, его высокий коэффициент сжатия; файловая система в 2Гб на моем медиа-сервере сжалась до 500 Мб, что идеально для Flash-носителей малого объема. Во-вторых, чтение производится блоками (по умолчанию размер блока 64 Кб) и ядро кэширует лишь небольшое число блоков в данный момент; как результат, SquashFS занимает малый объем памяти.

Создание образа - простой вызов программы сжатия:

Шаг 2а: Накладываем патч на ядро

Вам повезло, если ваше ядро уже содержит поддержку SquashFS и UnionFS, который мы используем позже. У тех, у кого установлена, к примеру, Ubuntu Feisty, уже есть модули и не нужно больше ничего делать. Проверить свое счастье можно простыми командами:

Если все команды завершились успешно и вы увидели свою squash-файловую систему в /mnt, тогда вам ничего с ядром не нужно делать, просто пропускайте этот шаг. Если же вы мазохист, как и я, придется компилировать свое ядро, содержащее SquashFS и UnionFS. К сожалению, поддержка этих чрезвычайно полезных файловых систем не включено в главную ветку ядра, поэтому придется накладывать патчи.

Приведенные пакеты датированы октябрем 2007 и могут обновиться в любой момент, так что по возможности, конечно, лучше скачать новые версии. На момент написания статьи все команды завершались успешно.

После успешного наложения патчей вы можете собрать ядро как обычно, включая все драйвера и модули, но также включая и два патча:

Выбор патчей
File systems ->
Layered filesystems ->
<M> Union file system
Miscellaneous filesystems ->
<M> SquashFS 3.2 - Squashed file system support

Шаг 2б: Загружаем ядро

Собрали ли вы свое ядро или использовали включенное в дистрибутив, все равно следующий шаг - заставить его загрузиться. Так как в USB Flash-носителе уже есть файловая система, это сведется к копированию файла ядра и исполнению одного волшебного трюка. Этот трюк носит имя SysLinux, небольшой пакет, который может загрузить ядро во множестве ситуаций. Для использования SysLinux сначала его нужно установить; на Gentoo Linux это делается следующим образом:

SysLinux предоставляет загрузочную файловую систему, из которой может быть запущено ядро Linux; это делается путем добавления загрузочного сектора и системного файла на раздел FAT, на который его нужно установить.

Такая установка проста:

При загрузке SysLinux будет произведен поиск конфигурационного файла syslinux.cfg для определения последующих действий. Можно сделать конфигурацию сложной, с несколькими ядрами и с различными вариантами загрузки, чтобы потом выбирать их в процессе загрузки. В нашем же случае требуется наипростейшая конфигурация:

syslinux.cfg: Загрузка ядра
default kernel.img

Такая конфигурация заставит SysLinux искать файл ядра Linux с именем kernel.img и загрузить его. Теперь все, что остается сделать - скопировать ядро на USB-носитель. В зависимости от пути, который вы выбрали выше, ядро может быть либо в каталоге с исходниками ядра, либо в каталоге /boot. Я сам компилировал свое ядро, поэтому я командовал следующее:

Теперь мы сможем загрузить Linux с Flash-носителя. К сожалению, пройти далеко не получится - вы наткнетесь на kernel panic; не было указано корневое устройство, поэтому загрузка не состоится. Чтобы дальнейшая часть операционной системы загрузилась, требуется временная корневая файловая система.

Шаг 3а: Создание начальной корневой системы

Теперь нужно использовать SquashFS-образ в качестве корневого диска. Однако здесь есть некоторые проблемы: образ SquashFS доступен только для чтения, а нам нужна система, которая справляется и с такими вещами, как логи. К счастью, есть способ решения этой проблемы, он состоит в том, чтобы наложить временную файловую систему на образ SquashFS, чтобы изменения проводились лишь в ней.

Для этого нужна прослойка между ядром и образом файловой системы, которая может производить такое наложение и затем возвращаться назад к реальному образу корневой системы. Ядро позволяет сделать это с помощью initrd (initial root disk - начальный корневой диск), который может быть загружен в оперативную память. initrd может содержать все что угодно, однако нужно учитывать, что initrd-диск полностью загружается в память, и нужно оставить место для основного образа.

Создать начальный корневой диск проще, чем собрать SquashFS-образ. Начнем с выделения места для образа. Я выбрал 8 Мб, этого хватит для всех наших нужд.

После того, как пустой образ initrd появился в вашей файловой системе и смонтирован, мы можем добавлять в него файлы. Во-первых, нужна базовая структура каталогов и немного node для устройств:

Шаг 3б: Заполняем initrd

Итак, создана базовая структура initrd. Теперь нужна поддержка команд наподобие sh, mount и cp, чтобы система могла на начальном этапе что-то делать. К счастью есть отличный пакет под названием BusyBox, который компилирует все утилиты, которые могут понадобиться, в один бинарный файл. Я не буду останавливаться на конфигурировании BusyBox, скажу лишь, что это очень похоже на конфигурацию ядра Linux: предоставляется система меню, в которой выбираются нужные пункты. Обратите внимание, что нужно компилировать BusyBox в статически слинкованный бинарный файл, иначе для загрузки initrd потребуется не только исполняемый файл, но и все библиотеки, от которых он зависит.

Специально для тех, кто не желает проводить вышеприведенные процедуры, я выложил копию initrd. Она содержит базовую структуру каталогов, node устройств и статически-скомпилированную копию BusyBox:

В этом архиве отсутствуют копии модулей ядра. Вы можете взять их из своего каталога /lib/modules и просто скопировать их поверх initrd; в следующем примере я копирую модули из заранее скомпилированного ядра 2.6.22.9:

Шаг 3в: Монтируем реальный корень

Последний шаг в initrd - указать его назначение. В данный момент это просто набор бинарных файлов и node устройств. У нас есть начальный корневой диск и ядро, но нет связи между ними: ядро должно загрузить initrd. Это делается путем передачи параметров ядру при его загрузке, вот нужная конфигурация SysLinux:

syslinux.cfg: включаем initrd
default kernel.img initrd=initrd.gz root=/dev/ram0 ramdisk_size=8192 rw init=/linuxrc

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

Наверняка вы удивились, увидеть столь короткий скрипт. Он использует лишь команды, поставляемые с BusyBox. Для решения нашей же задачи мы монтируем SquashFS корневую файловую систему, накладываем RAM-диск повер и запускаем новую корневую систему, с помощью такого скрипта:

В зависимости от вашего ядра, возможно, придется изменить имя, по которому идет обращение к Flash-накопителю. Если вы загружаете initrd с помощью простого скрипта оболочки, который был приведен выше, посмотрите вывод команды dmesg , вы увидите, откуда было загружено ядро.

Шаг 4: Финальная часть и проверка

С написанием linuxrc образ initrd завершен и может быть отмонтирован и сжат:

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

Программы, которые поддерживают SQUASHFS расширение файла

В следующем списке перечислены программы, совместимые с файлами SQUASHFS, которые разделены на категории 2 в зависимости от операционной системы, в которой они доступны. Файлы с расширением SQUASHFS, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.

Программы, обслуживающие файл SQUASHFS

Как открыть файл SQUASHFS?

Отсутствие возможности открывать файлы с расширением SQUASHFS может иметь различное происхождение. Что важно, все распространенные проблемы, связанные с файлами с расширением SQUASHFS, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Приведенный ниже список проведет вас через процесс решения возникшей проблемы.

Шаг 1. Установите 7-Zip программное обеспечение

Install software to open SQUASHFS file

Основная и наиболее частая причина, препятствующая открытию пользователями файлов SQUASHFS, заключается в том, что в системе пользователя не установлена программа, которая может обрабатывать файлы SQUASHFS. Наиболее очевидным решением является загрузка и установка 7-Zip или одной из перечисленных программ: Squashfs. Выше вы найдете полный список программ, которые поддерживают SQUASHFS файлы, классифицированные в соответствии с системными платформами, для которых они доступны. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт 7-Zip и загрузите установщик.

Шаг 2. Проверьте версию 7-Zip и обновите при необходимости

Update software that support file extension SQUASHFS

Если у вас уже установлен 7-Zip в ваших системах и файлы SQUASHFS по-прежнему не открываются должным образом, проверьте, установлена ли у вас последняя версия программного обеспечения. Может также случиться, что создатели программного обеспечения, обновляя свои приложения, добавляют совместимость с другими, более новыми форматами файлов. Причиной того, что 7-Zip не может обрабатывать файлы с SQUASHFS, может быть то, что программное обеспечение устарело. Последняя версия 7-Zip должна поддерживать все форматы файлов, которые совместимы со старыми версиями программного обеспечения.

Шаг 3. Настройте приложение по умолчанию для открытия SQUASHFS файлов на 7-Zip

После установки 7-Zip (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия SQUASHFS файлов. Следующий шаг не должен создавать проблем. Процедура проста и в значительной степени не зависит от системы

Associate software with SQUASHFS file on Windows

Процедура изменения программы по умолчанию в Windows

  • Щелкните правой кнопкой мыши на файле SQUASHFS и выберите « Открыть с помощью опцией».
  • Нажмите Выбрать другое приложение и затем выберите опцию Еще приложения
  • Последний шаг - выбрать опцию Найти другое приложение на этом. указать путь к папке, в которой установлен 7-Zip. Теперь осталось только подтвердить свой выбор, выбрав Всегда использовать это приложение для открытия SQUASHFS файлы и нажав ОК .

Процедура изменения программы по умолчанию в Mac OS

Шаг 4. Проверьте SQUASHFS на наличие ошибок

Вы внимательно следили за шагами, перечисленными в пунктах 1-3, но проблема все еще присутствует? Вы должны проверить, является ли файл правильным SQUASHFS файлом. Отсутствие доступа к файлу может быть связано с различными проблемами.

Check SQUASHFS file for viruses

1. Убедитесь, что SQUASHFS не заражен компьютерным вирусом

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

2. Убедитесь, что структура файла SQUASHFS не повреждена
3. Проверьте, есть ли у вашей учетной записи административные права

Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Переключитесь на учетную запись с необходимыми привилегиями и попробуйте снова открыть файл Squashfs Format System Format.

4. Проверьте, может ли ваша система обрабатывать 7-Zip
5. Убедитесь, что ваша операционная система и драйверы обновлены

Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом Squashfs Format System Format. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами SQUASHFS, влияющими на более старые версии данного программного обеспечения.

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла SQUASHFS мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле SQUASHFS.

Это 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 32 байт. Файловые системы могут быть до 2 32 байт. Данные узлов и директорий очень сильно сжаты и упакованы в байтовых пределах. Каждый сжатый узел имеет в среднем размер 8 байт (конкретная длина зависит от типа файла (то есть обычный файл, директория, символьная ссылка и блочные/символьные узлы устройства имеют различные размеры). Squashfs может использовать блоки размером до 64 Кб (размер по умолчанию 64 Кб). Использование 64-килобайтовых блоков позволяет достигать большей степени сжатия, чем обычный 4-килобайтовый размер блока. SquashFS привносит концепцию фрагментарных блоков: возможность объединять множественные файлы, по размеру меньшие блока, в отдельный блок, достигая больших степеней сжатия. Поддерживаются архитектуры как big-endian, так и little-endian. SquashFS может собирать файловые системы, созданные на машинах с различной последовательностью байтов.

Разъяснения

Теперь давайте убедимся, что любые последующие обсуждения вам будем проще понять. Процедура запуска работы SquashFS, в целом, состоит из следующих шагов:

Патч и рекомпиляция Linux-ядра для возможности поддержки SquashFS Проверка: установка squashfs в место временного назначения Модифицирование стартовых скриптов /etc/fstab вашей целевой Linux-системы для установления новой сжатой файловой системы, когда это необходимо

Приобретение SquashFS

Подготовка совместимого со SquashFS ядра

"Склейка" исходных текстов ядра

С исходниками ядра и наличием надлежащего патча все, что вам нужно делать это (мы исходим из того, что у вас имеются исходные тексты ядра Linux в /usr/src/linux и xnj и исходные тексты SquashFS в /usr/src/squashfs ):

Внести изменения в директорию исходников SquashFS и скопировать пaтч ядра (мы исходим из того, что он называется squashfs-patch ) в /usr/src/linux .

Идем в директорию исходных текстов Linux /usr/src/linux :

Внимание: помните, что мы не будем покидать эту директорию в течение всех последующих связанных с ядром процедур и все дорожки будут даваться относительно /usr/src/linux .

Теперь «склеиваем» исходные тексты с помощью пaтча SquashFS:

Компиляция ядра 2.6.x

чистим и подготовим ядро программы:

Выберем конфигурацию ядра используя ваш любимый метод ( config / menuconfig / xconfig / gconfig ):

В разделе «File systems» («Файловые системы»), подразделе «Miscellaneous (различные) file systems» активируем опцию «Squashed filesystem» в качестве модуля либо как связанную с ядром. Обязательно компилировать SquashFS внутри ядра только в том случае, если планируем использовать «сквошенные» начальные виртуальные диски ( initrd ).

Для использования сжатого начального виртуального диска, активируем «Initial RAM disk support» в разделе «Device drivers», подразделе «Block devices».

Чтобы иметь возможность установить сжатую файловую систему после закольцовки устройства, следует активировать опцию «Loopback device support» («Поддержка закольцовки») и разделе «Device drivers» («Драйвера»), подразделе «Block devices» («Блочные устройства»).

Теперь вы можем компилировать ядро и модули:

Компиляция ядра 2.4.x

В разделе «File systems» активируем опцию «Squashed filesystem» в качестве модуля либо как связанную с ядром. Обязательно компилировать SquashFS внутри ядра только в том случае, если планируется использовать «сквошенные» начальные виртуальные диски ( initrd ).

Если хотим использовать «сквошенные» начальные вирт диски, активируем «Initial RAM disk support» (поддержку начальных вирт дисков) в разделе «Block devices» («Блочные устройства»).

Чтобы иметь возможность установить сжатую файловую систему после закольцовки устройства, следует активировать опцию «Loopback device support» («Поддержка закольцовки») и разделе «Device drivers» («Драйвера»), подразделе «Block devices» («Блочные устройства»).

Теперь можно компилировать ядро и модули:

Инсталляция и тестирование ядра

Теперь пора инсталлировать ваше новое ядро с возможностью работы SquashFS. Инструкции ниже для инсталляции и начальной загрузки ядра на хостовой машине.

Мы исходим из того, что ядро было компилировано на x.86 архитектуре, и что сжатый образ ядра находится в arch/i386/boot/ субдиректории дерева ядра. Теперь скопируем ядро в директорию /boot (и назовем для удобства bzImage-sqsh ):

Не забудем инсталлировать модули ядра, если они у вас есть:

Модифицируем конфигурацию файла начального загрузчика, чтобы он включал теперь наше новое ядро и инсталлируем (обновляем) начальный загрузчик. Теперь можно перезагрузиться с новым ядром. Когда оно запустится, проверим, что все прошло правильно:

Или, если установили поддержку SquashFS в качестве модульного ядра:

Если видим строку squashfs над другими файловыми системами, это означает, что SquashFS успешно внедрена в ядро.

Компиляция вспомогательной программы mksquashfs

Теперь нам нужно скомпилировать mksquashfs — инструмент для создания сжатых файловых систем

Компилируем и установим mksquashfs:

Использование mksquashfs

mksquashfs — это инструмент для создания новых «сквошенных» файловых систем и для добавления новых данных в уже существующие сквошенные файловые системы. Основной вид командной строки для mksquashfs:

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

В большинстве случаев нужно оставить все опции сжатия/блоков по умолчанию, поскольку они позволяют mksquashfs достигать наилучших возможных степеней сжатия.

Основные шаги

Для того, чтобы создать сжатую файловую систему из одной директории (скажем, /some/dir ( какая-то/директория )) и вывести ее в обычный файл (таким образом продуцируя образ файловой системы), нужно сказать только одну волшебную фразу:

mksquashfs начнет сжимать и печатать получаемое число узлов и размер записанных данных, так же, как среднюю степень сжатия. Теперь у нас есть образ директории /some/dir в файле dir.sqsh . Теперь можно использовать команду установки, чтобы установить ее используя устройство закольцовки:

Чтобы проверить, получилось ли то, что ожидали:

Если мы хотим вывести файловую систему непосредственно в устройство (скажем, дискета на /dev/fd0 ):

Затем просто установим устройство:

И проверим, все ли в порядке:

Сжатие файловых систем

Пример 1

Давайте предположим, что у нас есть директория /var/arch со множеством файлов и что надо превратить ее в сжатую файловую систему и сохранить на вашем сегменте ветви в качестве файла (это будет образ файловой систему который вы установите через кольцевое устройство). Операции, которые понадобится сделать:

Сожмем директорию, затем установим через кольцевое устройство, чтобы проверить:

Если все прошло, как ожидалось, чтобы файловая система устанавливалась автоматически во время запуска, добавим эту строку в /etc/fstab :

Извлекаем файловую систему из временного места установки и установите используя компонент fstab :

Теперь просто убедимся, что все работает хорошо:

Пример 2

Предположим, что у нас есть два раздела жесткого диска, /dev/hda6 (который пуст) и /dev/hda7 (который больше, чем /dev/hda6 , установлен в /at/arch , содержит те же данные и полон). Теперь скажем, мы хотим сжать файловую систему /dev/hda7 и переместить ее в /dev/hda6 , потом использовать /dev/hda7 для каки-то других целей. Мы предположим, что у нас будет следующая строка в /etc/fstab (reiserfs это просто пример файловой системы, используемой на /dev/hda7 ):

И точно таким же образом, как с предыдущим примером:

Если все прошло хорошо, извлекаем /dev/hda7 (если нужно) и используйте dd чтобы копировать var/arch/sqsh в /dev/hda6 :

Теперь изменим строку в /etc/fstab для /dev/hda7 на:

Установим новую файловую систему и проверим, все ли прошло хорошо:

Не забудем стереть ненужный образ файловой системы:

Создание маленьких/встроенных систем

Сжатые файловые системы на дискетах/флэш/жестких дисках

Чтобы использовать SquashFS для создания Linux-систем на маленьких дисках, нужно сделать следующие обычные шаги для создания минимальных систем.

Проделайте следующие операции в соответствующих пунктах:

Когда создаеся ядро для вашей системы, убедитесь, что вы настраиваете поддержку SquashFS, чтобы оно могло устанавливать сжатые файловые системы.

Используйте mksquashfs для создания начального виртуального диска только-для-чтения и/или ветви и/или других файловых систем.

Не забудьте установить типа файловых систем для squashfs в /etc/fstab и/или начальных скриптах вашей системы для установления сжатых файловых систем.

Пример с дискетой. Предположим что у нас есть дерево системы дискеты в /home/user/floppylinux и мы хотим поместить корневую файловую систему на одну дискету, а /usr на другую. Что надо сделать:

Примечание 1: здесь можно видеть, как мы используем опцию -e чтобы исключить директорию /usr из образа корневой файловой системы.

Примечание 2: не забудьте указать squashfs в директории /etc/fstab вашего корневого диска или стартовых скриптах когда устанавливаете файловую систему /usr.

Вставляем корневой диск в накопитель (предполагается , что на ней есть, положим, компилятор, и, таким образом, файловая система существует на этой дискете, а корневая файловая система будет постоянно храниться под директорией /boot этой файловой системы):

Когда будет сделано, вытаскиваем корневую дискету, меняем дискеты на /usr диск и используем dd для передачи данных на usr :

Сжатые файловые системы на 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, которые помогли мне начать.

Бесконечная благодарность и уважение всем, кто развивает открытый для использования софт.

У меня есть установка Clonezilla на USB-накопителе, и я хотел бы внести некоторые изменения в операционную систему. В частности, я хотел бы вставить исполняемый скрипт в /usr/sbin , чтобы упростить запуск моей собственной команды резервного копирования, чтобы сделать резервные копии менее болезненными.

Основная файловая система находится под /live/filesystem.squashfs на разделе USB FAT-32.

Как смонтировать это чтение /запись на моей машине Linux, чтобы иметь возможность добавлять /удалять /изменять файлы? Я запускаю производную Ubuntu 12.04.

4 ответа

Как root, скопируйте filesystem.squashfs в какой-нибудь пустой каталог, например:

Распакуйте файл, а затем переместите его в другое место (так что у вас все еще есть его как резервная копия):

Перейдите в squashfs-root , добавьте /измените по своему вкусу, затем заново создайте filesystem.squashfs :

скопируйте вновь созданный filesystem.squashfs поверх существующего на вашем USB-накопителе, например:

затем перезагрузитесь и используйте свой LIVE USB.

Примечание: приведенные выше команды являются частью squashfs-tools .

Если ваша система поддерживает некоторую uion-файловую систему, например aufs или overlayfs , вам не нужно извлекать исходный файл squashfs.

Например, используется overlayfs (опция ядра для его включения): Вы можете подключить файл squashfs.file к /fm или в другом месте. Подготовьте записываемую файловую систему с двумя каталогами, например /to и /temp . подготовьте другой доступный для записи каталог /fin для объединенных результатов. Соедините их вместе как overlayfs с вашей системой ---

Теперь вы можете добавлять /изменять файлы в /fin . Как только все будет сделано, вы можете mksquashfs /fin в новый файл squashfs,

, затем очистите /отмонтируйте все остальные используемые каталоги, как и вы.

squashfs и некоторые unionfs обычно используются для live-cd .

здесь , я нашел другой ответ:

Использование overlayfs, как показано, является лучшим способом иметь псевдо-squashfs rw; Однако он должен работать на> 4.x (или ubuntu> 14.x trusty).

Альтернативное решение, когда вы сидите на старом live cd без каких-либо overlayfs /aufs /unionfs, должно использовать возможности squashfs'own

Читайте также: