0

私は、ext2パーティションを読み取ることができるWindows用のリーダープログラムを作成する任務を負っています。

私のテストでは、ext2にフォーマットしたドライブと、mkfsを使用して作成したファイル(Linuxでマウントされて正常に動作するファイル)を使用しています。

何らかの理由で、ドライブ(実際のスーパーブロック)からスーパーブロックを読み取ると、すべての正しいメタデータ(つまり、ブロックサイズ、iノード数など)を取得しますが、ファイルに対してまったく同じことを行うと、悪い結果が返されます(も意味ない)。

2つの間に違いはありますか?

\。\X:を使用してドライブを開き、mkfsを使用してファイルを作成します。

4

1 に答える 1

1

パーティション上のext2とファイル内に保存されたext2の間に違いはないはずです(実際には違いはありません。チェックしたばかりです)。ただし、IIRCの場合、ext2がベアディスクにインストールされている場合(たとえば/dev/sda、の代わりに/dev/sda1)、プライマリスーパーブロックのオフセットは1024ではなく2048になります。これは、MBRやその他のジャンクに対応するためです。(今のところスキミングのドキュメントでは見つかりませんが、これは私が遭遇したものとして頭に浮かびます。)ただし、ベアドライブにインストールするのは少し珍しいので、これがあなたの問題ではないかと思います。

私は数年前にいくつかのext2ユーティリティを作成し、それを手作業で書き始めた後、ヘッダー/ライブラリなどが付属するTed Ts'o(ext2ファイルシステム作成者)のe2fsprogsの使用に切り替えました。これらすべてをより柔軟で信頼できる方法で行うため。

0x438マジックナンバーのファイル/パーティションへのオフセットをチェックし0xEF53、それがない場合は、健全性チェックと同様に、スーパーブロック全体をプルする前に、ext2/3ファイルシステムではないと見なすこともできます。

おそらく役立つドキュメントがいくつかあります:http ://www.nongnu.org/ext2-doc/ext2.html

于 2011-03-08T15:33:51.067 に答える