Skip to content

Образы файловых систем

Образ файловой системы — это файл, содержащий целую файловую систему: rootfs из обновления маршрутизатора, побайтово скопированную карту SD, образ устройства, которое вы изучаете. Модуль Linux Filesystem Images открывает такой файл так же, как Peach Commander открывает архив: наведите курсор, нажмите Enter — и панель окажется внутри файловой системы. Дальше просмотрщик, поиск и копирование работают в точности как в папке.

В образ никогда ничего не записывается. Модуль умеет только читать.

Сначала включите его

Модуль поставляется выключенным. Откройте Настройки ▸ Модули, найдите Linux Filesystem Images и включите его.

По умолчанию он выключен из-за того, как он находит образы. У прошивок редко бывает аккуратное имя — нужный файл называется firmware.bin, rootfs.img или просто dump по меньшей мере так же часто, как .squashfs, — поэтому, когда расширение ничего не говорит, модуль смотрит на первые байты. Именно это и нужно, если вы изучаете образы устройств, и напрасная работа, если нет. Включение — это способ сказать, какой из двух случаев ваш.

Файл, оказавшийся не образом, после этого единственного взгляда остаётся нетронутым и открывается так, как открывался всегда.

Что он умеет открывать

Формат Где вы его встретите
SquashFS Rootfs почти в каждой прошивке маршрутизаторов, камер и приставок
ext2, ext3, ext4 Основной раздел большинства встраиваемых устройств на Linux
Btrfs Тома NAS и более новые системы Linux, включая снимки
JFFS2, UBIFS Сырая флеш-память в старом и нынешнем встраиваемом оборудовании
cramfs, initramfs Загрузочные файловые системы и долгоживущие старые устройства
FAT12, FAT16, FAT32 Карты SD, USB-накопители и раздел EFI любого современного ПК
exFAT Карты SD и накопители свыше 32 ГБ
NTFS Тома Windows, в том числе со сжатыми файлами

Образы дисков с несколькими разделами

Образ, скопированный с целого устройства, обычно содержит таблицу разделов, а не одну файловую систему. Такой образ открывается как одна папка на раздел — 1-rootfs, 2-esp — и вы заходите в ту, которая нужна. Читаются и MBR, и GPT, а там, где таблица хранит имена разделов, используются именно они.

Раздел, который модуль прочитать не может, всё равно появляется — как пустая папка, названная по своему типу. Если у устройства три раздела, вы должны видеть, что их три.

Прошивка без таблицы разделов

У файла прошивки, снятого с маршрутизатора или камеры, обычно вообще нет таблицы разделов. Это заголовок производителя, загрузчик, ядро и корневая файловая система, записанные друг за другом по смещениям, которые нигде не зафиксированы. Такой файл открывается одной записью на каждую часть, названной по смещению, с которого она начинается: 0x00230044-squashfs — файловая система, в которую можно войти, а 0x00030040-kernel.uimage — файл, который можно скопировать наружу.

Панель внутри файла прошивки маршрутизатора: заголовок производителя, ядро U-Boot и корневая файловая система SquashFS, каждый назван по смещению, с которого начинается

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

То же относится ко всему, что лежит вне разделов размеченного образа. Raspberry Pi держит свой загрузчик в мегабайтах перед разделом 1, а U-Boot на большинстве плат ARM занимает фиксированное смещение в том же нераспределённом пространстве. Эти участки перечисляются рядом с разделами, чтобы их можно было увидеть и скопировать наружу.

Записать структуру

Команды ▸ Анализ структуры образа сохраняет результат текстовым файлом рядом с образом и ставит на него курсор: каждая область со своим смещением, размером и тем, чем она оказалась, а также таблица разделов, если она у образа есть. Именно эта таблица обычно и нужна разбору или заявке, а восстанавливать её, обходя панель и переписывая числа вручную, — утомительная работа.

Отчёт показывает и то, что панель опускает, — например, небольшие промежутки выравнивания между разделами — и называет плату, для которой собрано ядро U-Boot, если образ это фиксирует.

Работа внутри образа

Всё привычное остаётся в силе. F3 показывает файл, F5 копирует файлы наружу в настоящую папку, а Поиск файлов ищет по содержимому образа. Выходят из него так же, как из архива.

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

Когда образ не открывается

Модуль говорит почему, вместо того чтобы сообщать о повреждённом файле, потому что эти два случая ведут вас в разные стороны:

  • Том Btrfs с RAID0, RAID10, RAID5 или RAID6 либо распределённый по нескольким устройствам. Данные разбросаны по дискам, и большей их части нет в том файле, который у вас есть.
  • Сырой дамп NAND, всё ещё содержащий служебную область. С образом всё в порядке; он скопирован вместе с байтами коррекции ошибок. Скопируйте его заново командой nanddump --omitoob.
  • Зашифрованный том ext4 или NTFS, который без ключей прочитать нельзя.
  • Файловая система ext, отключённая нечисто, всё равно открывается, но с помеченной записью вверху корня, предупреждающей, что содержимое может быть устаревшим. Файловую систему копировали во время работы, а самые свежие изменения лежат в журнале, который этот модуль не воспроизводит. Запустите e2fsck на копии, если подробности важны.

Примечания

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