Pregunta

¿Cuál es la forma más fácil de acceder a un sistema de archivos ext3 a nivel de bloque? No me importa para los archivos, o bytes primas, sólo tengo que leer el FS a una cuadra a la vez. ¿Hay una manera simple de hacer esto (en C)? O tal vez una aplicación sencilla cuya fuente podría mirar en busca de inspiración? No he encontrado tutoriales utilizables en la red, y yo soy un poco de miedo a sumergirse en la fuente del kernel para averiguar cómo hacerlo.

¿Fue útil?

Solución

Sí, consulte e2fsprogs . Esto proporciona herramientas que puede utilizar para hacer cualquier cosa (!) Con los sistemas de archivos ext2, ext3, ext4 y. También contiene una interfaz de biblioteca para que pueda hacer otra cosa.

Vea los debugfs incluidos, podría ser suficiente para que usted comience. De lo contrario, echa un vistazo a los encabezados y escribir algo de código.

Otros consejos

Si quieres una aplicación sencilla, te sugiero que puede echar un vistazo a " dd " utilidad. Me viene como parte de GNU Utilidad Core . Su fuente está disponible para su descarga. Echar un vistazo a su página principal, aquí .
Si usted desea alcanzar misma de un código en C, a continuación, por favor refiérase a la siguiente código. Espero que esto te ayude. :)

#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, &sector_size);
        printf("%d\n", sector_size);
        lseek(fd, n*sector_size, SEEK_SET);

        buf = malloc(sector_size);
        read(fd, buf, sector_size);

        return 0;
}

Los dispositivos de disco y particiones dentro de ellos, se comportan igual que los archivos regulares que se pueden leer a partir de (a) y escribir, por ejemplo:.

head -c 2048 /dev/sda1 > first_2048_bytes

Tendrá que ser root, por supuesto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top