GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer un fichier image de partition formatée à partir de zéro ?

Si sous Linux, lors du chargement du 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 vers un fichier en /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 en 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).


losetup /dev/loop0 file -o 1048576 --sizelimit limit

Le décalage spécifié doit être en octets (1048576 =2048 secteurs * 512 octets par secteur).

mount -o loop,offset=1048576,sizelimit=limit

Pour plus d'informations, voir losetup et mount.


Les procédures suivantes permettent de monter les partitions de l'image pour les modifier.

perdre l'option de configuration 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, absente d'Ubuntu 14.04.

losetup -P automatisation

Utilisation :

$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2

$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there

$ sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                                                      DIO
/dev/loop1         0      0         0  0 /full/path/to/my.img

$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0

Origine :

los() (
  img="$1"
  dev="$(sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    echo "$dst"
    sudo mkdir -p "$dst"
    sudo mount "$part" "$dst"
  done
)
losd() (
  dev="/dev/loop$1"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    sudo umount "$dst"
  done
  sudo losetup -d "$dev"
)

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

loop0p1 est la première partition, nous pouvons donc :

mkdir -p d
sudo mount /dev/mapper/loop0p1 d

Avantage de cette méthode :fonctionne sur Ubuntu 14.04 sans redémarrage.


Linux
  1. Comment créer un fichier d'échange sous Linux

  2. Linux - Comment créer un fichier image de partition formaté à partir de zéro ?

  3. Comment créer une VM à partir de zéro avec Virsh ?

  4. Comment créer un fichier .img à partir de .iso sur Ubuntu ?

  5. Comment créer une image personnalisée à partir d'un conteneur Docker

Comment créer un nouveau système de fichiers Ext4 (partition) sous Linux

Comment créer un fichier sous Linux

Comment créer un fichier Tar Gz

Créer un fichier de sauvegarde d'image ISO à partir d'un dossier dans Ubuntu 17.10

Comment créer des répertoires à partir d'un fichier texte sous Linux

Comment créer une image Docker à partir d'un conteneur en cours d'exécution