3 votes

Créer un système de fichiers à partir de rien

Je dois 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

En gros, je dois créer un fichier image de 64 Mo rempli de zéros. Puis 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 en boucle et que je le formate en utilisant la commande 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 que le disque entier soit formaté en FAT32, j'ai juste besoin que ma partition primaire le soit.

Quelqu'un sait-il comment je peux formater une seule partition d'une image disque brute, et non l'image entière ? Merci de m'aider.

2voto

Schof Points 952

Une solution qui ne nécessite pas les privilèges de root est de créer un fichier avec la taille de la partition, appelé mkfs sur ce fichier, puis 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 de root, vous pouvez mettre en place un fichier dispositif de boucle qui vous donne accès à l'image en tant que dispositif. Comme vous voulez accéder à une partie seulement 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 de privilèges root et d'un redémarrage. Le module loop peut donner 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 ; elles doivent être séparées par des espaces et toute la chaîne d'options doit se trouver entre guillemets, par ex. 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

Exécuter losetup -d /dev/loop0 lorsque vous avez fini de travailler avec cette image.

1voto

Rod Smith Points 41849

Les fichiers image du système de fichiers ne sont normalement pas partitionnés, sauf s'il s'agit de sauvegardes de disques entiers ou s'ils sont utilisés avec des machines virtuelles (QEMU, etc.). Pour vos besoins, vous voudrez probablement 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 voulez ensuite écrire cette image sur une clé USB ou autre, vous pouvez l'écrire sur une partition :

sudo dd if=mountedImage.img of=/dev/sdc1

0voto

kpartx

sudo apt-get install kpartx
losetup -fs my.raw
sudo kpartx -a my.img
ls /dev/mapper

Sortie :

/dev/mapper/loop0
/dev/mapper/loop0p1

donde loop0p1 est la première partition, donc on peut le 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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X