Ich muss ein Dateisystem mit nur einer Partition aus dem Nichts erstellen ( /dev/zero
). Ich habe diese Befehlsfolge ausprobiert:
dd if=/dev/zero of=mountedImage.img bs=512 count=131072
fdisk mountedImage.img
n
p
2048
131072
Grundsätzlich muss ich eine 64 MB große Bilddatei mit Nullen erstellen. Dann benutze ich fdisk
, um eine neue Partition für ein neues Dateisystem hinzuzufügen (das endlich FAT32 sein sollte), beginnend bei Sektor 2048
und unter Verwendung aller verbleibenden Sektoren.
losetup /dev/loop1 mountedImage.img
mkfs -t vfat /dev/loop1
Aber hier habe ich Probleme. Wenn ich ein loop
Gerät einrichte und es mit formatiere mkfs -t vfat
, wird die Partitionstabelle überschrieben und das Dateisystem (FAT32) auf der Festplatte abgelegt. Ich muss nicht mit FAT32 formatiert sein, sondern nur meine primäre Partition.
Weiß jemand, wie ich nur eine Partition des Raw-Image formatieren kann, nicht das ganze Image?
quelle
mkfs
Anruf posten . Ich musste deinen Beitrag 3 Mal lesen, um dein Problem zu verstehen. Obwohl ich Ihnen nicht helfen kann, bin ich daran interessiert, warum Sie eine Bilddatei (!) Erstellen, aber trotzdem die ersten n "Sektoren" ungenutzt lassen möchten.loop
spielt eine Rolle, ob es sich um ein Modul handelt oder ob es in den Kernel integriert ist). Ich denke, es ist nützlich, dass jede Site ihre Version der Frage hat, und ich habe dafür gestimmt, sie erneut zu öffnen.Antworten:
Stellen Sie unter Linux beim Laden des
loop
Moduls sicher, dass Sie einemax_part
Option an das Modul übergeben, damit die Loop-Geräte partitionierbar sind.Überprüfen Sie den aktuellen Wert:
Wenn es 0 ist:
Fügen Sie die folgende Zeile zu
/etc/modprobe.conf
oder zu einer Datei hinzu,/etc/modprobe.d
wenn dieses Verzeichnis auf Ihrem System vorhanden ist, um diese Einstellung dauerhaft zu erhalten:Wenn dies
modprobe -r loop
fehlschlägt, weil die Modulschleife erstellt wurde, müssen Sieloop.max_part=31
die Kernel-Befehlszeile erweitern und einen Neustart durchführen. Wenn Ihr Bootloader Grub2 ist, fügen Sie diesen zum Wert vonGRUB_CMDLINE_LINUX
in hinzuetc/default/grub
.Jetzt können Sie ein partitionierbares Loop-Gerät erstellen:
(Beachten Sie, dass Sie eine relativ aktuelle Version von Linux benötigen).
quelle
loop.max_part=31
an die Kernel-Kommandozeile weiterloop.maxpart=31
oderloop.max_part=31
in der Kernel-Befehlszeile?losetup /dev/loop0 file -o 1048576 --sizelimit limit
Der angegebene Offset sollte in Bytes angegeben werden (1048576 = 2048 Sektoren * 512 Bytes pro Sektor).
mount -o loop,offset=1048576,sizelimit=limit
Weitere Informationen finden Sie unter losetup und mount .
quelle
Mit den folgenden Verfahren können Sie die Partitionen des Images bereitstellen, um sie zu ändern.
Option losetup 2.21 -P
Erstellt eine
/dev/loopXpY
pro Partition.Vorteil: ausführbare Datei in vielen Distributionen vorinstalliert (Paket util-linux).
Nachteil: ziemlich neue Option, in Ubuntu 14.04 nicht vorhanden.
losetup -P
AutomatisierungVerwendung:
Quelle:
kpartx
Ausgabe:
Wo
loop0p1
ist die erste Partition?Vorteil dieser Methode: Funktioniert auf Ubuntu 14.04 ohne Neustart.
quelle