J'ai besoin de créer un système de fichiers avec une seule partition à partir de rien (/dev/zero
).
J'ai essayé cette séquence de commandes :
dd if=/dev/zero of=mountedImage.img bs=512 count=131072
fdisk mountedImage.img
n
p
2048
131072
Fondamentalement, je dois créer un fichier image de 64 Mo rempli de zéros. Ensuite, j'utilise fdisk
pour ajouter une nouvelle partition pour le nouveau système de fichiers (qui devrait finalement être FAT32), en commençant au secteur 2048
et en utilisant tous les secteurs restants.
losetup /dev/loop1 mountedImage.img
mkfs -t vfat /dev/loop1
Mais ici, je rencontre des problèmes. Si je configure une loop
appareil et formatez-le en utilisant mkfs -t vfat
, la table de partition est écrasée et le système de fichiers (FAT32) est placé sur le disque. Je n'ai pas besoin d'un disque entier formaté avec FAT32, j'ai juste besoin que ma partition principale le soit.
Est-ce que quelqu'un sait comment formater une seule partition d'image disque brute, pas une image entière ?
Réponse acceptée :
Si sous Linux, lors du chargement de la loop
module, assurez-vous de passer un max_part
option au module afin que les périphériques de boucle soient partitionnables.
Vérifiez la valeur actuelle :
cat /sys/module/loop/parameters/max_part
Si c'est 0 :
modprobe -r loop # unload the module
modprobe loop max_part=31
Pour rendre ce paramètre persistant, ajoutez la ligne suivante à /etc/modprobe.conf
ou dans un fichier dans /etc/modprobe.d
si ce répertoire existe sur votre système :
options loop max_part=31
Si modprobe -r loop
échoue car "Module loop is builtin", vous devrez ajouter loop.max_part=31
à la ligne de commande de votre noyau et redémarrez. Si votre chargeur de démarrage est Grub2, ajoutez-y la valeur de GRUB_CMDLINE_LINUX
dans etc/default/grub
.
Maintenant, vous pouvez créer un périphérique de boucle partitionnable :
truncate -s64M file # no need to fill it with zeros, just make it sparse
fdisk file # create partitions
losetup /dev/loop0 file
mkfs.vfat /dev/loop0p1 # for the first partition.
mount /dev/loop0p1 /mnt/
(notez que vous avez besoin d'une version relativement récente de Linux).