ext2 "файлы изображений" против реальных устройств ext2

Мне поручено написать программу для чтения окон для Windows, которая может читать раздел ext2.

Для тестирования я использую диск, отформатированный в ext2, и файл, созданный с помощью mkfs (файл, который монтируется и хорошо работает в linux)

По какой-то причине, когда я читаю суперблок с диска (настоящий), я получаю все нужные метаданные (например, размер блока, число инодов и т. Д.), Но выполнение точно такого же действия с файлом возвращает плохие результаты (что приводит к не имеет смысла).

есть ли разница между 2?

Я открываю диск с помощью \.\X: и создаю файл с помощью mkfs.

1 ответ

Решение

Там не должно быть никакой разницы между ext2 на разделе и хранится в файле (и на самом деле нет; я только что проверил); однако в IIRC смещение основного суперблока составляет 2048 вместо 1024, если на чистом диске установлено ext2 (например, /dev/sda вместо /dev/sda1). Это для размещения MBR и другого барахла. (Я не могу найти это в документах из-за скимминга только сейчас, но это запомнилось мне как то, с чем я столкнулся.) Тем не менее, это несколько необычно для установки на чистый диск, поэтому я сомневаюсь, что это ваша проблема.

Я написал несколько утилит для ext2 несколько лет назад, и после того, как начал писать их вручную, я переключился на использование e2fsprogs Теда Цо (создателя файловой системы ext2), который поставляется с заголовками / библиотеками / и т.д. за все это более гибким и надежным способом.

Вы также можете проверить по смещению 0x438 в файл / раздел для магического числа 0xEF53 и считайте, что это не файловая система ext2/3, если ее там нет, прежде чем добавлять весь суперблок, просто как проверку работоспособности.

Вот некоторые документы, которые, вероятно, будут полезны: http://www.nongnu.org/ext2-doc/ext2.html

Другие вопросы по тегам