Wie können Partitionierungstools die von kpartx erstellten Geräte anzeigen?

1426
Harry

Ich habe eine ddDisk-Image-Datei bei mir.

Ich kann ein Tool verwenden kpartx, um ein Device-Mapper-Gerät aus dieser Disk-Image-Datei zu erstellen.

Partitionierungsprogramme mögen gpartedund fdisklisten mein zugeordnetes Gerät nicht auf!

Gibt es eine Möglichkeit, gpartedeine Liste (oder ein gleichwertiges Programm - Grafik oder Konsole) meines zugeordneten Geräts und seiner zugehörigen Partitionen sowie detaillierte Informationen zu diesen Partitionen zu erstellen?

PS: Ist dies der Fall, wenn in diesen Tools ein Feature fehlt oder ist es grundsätzlich nicht möglich, dieses Feature bereitzustellen?

0

3 Antworten auf die Frage

3
Alex Offshore

Erstellen Sie nach dem Ausführen einfach einen temporären Hardlinkkpartx -a ... :

sudo ln /dev/loop0 /dev/mapper/loop0 

Und dann gparted wie gewohnt laufen (es funktioniert einwandfrei /dev/mapper/loop0p*):

sudo gparted /dev/mapper/loop0 

Vergessen Sie nicht, den Link zu entfernen, wenn er nicht mehr benötigt wird.

Tolle. Dies half mir nur, gparted zu verwenden, um die Größe eines 4-GB-Raspian-Images zu ändern, um eine 16-GB-SD-Karte zu füllen. Vielen Dank! Dejay Clayton vor 8 Jahren 0
Sie müssen jedoch vorsichtig sein. Nach dem Ändern der Partitionsgrenzen oder dem Hinzufügen oder Entfernen von Partitionen führen die Partitionierungstools `partprobe` oder ähnliches aus, um die mit Partitionen verknüpften speziellen Dateien zu aktualisieren. ** Dies aktualisiert Ihre `/ dev / mapper / * -Dateien nicht, sie zeigen immer noch auf die gleichen Teile des gesamten Bildes! ** Wenn ein Werkzeug diese Dateien benötigt (` gparted` '), ist es ratsam, Operationen auszuführen Nacheinander werden Dateien, die von "kpartx" erstellt wurden, zerstört und neu erstellt, sodass die nächste kohärente Daten sieht. Kamil Maciorowski vor 6 Jahren 0
2
grawity

Es ist möglich, aber ich bin nicht sicher, ob es sinnvoll ist.

Partitionierungstools kümmern sich nur um das gesamte Plattengerät, da sie die Partitionstabelle direkt von den relevanten Plattensektoren lesen. Sie benötigen keine Partitionsgeräte, um zu existieren. Dies bedeutet, dass ein einfaches Loop-Gerät, das mit erstellt wurde, losetupausreicht, und wenn ein Werkzeug es nicht sieht, können Sie es einfach manuell ausführen fdisk /dev/loop0oder so.

(Wenn ein Gerät mit einem vollständigen Datenträger installiert ist /dev/mapper/, ist es nicht schwer, diese Tools dazu zu bringen, dies zu erkennen, obwohl normalerweise einige Zeilen des Quellcodes bearbeitet werden müssen ... das Ausführen fdisk /dev/mapper/blehist oft einfacher.)


Beachten Sie auch, dass neuere Kernel unterstützt werden, losetup --partscanwodurch der Device-Mapper nicht mehr benötigt wird.

Ich habe definitiv etwas aus Ihrer Antwort gelernt, also danke. Aber was meinen Sie mit "Pro-Partition-Gerät"? Ich neige dazu zu denken, dass ein Gerät mit einem ganzen Datenträger so etwas wie meine Disketten-Image-Datei "losetup" ist, also sollten Partitionierungswerkzeuge sich nicht darum kümmern? Harry vor 10 Jahren 0
@Harry: Wenn "sda" oder "loop0" die gesamte Platte (oder das gesamte Bild) darstellen, dann stellen "sda1" oder "loop0p1" die erste Partition dar, "sda2" oder "loop0p2" die zweite Partition und so weiter. Wenn Sie eines dieser "Partitionsgeräte" lesen, erhalten Sie nur den Inhalt der Partition. grawity vor 10 Jahren 1
@Harry: Und nein, Partitionierungstools benötigen nicht immer die Partitionsgeräte, da sie den Inhalt der Partitionstabelle kennen, wo jede Partition beginnt und endet und die Partitionsdaten nur auf diese Weise finden können. ⫽ Beachten Sie, dass es zwei Arten von Partitionierungswerkzeugen gibt: diejenigen, die tatsächlich auf die Daten in Partitionen * zugreifen * und diejenigen, die nicht darauf zugreifen. GParted gehört zur vorherigen Gruppe, da Sie damit auch Dateisysteme innerhalb dieser Partitionen verschieben und deren Größe ändern können. In der Zwischenzeit befinden sich fdisk und parted in letzterer - sie bearbeiten * nur * die Parttabelle und kümmern sich nicht um die Daten in Partitionen. grawity vor 10 Jahren 1
@Harry: Dies bedeutet, dass GParted, fdisk und parted ihre Hauptaufgabe erledigen können (dh, Partitionen auflisten, hinzufügen oder löschen), indem sie einfach `sda 'oder` loop0' lesen / schreiben. For Für die * Größenänderung * eines Dateisystems müssen jedoch die von GPart verwendeten externen Tools (z. B. `resize2fs` oder` ntfsresize`) * do * eine "Partition" ("sda2" oder "loop0p2") erhalten. grawity vor 10 Jahren 1
Ok, ich glaube, Sie bezeichnen eine "Partition" als "Pro-Partitions-Gerät", während ich sie tendenziell als "Partition" und die Disk-Image-Datei als "Gerät" bezeichne. Ihre Informationen zur Einstufung des Partitionierungswerkzeugs waren wirklich hilfreich! Harry vor 10 Jahren 0
So ziemlich alles in "/ dev" wird "Gerät" genannt. grawity vor 10 Jahren 0
0
Alex Offshore

