Доступ к суперблоку в vdi, ext2

Я пытаюсь получить доступ к суперблоку при открытии и чтении файловой системы ext2 из файла vdi. Я хочу использовать struct ext2_super_block, которая существует в файле ext2.h (см. Строку 415 http://lxr.free-electrons.com/source/fs/ext2/ext2.h). Я хотел бы просто #include <ext2.h> но так как моя текущая операционная система Unix - ext3/ext4, файл заголовка не находится в моей системе, равно как и файлы, которые ext2.h должен включать.

Как я могу включить этот файл получить эту структуру? Должен ли я создавать его (структуру для хранения суперблока после чтения) самостоятельно? Если я построю это самостоятельно, как будет различаться чтение?

Вот что у меня есть для системных вызовов, чтобы завершить это (очевидно, не работают в данный момент):

fd = open (argv[1], O_RDONLY);
    .......check for errors in open
lseek(fd, OFFSET, SEEK_SET); //to skip to superblock
read (fd, &mySB, sizeof(struct ext2_superblock));

1 ответ

Возможно, вам лучше использовать libext2fs, а не заголовки ядра. Он знает все структуры, он предназначен для использования в пользовательском пространстве и переносим на хосты не-GNU, а не на Linux.

Другие вопросы по тегам