質問
ブロック・レベルでext3ファイルシステムにアクセスするための最も簡単な方法は何ですか?私はちょうど一度FS一つのブロックを読む必要があり、ファイル、または生のバイトのために気にしません。 (Cで)これを実行するための簡単な方法はありますか?それとも、そのソースはシンプルなアプリは、私はインスピレーションを得るために見ることができますか?私は、ネットには、使用可能なチュートリアルを発見した、と私はそれを行う方法を見つけるために、カーネルソースに飛び込むには少し怖います。
解決
はい、のe2fsprogs のを参照してください。これは、あなたが何かをするために使用できる(!)のext2、ext3の、及びext4のファイルシステムとツールを提供しています。あなたが何かを行うことができますので、それはまた、ライブラリ・インタフェースが含まれています。
含まdebugfsのを参照してください、あなたが開始するために、それは十分かもしれません。それ以外の場合は、ヘッダをチェックアウトし、いくつかのコードを記述します。
他のヒント
私はあなたが DD」を見てみることができます示唆しますの」ユーティリティ。私は GNUコアユーティリティでの一部として提供されます。そのソースがダウンロードできます。ここを、そのホーム・ページを見てみましょう。
あなたがCコードから同じ達成したい場合は、次のコードを参照してください。これはあなたのお役に立てば幸いです。 :)
#include <stdio.h>
#include <linux/fs.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define SECTOR_NO 10 /*read 10th sector*/
int main()
{
int sector_size;
char *buf;
int n = SECTOR_NO;
int fd = open("/dev/sda1", O_RDONLY|O_NONBLOCK);
ioctl(fd, BLKSSZGET, §or_size);
printf("%d\n", sector_size);
lseek(fd, n*sector_size, SEEK_SET);
buf = malloc(sector_size);
read(fd, buf, sector_size);
return 0;
}
ディスク・デバイス、およびそれらの中のパーティション、ちょうどあなたが読んでから(とへの書き込み)することができ、通常のファイルと同じように動作し、例えば:ます。
head -c 2048 /dev/sda1 > first_2048_bytes
あなたはもちろんのrootになる必要があります。