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, j'ai besoin de créer un fichier image de 64 Mo rempli de zéros. Ensuite, j'utilise fdisk
pour créer une nouvelle partition pour le nouveau système de fichiers, en commençant par le secteur 2048
et en utilisant tous les secteurs restants. Mais maintenant, je rencontre des problèmes. Si je configure un périphérique de boucle et le formate en utilisant mkfs -t vfat
, la table de partition est écrasée et le système de fichiers est placé sur le disque. Je n'ai pas besoin d'un disque entier formaté en FAT32, j'ai juste besoin que ma partition principale le soit.
Quelqu'un sait-il comment formater une seule partition de l'image de disque brute, pas l'image entière? Veuillez aider.
Une solution qui ne nécessite pas de privilèges root est de créer un fichier avec la taille de la partition, d'appeler mkfs
sur ce fichier, puis de copier le fichier en place.
truncate -s 64512k part1.vfat
/sbin/mkfs.vfat part1.vfat
dd if=part1.vfat of=mountedImage.img bs=1k skip=2048
Alternativement, avec les privilèges root, vous pouvez configurer un périphérique de boucle qui vous donne accès à l'image en tant que périphérique. Puisque vous ne souhaitez accéder qu'à une partie de l'image, vous devrez l'indiquer explicitement.
Sudo losetup -o 2048k --sizelimit 64512k đev/loop0 mountedImage.img
Sudo mkfs.vfat /dev/loop0
Sudo losetup -d /dev/loop0
Pour travailler avec des outils plus confortables, vous avez besoin des privilèges root et d'un redémarrage. Le module de boucle peut fournir un accès aux partitions, mais cela est désactivé par défaut. Pour activer cet accès, modifiez /etc/default/grub
et changez la ligne GRUB_CMDLINE_LINUX=""
à
GRUB_CMDLINE_LINUX="loop.max_part=15"
S'il y avait déjà d'autres options, laissez-les, bien sûr; ils doivent être séparés par des espaces et toute la chaîne d'options doit être entre guillemets doubles, par exemple GRUB_CMDLINE_LINUX="option=value anotheroption loop.max_part=15"
.
Maintenant, après avoir partitionné l'image disque, exécutez
Sudo losetup /dev/loop0 mountedImage.img
Sudo mkfs.vfat /dev/loop0p1
Courir losetup -d /dev/loop0
lorsque vous avez fini de travailler avec cette image.
Les fichiers d'image du système de fichiers ne sont normalement pas partitionnés sauf s'ils sont des sauvegardes sur tout le disque ou s'ils sont utilisés avec des machines virtuelles (QEMU, etc.). Pour vos besoins, vous souhaiterez probablement simplement créer le système de fichiers directement sur le fichier image. Vous pouvez ensuite le monter:
Sudo mkdosfs mountedImage.img
Sudo mount -o loop mountedImage.img /mnt
Si vous souhaitez ensuite écrire cette image sur une clé USB ou similaire, vous pouvez l'écrire sur une partition:
Sudo dd if=mountedImage.img of=/dev/sdc1
kpartx
Sudo apt-get install kpartx
losetup -fs my.raw
Sudo kpartx -a my.img
ls /dev/mapper
Production:
/dev/mapper/loop0
/dev/mapper/loop0p1
où loop0p1
est la première partition, nous pouvons donc faire:
mkdir -p d
Sudo mount /dev/mapper/loop0p1 d
Avantage de cette méthode: fonctionne sur Ubuntu 14.04 sans redémarrage.
option losetup 2.21 -P
losetup -P -f --show my.img
Crée un /dev/loopXpY
par partition.
Avantage: exécutable préinstallé dans de nombreuses distributions (paquet util-linux).
Inconvénient: option assez récente, non présente dans Ubuntu 14.04.