2011-06-09 15 views
6

He abierto el superbloque y el descriptor de grupo en un sistema de archivos EXT2, pero no sé cómo leer, por ejemplo, el directorio raíz o los archivos en él ...¿Cómo puedo leer y atravesar inodos?

aquí está algo de lo que me dieron

fd=open("/dev/sdb2", O_RDONLY); 
lseek(fd, SuperSize, SEEK_SET); 
read(fd, &super_block, SuperSize); 
lseek(fd, 4096, SEEK_SET); 
read(fd, &groupDesc, DescriptSize); 

pero no parece funcionar ...

lseek(fd, super_block.s_log_block_size*groupDesc.bg_inode_table, SEEK_SET); 
lseek(fd, InodeSize*(EXT2_ROOT_INO-1), SEEK_CUR); 
read(fd, &root, InodeSize); 
+0

¿Por qué está leyendo la partición sin procesar? –

+0

Es una tarea, pero también me gustaría saber cómo funciona –

+1

¿Qué quiere decir con "does not work"? ¿Enciende tu computadora o molesta a tu gato? – RedX

Respuesta

2

no estoy totalmente claro lo que estás pidiendo, pero aquí va la siguiente parte:

Para leer los contenidos del directorio, básicamente deberá mirar dentro de su bloque de punteros, mirar los bloques correspondientes en el disco especificado por los punteros, y leer los contenidos encontrados allí para obtener descripciones de los archivos en el directorio .

Es una sugerencia de alto nivel, pero el resto realmente se reduce a desordenar con los detalles de las propias estructuras del sistema.

yo recomiendo mirar el capítulo 4 del presente: http://www.nongnu.org/ext2-doc/ext2.html

y también asegurarse de que está claro en las estructuras específicas de que se trate en su caso, que deben ser proporcionados por usted en algún lugar de la asignación ..

+0

Terminé usando ese sitio web muchísimo, pero no, mi profesor carece de todo lo que nos brindó ... ¡incluyendo la enseñanza! –

1

El Descriptor de grupo de bloques es todo lo que necesita para recorrer un sistema de archivos ext. El superbloque le proporciona información general sobre el sistema de archivos, así como la ubicación del descriptor de grupo de bloques (BGD). Una vez dentro del BGD, tiene información sobre cada grupo de bloques dentro del sistema de archivos.

Para buscar el directorio raíz, entonces debe buscar en el grupo de bloques FIRST e inspeccionar el segundo inodo; también conocido como inodo número 2. Esto se puede alcanzar desde la ubicación del primer inodo, + sizeof (inode). A su vez, la ubicación del primer inodo se puede encontrar dentro de la entrada BGD para el primer grupo de bloques.

Avíseme si necesita más información.

Cuestiones relacionadas