Ich wollte eine Distribution für ein paar Freunde vorbereiten.
Da ich sonst nichts herumliegen hatte, verwendete ich eine 16 GB SD-Karte.
Ich habe mit dem Standard-Debian-Weezy-2-GB-Image begonnen und keine Größenänderung vorgenommen.
Nun, da ich fertig bin, wollte ich ein Image von dem erstellen, was ich getan habe, aber ich erhalte eine 16-GB-Datei, die am Ende 14 GB nicht partitionierten (nicht partitionierten und freien) Speicherplatz enthält.
[Ich habe Windows // Win32DiskImager verwendet, da ich im Moment nichts frei habe, um mich in das RPI einzuklinken]
Kann ich dann die Bilddatei direkt hinter dem partitionierten Bereich abschneiden und den führenden Teil auf eine kleinere Karte übertragen?
dd if=/dev/path/to/SD/card of=~/SpecialImage.img
GParted aus, installieren Sie es und führen Sie es ausgparted ~/SpecialImage.img
. Sobald GParted Ihre.img
Datei öffnet , ändern Sie einfach die Größe der Partitionen nach Ihren Wünschen! (Beide Befehle müssen als root ausgeführt werden,sudo su
damit Sie das bekommen, was Sie benötigen. Wenn Sie$
zu a#
wechseln, sind Sie Root. Seien Sie vorsichtig, dies ist das Linux-Äquivalent von God.) GParted ist im Grunde ein GUI-Frontend für das Arcane Partition Management Werkzeuge, die Sie benötigen. Mit GParted wird alles so viel einfacher und erfolgreicher.Antworten:
Endlich habe ich eine Ressource gefunden, die meine Frage erklärt.
Kurz:
Ja, das Abschneiden ist möglich!
Zusammenfassung des Prozesses:
Extrahieren der Partitionsinformationen aus dem Image mit
fdisk
:Wir sehen, dass die Partition eine Größe von ca. 2,8 GB (5872026 * 512) hat, der Rest ist nicht partitioniert .
So kann alles nach dem Ende der Partition entfernt werden.
Dies erfolgt mit dem Tool
truncate
. Vergessen Sie nicht, die Anzahl der Sektoren um 1 zu erhöhen, da die Blocknummern bei 0 beginnen.Bearbeiten:
Für diejenigen sein zu faul , um Linux zu wechseln:
Funktioniert auch unter Windows mit Cygwin ‚s
fdisk.exe
undtruncate.exe
!Was ist Cygwin?
Ich kann zitieren: "Cygwin: Holen Sie sich das Linux-Gefühl - unter Windows" ( https://www.cygwin.com/ ).
Es handelt sich um eine Reihe von ausführbaren Programmen, die unter Windows ausgeführt werden können, aber alle Befehlszeilenprogramme enthalten, die Sie normalerweise von Linux kennen. Die Installation von Cygwin kann sehr lange dauern, wenn Sie während der Installation jedes Paket auswählen. Um diesem Beispiel zu folgen, müssen Sie lediglich sicherstellen, dass neben der Standardkonfiguration auch die Pakete
util-linux
(fdisk) undcoreutils
(truncate) ausgewählt sind.Abhängig von Ihrer Umgebung müssen Sie
/usr/bin
und/usr/sbin
zu Ihrer hinzufügen$PATH
.quelle
fdisk.exe
und zu bekommentruncate.exe
?Ich weiß, dass dies eine alte Frage ist, aber ich möchte zeigen, wie dieser Vorgang auf einem Mac ausgeführt wird, da dies nicht so einfach ist:
fdisk
Keine-l
Option undtruncate
nicht standardmäßig installiert:1. Schritt 1: Installieren Sie Truncate unter Mac OS X:
Sie benötigen dafür MacPorts oder Homebrew. Ich benutze MacPorts. Wenn Sie keine haben, installieren Sie diese zuerst. Link zu MacPorts
Jetzt können wir Truncate installieren . Öffne dein Terminal und tippe:
Für die Brauinstallation:
Das sollte es tun.
2. Verwenden Sie die Festplattendienstprogramme, um unseren IMG anzuhängen, sodass er für den Terminalbefehl diskutil sichtbar ist .
Sie werden gleich sehen, warum wir diesen Schritt brauchen. Öffnen Sie die Festplatten-Dienstprogramm-App. Klicken Sie auf Datei (in der oberen Leiste) -> Disk Image öffnen und wählen Sie Ihre IMG-Datei aus.
3. Überprüfen Sie die Partitionsgröße des IMG und wo es bereitgestellt wird.
Geben Sie auf einem Terminal Folgendes ein:
Und irgendwann sollte es so etwas zeigen:
Wir sehen also, dass ungefähr 12 GB nicht partitioniert sind. Wir müssen diese abschneiden.
Der Grund, warum wir diesen Befehl benötigen, besteht darin, herauszufinden, wo das Festplatten-Image bereitgestellt ist. In meinem Fall ist es unter: / dev / disk3
4. Ermitteln Sie die tatsächliche Partitionsgröße.
3,9 GB und 62,9 MB sind Werte, die beim Abschneiden nicht funktionieren. Wir müssen die Partitionsgrößen in Bytes finden.
5. Führen Sie fdisk aus .
Führen Sie in Ihrem Terminal den folgenden Befehl aus:
Wobei X die Zahl ist, die Sie im vorherigen Schritt ermittelt haben. Dies sollte ungefähr so aussehen:
6. Zeit zum Abschneiden !
Wechseln Sie auf Ihrem Terminal
cd
in das Verzeichnis, in dem sich Ihr Bild befindet. Dann schreibe:DATEI ist natürlich Ihre Datei.
GRÖSSE ist die Größe in Bytes. Was habe ich, ist auf die hinzuzufügen Größe Spalte des
fdisk
Befehls, der Startspalte und multiplizieren mit 512. Also, in meinem Fall SIZE wird: 512 * (7.553.024 + 131.072) = 3934257152 , die etwa 3,9 GB.Sie benötigen den Start und die Größe der letzten Partition , die von angezeigt wird
fdisk
. (Nicht unbedingt die größte, aber die am Ende der IMG-Datei)7. (Optional) Testen Sie einfach, ob der IMG nicht beschädigt ist.
Rufen Sie das Festplatten-Dienstprogramm erneut auf und versuchen Sie, die neue IMG-Datei wie zuvor zu öffnen. Wenn es montiert ist, können Sie auch die neue (kleinere) Größe sehen. Wenn es nicht steigt, ist etwas schief gelaufen. (Vielleicht versuchen Sie, die Größe im
truncate
Befehl zu erhöhen )Ich hoffe jemand findet das hilfreich!
quelle
512*(Size+1)
das nicht funktioniert. Wie Sie sehen, habe ich beide Partitionen verwendetEnd
und nichtSize
, da Sie beide Partitionen beibehalten müssen, wenn es mehr als eine gibt. Also ist using7553024 + 131072
(+1
) zu 100% korrekt!Der aktuelle Win32DiskImager hat tatsächlich die Option, nur zugewiesene Partitionen in das Festplatten-Image aufzunehmen. Dies erledigt den Zuschnitt mit einem Klick.
quelle
Nur etwas, das mir kürzlich aufgefallen ist, als ich viele dieser Win32diskimg-Vorgänge durchführe, um meine RPI-Images für die Bereitstellung zu sichern. Ich habe kürzlich damit begonnen, SD-Trimmfunktionen zu testen, um Teile der SD-Karte zu reinigen, die nicht für theoretische Abnutzungskorrekturen verwendet werden. Ich bin mir nicht sicher, welchen Effekt es haben wird, aber ein Nebeneffekt war, als ich die 16-GB-SD-Partition abbildete und sie dann mit 7zip komprimierte. Ich bin von den üblichen 16GB auf 9,5GB auf jetzt eine 2,5GB-Datei umgestiegen. Ich teste jetzt, um sicherzustellen, dass nichts falsch ist, aber es scheint, dass die Verwendung von TRIM, um den nicht verwendeten Raum als 0 zu markieren, die Bildkomprimierung weitaus effizienter macht (was Sinn macht). Ich wollte nur berichten, dass dies super einfach zu bewerkstelligen war und keine Mehrfachschritte.
quelle