Je teste du code de pilote de système de fichiers et j'aimerais le faire en dehors du noyau. La méthode la plus simple et la plus sûre pour le faire est depuis l'espace utilisateur. J'ai donc créé un fichier de longueur variable
dd if=/dev/zero of=testfs bs=10M count=50
Ensuite, j'ai installé un schéma de partition MBR en utilisant fdisk
fdisk testfs
Je peux configurer un périphérique en boucle pour accéder à mon fichier en mode émulé par blocs :
$ losetup /dev/loop0 testfs
À ce stade, je peux voir ce nouveau périphérique en bloc émulé dans la liste des périphériques :
NOM MAJ:MIN RM TAILLE RO TYPE POINT DE MONTAGE
sda 8:0 0 50G 0 disque
sda1 8:1 0 46G 0 part /
sda2 8:2 0 1K 0 part
sda5 8:5 0 4G 0 part [SWAP]
sr0 11:0 1 55.2M 0 rom
loop0 7:0 0 50M 0 loop
Et ce périphérique a la table de partitions suivante
$ fdisk -l /dev/loop0
Disque /dev/loop0: 52 Mo, 52428800 octets
96 têtes, 25 secteurs/piste, 42 cylindres, total 102400 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique/physique) : 512 octets / 512 octets
Taille d'E/S (minimale/optimale) : 512 octets / 512 octets
Identifiant de disque : 0xe7d5af9a
Device Boot Start End Blocks Id System
/dev/loop0p1 * 2048 102399 50176 7 HPFS/NTFS/exFAT
Cependant, pour créer un système de fichiers, j'ai besoin de monter la partition, pas le "disque". Le système en boucle ne monte-t-il pas automatiquement les partitions du périphérique, de manière similaire aux autres périphériques en bloc ? J'ai pu créer le système de fichiers en montant le fichier à travers la boucle à un décalage
$ losetup -o $((2048*512)) /dev/loop0 testfs
Mais cette solution est moins qu'idéale car le comportement est légèrement différent des véritables périphériques en bloc. Existe-t-il un moyen de "automonter" les partitions lorsqu'on passe par un périphérique en boucle ?