Ich habe versucht, ein neues Raspbian-Image mit einem anderen Kernel (mit CAN-Unterstützung) und mit installiertem Python 3.3 zu erstellen. Anstatt das alles auf dem Raspberry Pi zu machen, hielt ich es für interessant, es stattdessen auf dem Computer zu machen (befolge diese Anweisungen ). Sobald ich das Image jedoch bereitgestellt und einsatzbereit hatte, war der Speicherplatz schnell erschöpft. Ich gehe davon aus, dass das Bild nur so groß ist, dass der Benutzer die Größe des Dateisystems ändern kann, sobald es auf eine SD-Karte geschrieben wurde.
Ist es möglich, die Größe des Images und des Dateisystems zu ändern, bevor es auf die SD-Karte geschrieben wird, damit ich weitere Anpassungen vornehmen kann, ohne dass der Speicherplatz knapp wird?
Antworten:
So ändern Sie die Größe einer Rohbilddatei. Ich weiß, es klingt dumm und simpel, aber es wird funktionieren.
Erstellen Sie ein leeres Bild in der Größe, in der Sie das Original vergrößern möchten (in meinem Beispiel verwende ich 5 GB).
Hänge dies an das Originalbild an:
Ändern Sie die Größe des Dateisystems, das sich am Ende der Festplatte befindet (normalerweise ist dies dasjenige, das Sie vergrößern möchten):
Erledigt! Ihre Festplatte sollte jetzt 5 GB größer sein!
quelle
fdisk -l file.img
Startsektor der zweiten Partition abgerufen habe (es war 122880) und dannlosetup --offset $((122880 * 512)) /dev/loop0 file.img
. Ich konnte dann verwendenresize2fs
auf/dev/loop0
und aufzuräumen mitlosetup -d /dev/loop0
. Wenn Sie Ihre Antwort so aktualisieren, dass sie diese enthält, werde ich sie als akzeptierte Antwort markieren. Vielen Dank, dass Sie mich in die richtige Richtung weisen.resize2fs
on ausprobiert, habe/dev/loop0
aber beim Booten eine Kernel-Panik bekommen, die besagt, dass die Superblock-Größe und die Partitionsgröße nicht übereinstimmen:The filesystem size (according to the superblock) is 483840 blocks The physical size of the device is 458240 blocks
Sind Sie auf so etwas gestoßen?Dies ist eine Zusammenfassung der Antworten oben und an anderer Stelle, die für mich funktioniert haben - sichern Sie Ihr Image, falls Sie einen Fehler machen:
Vergrößern Sie zuerst die Bilddatei (hier fügen wir am Ende 1 GB hinzu):
Ordnen Sie als Nächstes das gesamte Image als Loop-Gerät zu, damit wir auf den Partitionstisch zugreifen können
Zum späteren Nachschlagen lassen Sie es sich entleeren:
Die Ausgabe sieht folgendermaßen aus:
Jetzt erstellen wir die letzte Partition neu, indem wir sie löschen und dann am gleichen Startort, demselben Typ, aber an einem anderen Endort neu erstellen. Notieren Sie sich also die Spalte "Start" für loop0p2 (Partition 2 - die Linux-Partition) - wir werden sie später verwenden - hier 122880.
Geben Sie Folgendes ein - sie sind sicher einzugeben - nichts Bleibendes passiert, bis Sie meine folgende Erklärung gelesen haben:
p
d
2
n
p
2
122880
p
Schritt 1 - Aktuelle Tabelle drucken. Schritte 2-3 - Partition 2 löschen, Schritte 4-8 - Partition 2 mit neuem Endpunkt neu erstellen (Standard ist Bildende), Schritt 9 - Neue Tabelle ausdrucken.
Angenommen, Ihre neu gedruckte Tabelle ist identisch mit der ursprünglichen Tabelle, mit Ausnahme des Endwerts und des Blockwerts (dh die Größe hat sich geändert), die Sie festschreiben möchten.
Geben Sie ein
w
, um die Änderung zu bestätigen, und geben Sie ein , um den Vorgangq
zu beenden.Sie können dieses Loopback-Gerät löschen, wir erstellen ein anderes für die zweite Partition. Merken Sie sich den Startoffset, den Sie oben notiert und verwendet haben - wir werden ihn wieder verwenden:
Dadurch wird eine neue Zuordnung erstellt,
/dev/loop0
wenn nur auf Partition 2 gezeigt wird. Die Referenz 512 ist die Sektorgröße, die Sie in der erstenfdisk
Ausgabe sehen können.Verändern Sie nun die Größe der Partition, um den verfügbaren Platz zu füllen:
Fertig - jetzt aufräumen:
quelle
Für diejenigen, auf denen Oracle VM VirtualBox ausgeführt wird, ist dies recht einfach.
Auf einem Windows-Computer laufen die Dinge wie folgt ab:
input.img
Hier ist das Bild, dessen Größe reduziert werden soll, undoutput.img
das endgültige Bild - in diesem Beispiel mit einer Größe von 7000 MB definiert.Hoffe das hilft ein bisschen.
quelle
Kernel panic - not syncing: VFS: Unable to mount rootfs on unknown-block(179,2)
So ändern Sie die Größe einer Rohbilddatei. Ich weiß, es klingt dumm und simpel, aber es wird funktionieren.
Erstellen Sie ein leeres Bild in der Größe, in der Sie das Original vergrößern möchten (in meinem Beispiel verwende ich 5 GB).
Hänge dies an das Originalbild an:
Als nächstes wird die Größe der Partition und des Dateisystems geändert. Holen Sie sich zunächst den Offset der Partition.
Ergebnisse in einer Tabelle wie dieser:
Beachten Sie den Startoffset der zweiten Partition
Zuletzt hänge / dev / loop ab
Erledigt! Ihre Festplatte sollte jetzt 5 GB größer sein!
quelle