c - Как найти индекс каталога в виртуальном образе ext2 (.img) по абсолютному пути?

В c, как мне найти каталог на виртуальном диске? Я могу легко повторить абсолютный путь и настроить его только на имя каталога, который я ищу (т.е. превратить /x/y/z в просто z). Я знаю, что корень - это inode 2, и я знаю, как добраться до некоторых частей файловой системы (суперблок, дескриптор блока, таблица inode, растровое изображение bg_block/inode), но я понятия не имею, как просмотреть все данные в образе. .

Это изображение имеет только одну группу блоков, чего бы это ни стоило. Размер индексного дескриптора и размер блока устанавливаются в собственные предопределенные переменные в заголовке (EXT2_BLOCK_SIZE и s_inode_size в суперблоке).


person Jeffrey    schedule 04.12.2015    source источник
comment
Вы можете использовать guestfs_lstatns из libguestfs. Или вы хотели что-то пониже?   -  person Mark Plotnick    schedule 05.12.2015
comment
Вы можете смонтировать файловую систему, а затем выполнить stat для файла, чтобы найти его индексный дескриптор, но я считаю, что это не то, чего вы хотите.   -  person fuz    schedule 05.12.2015


Ответы (1)


Вы должны реализовать алгоритм namei для файловой системы ext[234], чтобы добраться до нужного места. Просто следуйте исходному коду ядра для реализации файловой системы ext[234] и найдите подпрограмму namei.

person Luis Colorado    schedule 07.12.2015