J'ai créé un img
fichier via la commande suivante:
dd if=/dev/zero bs=2M count=200 > binary.img
C'est juste un fichier avec des zéros, mais je peux l'utiliser fdisk
et créer une table de partition:
# fdisk binary.img
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x51707f21.
Command (m for help): p
Disk binary.img: 400 MiB, 419430400 bytes, 819200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x51707f21
et, disons, une partition:
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-819199, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-819199, default 819199):
Created a new partition 1 of type 'Linux' and of size 399 MiB.
Command (m for help): w
The partition table has been altered.
Syncing disks.
Lorsque je vérifie la table des partitions, j'obtiens le résultat suivant:
Command (m for help): p
Disk binary.img: 400 MiB, 419430400 bytes, 819200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7f3a8a6a
Device Boot Start End Sectors Size Id Type
binary.img1 2048 819199 817152 399M 83 Linux
La partition existe donc. Lorsque j'essaie de formater cette partition via gparted, j'obtiens l'erreur suivante:
Je ne sais pas pourquoi il cherche binary.img1
, et je n'ai aucune idée comment formater la partition à partir de la commande en direct.
Est-ce que quelqu'un sait comment le formater en utilisant le système de fichiers ext4?
filesystems
partition
disk-image
Mikhail Morfikov
la source
la source
Couldn't find valid filesystem superblock.
. Voici la photo: i.imgur.com/dl7XAC4.png. Est-ce une sorte de bogue?Réponses:
Vous pouvez accéder à l'image disque et à ses partitions individuelles via la fonction de bouclage. Vous avez déjà découvert que certains utilitaires de disque fonctionneront (raisonnablement) avec bonheur sur les images de disque. Cependant,
mkfs
n'en fait pas partie (mais étrangement l'mount
est).Voici la sortie de
fdisk -lu binary.img
:Pour accéder à la partition que vous avez créée, vous avez deux choix
La route explicite
La sortie
/dev/loop0
est le nom du périphérique de boucle qui a été alloué. Le--offset
paramètre est juste le décalage de la partition (Start
) multiplié par la taille du secteur (512
). Alors que--sizelimit
c'est la taille de la partition, vous pouvez la calculer de la manière suivante: End-Start + 1, qui est 819199-2048 + 1 = 817152, et ce nombre doit également être multiplié par la taille du secteur.Vous pouvez ensuite utiliser
/dev/loop0
comme référence à la partition:La route implicite
La sortie
/dev/loop0
est le nom du périphérique de boucle principal qui a été alloué. De plus, l'--partscan
option indique au noyau de rechercher dans le périphérique une table de partition et d'attribuer automatiquement des périphériques de boucle subsidiaire. Dans votre cas, avec la seule partition que vous obtenez également/dev/loop0p1
, que vous pouvez ensuite utiliser comme référence à la partition:la source
fdisk
sortie.Il y a une autre façon de le faire en général, utilisez
kpartx
( pas lié à kde)et maintenant vous devriez avoir tous les dispositifs de séparation définis sous
/dev/mapper
comme loop0p1 , loop0p2 , ...puis
En option, lorsque vous avez terminé, vous pouvez également exécuter
se débarrasser de la loop0p? deivce
la source
(… Et plus tard pour avoir été
binary.img2
enterré dans le commentaire.)En effet, les outils s'attendent à ce que les noms de fichiers suivent un modèle spécifique. Ce modèle est celui utilisé par les fichiers de périphérique pour les disques et volumes de disque réels sur votre système, à savoir:
sda
(ou autre chose). C'est cefdisk
à quoi on s'attend.sda1
,sda2
,sda3
, et ainsi de suite. C'est ce que des outils tels quegparted
s'attendent à utiliser lorsqu'ils disentmkfs
de faire des choses sur des volumes de disque individuels .Bien sûr, les fichiers ordinaires ne se chevauchent pas de la même manière que les fichiers des périphériques de disque. Les discussions portant sur le système de fichiers de réalimentation que vous avez vu sont à prendre un seul fichier d'image disque entier et en utilisant réalimentation pour créer les
1
,2
,3
et ainsi de suite les fichiers qui reflètent les tranches individuelles à l' intérieur, une fois la mise en page de partition souhaitée a été écrite à la table de partition.la source
Bien que ce sujet ne soit pas directement lié, il mentionne beaucoup d'informations identiques et connexes.
Wiki Debian | Raspberry Pi et qemu-user-static
Si vous ne pouvez pas utiliser
apt
pour installer certaines des commandes mentionnées dans cet article, essayez d'utiliserapt-cache search [package_name]
. Cela peut ne produire aucun résultat si la commande provient d'un package d'un nom différent.Par exemple,
losetup
pouvait auparavant être installé enlosetup
utilisantapt install losetup
, mais il fait maintenant partie duutil-linux
référentiel d'Ubuntu. La façon dont vous découvrez quel package agit comme conteneur pour un autre package, vous devez utiliser la recherche du référentiel en ligne pour votre distribution Linux. Ou, si vous devez l'installer à partir d'une autre source, utilisez un moteur de recherche Web.Quelques packages à découvrir ...
util-linux genisoimage dosfstools squashfs-tools fsarchiver xfsprogs reiserfsprogs reiser4progs jfsutils ntfsprogs btrfs-tools
Chaque distribution Linux possède également ses propres pages de manuel en ligne. Parfois, il est plus facile d'utiliser les pages de manuel qu'un didacticiel. Les pages de manuel vous indiqueront également toutes les options et paramètres de commande. Un tutoriel ne se concentrera généralement que sur ceux utilisés.
la source
Exécution minimale
sfdisk
+mke2fs
exemple sanssudo
Dans cet exemple, nous allons créer, sans
sudo
ousetsuid
, un fichier image contenant deux partitions ext2, chacune remplie de fichiers provenant d'un répertoire hôte.Nous utiliserons ensuite
sudo losetup
simplement pour monter les partitions pour tester que le noyau Linux peut réellement les lire comme expliqué sur: /programming/1419489/how-to-mount-one-partition-from-an-image -file-that-contains-multiple-partitions / 39675265 # 39675265Pour plus de détails, voir:
sfdisk
: traite de la table de partition: /superuser/332252/how-to-create-and-format-a-partition-using-a-bash-script/1132834#1132834mke2fs
: traite du formatage EXT des partitions: /superuser/605196/how-to-create-ext2-image-without-superuser-rights/1366762#1366762L'exemple:
Testé sur Ubuntu 18.04. GitHub en amont .
Aide à envelopper un fichier de système de fichiers brut existant dans une image
Extrait de ce qui précède, les éléments suivants peuvent être utiles:
GitHub en amont .
la source