Um dies richtig zu machen, müssen Sie:
- Erweitern Sie zuerst die
.imgDatei.
- Als nächstes erweitern Sie das Dateisystem innerhalb.
Der beste Weg, um das erste zu tun, ist mit dd. Aus irgendeinem Grund schreiben manche Leute der Funktionsweise eine Art Geheimnis zu dd, aber es gibt wirklich keine. So fügen Sie beispielsweise ein Loch an das Ende Ihrer .imgDatei an:
dd bs=1kx1k seek=100 of=.img </dev/null
An jedem POSIX - System , das wird gestutzt , die Datei zu 100MiBs. Auf einem GNU-System kann das 1kx1kBit auf nur gekürzt werden M. ddSucht 100 MB in der Datei, trifft beim ersten Lesen auf EOF und schließt die Datei. Es ist eine einzelne Aktion und erfordert keine Lesevorgänge (über die erste leere hinaus) oder Schreibvorgänge - es ist nahezu atomar.
Wenn die Datei zuvor 50 MB groß war, werden ihr jetzt 50 MB mehr zugewiesen. Wenn die Datei zuvor 150 MB groß war, werden die letzten 50 MB vom Schwanz abgeschnitten. Auf einem Dateisystem , das versteht Sparse - Dateien, das angehängte Datei Loch wird keinen Speicherplatz verwenden, wirklich, und wird nur verwendet werden, was notwendig ist , wie Sie es füllen.
Andere Möglichkeiten, dasselbe auf einigen Systemen zu tun:
fallocate -l100M .img
truncate -s100M .img
... beide Befehle werden genau das Gleiche tun dd. Ich empfehle, ddda keines dieser Tools portabel ist, wenn dddas Verhalten POSIX-spezifiziert ist. Wenn Sie erst einmal gelernt haben, wie Sie den Festplatten-Zerstörer richtig verwenden, wird es keine Festplatte mehr wagen , sich Ihnen in den Weg zu stellen.
Wenn Sie lediglich etwas hinzufügen, .imgkönnen Sie die oben genannten Schritte ausführen, unabhängig davon, ob es bereitgestellt ist oder nicht (obwohl .imges möglicherweise nicht wie erwartet funktioniert, wenn Sie einen Teil eines bereitgestellten Geräts entfernen) , müssen Sie jedoch höchstwahrscheinlich umount.imgzuerst die Größe ändern Bestandteil des Dateisystems, und das könnte auch so sein. Sie müssen -ddas Loop-Gerät jedoch nicht zerstören.
Wie Sie mit der zweiten Sache umgehen, hängt davon ab, ob sie .imgpartitioniert ist oder nicht. Wenn dies nicht der Fall ist, wie ich aufgrund Ihrer Kommentare an anderer Stelle vermute, müssen Sie die fs nur nach ihrem Typ adressieren. Für eine ext[234] .imgDatei sollten Sie verwenden resize2fsund damit fertig sein. Für andere sollten Sie sich die relevanten User-Space-Tools und deren manSeiten ansehen .
Wenn .imges partitioniert ist, kann es komplizierter sein. In solchen Fällen hängt es davon ab, welche Art von Partitionstabelle verwendet wird (z. B. GPT vs MBR vs Hybrid-MBR) , ob es sich um die letzte Partition in der Partitionstabelle der Datei handelt und vieles mehr. Ich zögere, hier .imgEinzelheiten ohne weitere Informationen zu erfahren : Wenn Sie Ratschläge zum Umgang mit einer Partitionierung benötigen, teilen Sie mir dies bitte mit, und ich werde Ihnen anbieten, was ich kann.