ext2 "файлы изображений" против реальных устройств ext2 - PullRequest
0 голосов
/ 08 марта 2011

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

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

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

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

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

1 Ответ

1 голос
/ 08 марта 2011

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

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

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

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

...