Я пытаюсь получить доступ к суперблоку при открытии и чтении файловой системы 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));
Возможно, вам лучше использовать libext2fs, а не заголовки ядра. Он знает все структуры, он предназначен для использования в пользовательском пространстве и переносим на хосты не-GNU, а не на Linux.
Других решений пока нет …