Не должно быть никакой разницы между 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