Question

Quelle est la meilleure façon d'accéder à un système de fichiers ext3 au niveau du bloc? Je ne se soucient pas pour les fichiers, ou octets bruts, je viens de lire une FS bloc à la fois. Est-il un moyen simple de le faire (en C)? Ou peut-être une application simple dont la source je pourrais regarder dans l'inspiration? J'ai trouvé aucun des tutoriels utilisables sur le net, et je suis un peu peur de plonger dans la source du noyau pour savoir comment le faire.

Était-ce utile?

La solution

Oui, voir e2fsprogs . Cela fournit des outils que vous pouvez utiliser pour faire quoi que ce soit (!) Avec ext2, ext3, ext4 et systèmes de fichiers. Il contient également une interface de bibliothèque afin que vous puissiez faire quoi que ce soit d'autre.

Voir les debugfs inclus, il pourrait être suffisant pour que vous puissiez commencer. Dans le cas contraire, consultez les en-têtes et d'écrire un code.

Autres conseils

Si vous voulez une application simple alors je suggère que vous pouvez jeter un oeil à « dd » utilitaire. Je fait partie d' GNU noyau utilitaire . Sa source est disponible en téléchargement. Jetez un oeil à la page d'accueil, .
Si vous voulez réaliser à partir d'un même code C, alors s'il vous plaît se référer au code suivant. Espérons que cela vous aide. :)

#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;
}

périphériques de disques et partitions en leur sein, se comportent comme des fichiers réguliers que vous pouvez lire (et écrire à), par exemple:.

head -c 2048 /dev/sda1 > first_2048_bytes

Vous devez être root bien sûr.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top