Nach 3,5 Jahren habe ich eine andere Lösung dafür :)

Wenn Sie sich keine Gedanken über die Verwendung von kpartx machen, und ich bin zu Recht der Meinung, dass Ihr Ziel darin besteht, Partitionen auf einem Festplatten-Image auszuführen, das als gewöhnliche Datei dargestellt wird, finden Sie hier einen alternativen Arbeitsablauf ohne kpartx und Symlinking (deshalb als separate Antwort):

  1. sudo losetup --find --show ./somedrive.img

    Hängen Sie ein Loop-Gerät für die gesamte Datei an ./somedrive.img. --findist zu fragen losetup, automatisch nach einem freien Gerät zu suchen; und --showist zum drucken des gerätes verwendet worden. Betrachten Sie beispielsweise das gewählte Gerät /dev/loop5.

  2. sudo partx --update /dev/loop5

    Teilen Sie dem Linux-Kernel mit, die Partitionen darin erneut zu scannen /dev/loop5. Im Erfolgsfall wird keine Ausgabe erzeugt. Überprüfen Sie also, ls -al /dev/loop5was erscheint.

  3. Tu was auch immer du brauchst sudo gparted /dev/loop5

    An diesem Punkt sollten Sie in der Lage sein, ordnungsgemäß zu funktionieren /dev/loop5p*.

  4. sudo partx --delete /dev/loop5

    Geben Sie die Partitionszuordnungen frei.

  5. sudo losetup --detach /dev/loop5

    Lassen Sie schließlich das Loop-Gerät los.

PS Wenn Sie der Proud Owner ™ des util-linuxPakets mit Version v2.21 oder höher sind, können Sie sowohl das Anhängen von Endlosschleifen als auch einen erneuten Scan einer Partition in einem Durchlauf anfordern: sudo losetup --find --show --partscan ./somedrive.imgund sollte das Problem mit gparted-like-Utils nicht lösen.