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