Образы файловых систем
Образ файловой системы — это файл, содержащий целую файловую систему: 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 — файл, который можно скопировать наружу.

Части находятся так: в файле ищутся сами файловые системы, и каждая находка открывается, чтобы проверить, действительно ли она там есть. Случайно совпавший байтовый образец стоит мгновения и отбрасывается, а не превращается в выдуманную запись; файл же, в котором файловой системы не нашлось, по-прежнему отклоняется и открывается так, как открывался всегда.
То же относится ко всему, что лежит вне разделов размеченного образа. Raspberry Pi держит свой загрузчик в мегабайтах перед разделом 1, а U-Boot на большинстве плат ARM занимает фиксированное смещение в том же нераспределённом пространстве. Эти участки перечисляются рядом с разделами, чтобы их можно было увидеть и скопировать наружу.
Записать структуру¶
Команды ▸ Анализ структуры образа сохраняет результат текстовым файлом рядом с образом и ставит на него курсор: каждая область со своим смещением, размером и тем, чем она оказалась, а также таблица разделов, если она у образа есть. Именно эта таблица обычно и нужна разбору или заявке, а восстанавливать её, обходя панель и переписывая числа вручную, — утомительная работа.
Отчёт показывает и то, что панель опускает, — например, небольшие промежутки выравнивания между разделами — и называет плату, для которой собрано ядро U-Boot, если образ это фиксирует.
Работа внутри образа¶
Всё привычное остаётся в силе. F3 показывает файл, F5 копирует файлы наружу в настоящую папку, а Поиск файлов ищет по содержимому образа. Выходят из него так же, как из архива.
Символические ссылки показываются со своим именем, а копирование такой наружу даёт небольшой текстовый файл с целью ссылки вместо настоящей ссылки — образу нельзя позволить поставить ссылку, указывающую куда угодно на вашем собственном диске.
Когда образ не открывается¶
Модуль говорит почему, вместо того чтобы сообщать о повреждённом файле, потому что эти два случая ведут вас в разные стороны:
- Том Btrfs с RAID0, RAID10, RAID5 или RAID6 либо распределённый по нескольким устройствам. Данные разбросаны по дискам, и большей их части нет в том файле, который у вас есть.
- Сырой дамп NAND, всё ещё содержащий служебную область. С образом всё в порядке; он скопирован вместе с байтами коррекции ошибок. Скопируйте его заново командой
nanddump --omitoob. - Зашифрованный том ext4 или NTFS, который без ключей прочитать нельзя.
- Файловая система ext, отключённая нечисто, всё равно открывается, но с помеченной записью вверху корня, предупреждающей, что содержимое может быть устаревшим. Файловую систему копировали во время работы, а самые свежие изменения лежат в журнале, который этот модуль не воспроизводит. Запустите
e2fsckна копии, если подробности важны.
Примечания¶
- Образ читается один раз и запоминается, поэтому повторный вход в него мгновенный.
- Очень большие образы читаются по мере надобности, а не загружаются целиком; список ограничен двумя миллионами записей.
- Образ просматривается на предмет встроенных файловых систем только тогда, когда у него нет ни таблицы разделов, ни файловой системы в начале, так что обычный образ открывается ровно так же быстро, как и раньше.
- Плагин добавляет одну команду меню и никаких собственных настроек, кроме переключателя, который его включает.