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-Bilddatei erstellen, die mit Nullen gefüllt ist. Dann verwende ich fdisk
um eine neue Partition für ein neues Dateisystem (das schließlich FAT32 sein sollte) hinzuzufügen, beginnend bei Sektor 2048
und alle verbleibenden Sektoren verwenden.
losetup /dev/loop1 mountedImage.img
mkfs -t vfat /dev/loop1
Aber hier stoße ich auf Probleme. Wenn ich eine loop
einrichte Gerät und formatieren Sie es mit mkfs -t vfat
, die Partitionstabelle wird überschrieben und das Dateisystem (FAT32) wird auf der Festplatte abgelegt. Ich brauche keine ganze Festplatte, die mit FAT32 formatiert ist, ich brauche nur meine primäre Partition, die so formatiert ist.
Weiß jemand, wie ich nur eine Partition eines Raw-Disk-Images formatieren kann, nicht das ganze Image?
Akzeptierte Antwort:
Unter Linux beim Laden der loop
Modul, stellen Sie sicher, dass Sie einen max_part
übergeben Option zum Modul, so dass die Loop-Geräte partitionierbar sind.
Prüfen Sie den aktuellen Wert:
cat /sys/module/loop/parameters/max_part
Wenn es 0 ist:
modprobe -r loop # unload the module
modprobe loop max_part=31
Um diese Einstellung dauerhaft zu machen, fügen Sie die folgende Zeile zu /etc/modprobe.conf
hinzu oder in eine Datei in /etc/modprobe.d
falls dieses Verzeichnis auf Ihrem System existiert:
options loop max_part=31
Wenn modprobe -r loop
fehlschlägt, weil „Module loop is builtin“ ist, müssen Sie loop.max_part=31
hinzufügen zu Ihrer Kernel-Befehlszeile und starten Sie neu. Wenn Ihr Bootloader Grub2 ist, fügen Sie ihn zum Wert von GRUB_CMDLINE_LINUX
hinzu in etc/default/grub
.
Jetzt können Sie ein partitionierbares Loop-Gerät erstellen:
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/
(Beachten Sie, dass Sie eine relativ aktuelle Version von Linux benötigen).