Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Das Image ist zügig runtergeladen und das 'Setup' ist schnell durchgeführt und man stellt dann nach dem Einrichten fest, das das eingerichtete Image auf eine 16Gb-Karte resized wurde obwohl eine 2Gb auch gereicht hätte.
    raspi-config bietet nur das Erweitern des rootfs an und ist für das Verkleinern nutzlos. Dieses Tutorial habe ich in Anlehnung dieses Threads geschrieben: Von 8GB image auf 2GB - Image verkleinern
    Wir brauche dazu einen Linuxrechner auf dem Gparted installiert ist.(GParted gibt es auch als Live-Version)
    Die SD-Karte in den Linuxrechner stecken und mit GParted die zweite Partition verkleinern, 'n kleines bischen Luft lassen, so das alles noch locker auf eine 2Gb-Karte passt.
    Soll ohne Veränderung am System fortgefahren werden, mounten wir die Rootpartition

    Code
    mount /dev/sdb2 /mnt

    und füllen den Freien Bereich mit Nullen

    Code
    sfill -z -l -l -f /mnt

    Falls sfill nicht vorhanden ist, das Paket secure-delete nachinstallieren. Wer das nicht möchte, bedient sich Georgs Methode mit dem zero.file
    Anschließend die Partition unmounten.

    Code
    umount /mnt

    Dann mit

    Code
    dd if=/dev/sdb of=neu.img count=3788800

    ein neues Image erstellen und mit

    Code
    dd bs=4M if=~/neu.img of=/dev/sdb

    auf die neue kleinere Karte schreiben.

    Will/muß man am Dateisystem Änderungen vornehmen weil man das Image z.B. weitergeben will oder für 'Fremde' ein angepasstes anfertigen will müssen wir ein kleinen Umweg gehen.
    Dann muß das oben erstellte Image als Loop-Device nach /mnt gemountet werden. (Ist /mnt eine Partition, dann eine Verzeichnis als Mountpoint benutzen, sonst kann es passieren, das das Journaling eine wegkriegt.)

    Ein Loop-Device ist ein virtuelles Laufwerk, das wie alle anderen Laufwerke unter Linux verwendet werden kann.
    Linux kann zwar aus einer Imagedatei ein Blockgerät machen, das man dann mounten kann, aber die Loop-Devices kennen in dem Sinne keine Partitionen. Sie verwenden Einzelimages. Somit kann man über das Offset geziehlt Bereiche auswählen, die dann gemountet werden können. Soll hier ganz kurz dazu reichen. Werft mal die Suchmaschine eures geringsten Mistrauens an und sucht nach Loop Devices, ihr werdet sehen da schreiben Leute ganze Bücher drüber... .

    Da wir das rootfs verändern wollen, müssen wir das Offset ermitteln mit sfdisk.

    Code
    sfdisk -l -uS

    und bekommen folgende Ausgabe: (kann variieren)

    Code
    Disk neu.img: 235 cylinders, 255 heads, 63 sectors/track
    Units = sectors of 512 bytes, counting from 0
    
    
       Device Boot    Start       End     #sectors   Id  System
     neu.img1          8192    122879       114688    c   W95 FAT32 (LBA)
     neu.img2        122880   3842047      3719168   83   Linux
     neu.img3             0         -          0   0  Empty
     neu.img4             0         -          0   0  Empty

    Dabei ist neu.img2 das rootfs unseres Images und da interessiert uns nur der Startsektor, den wir mit 512 multiplizieren. Somit haben wir das Offset errechnet. Oder wir lassen uns das beim mounten ausrechnen.

    Code
    mount -o loop,offset=$((512*122880)) neu.img /mnt


    Jetzt können Änderunge wie z.B. Netzwerkeinstellungen (IP-Adressen, WPA-Schlüssel, SSID etc.) vorgenommen werden
    ... und jetzt den freien Platz mit Nullen füllen:

    Code
    sfill -z -l -l -f /mnt

    Anschließend das Loop-Device unmounten.

    Code
    umount /mnt

    Jetzt das Image auf die 'kleinere' SD-Karte schreiben.

    Code
    dd bs=4M if=~/neu.img of=/dev/sdb

    Mit der neuen Karte den Pi booten und mit raspi-config das rootfs resizen.

    waren das Zeiten, als Ordner noch Verzeichnisse waren

    Einmal editiert, zuletzt von I.R.Gendwer (5. Juni 2013 um 22:51)

  • Hi,

    ich wusste doch, dass ich kürzlich was in der Richtung gelesen hatte.
    Jetzt bin ich wieder mal über diesen Link gestolpert und da fiel es mir wieder: resize2fs ...
    Allerdings habe ich das noch nicht ausprobiert (damit wird übrigens beim Pi das root-fs vergrössert).

    cu,
    -ds-

  • Hallo dreamshader,

    es geht hier nicht um ein Resize der Root-Partition sondern darum, dass Image welches man von einer SD-Karte erstellt zu verkleinern.

    Gruß Georg

    Hallo I.R.Gendwer,

    der Umweg über das Image geht mir nicht ein. Ich überschreibe vor dem Erstellen des Images direkt auf der SD-Karte die freien Sektoren mit Nullen. Dann kann man sich das nachträgliche Bearbeiten des Images sparen.

    Gruß Georg

    Einmal editiert, zuletzt von boandlkramer (5. Juni 2013 um 19:36)


  • Hallo dreamshader,

    es geht hier nicht um ein Resize der Root-Partition sondern darum, dass Image welches man von einer SD-Karte erstellt zu verkleinern.

    Gruß Georg

    Hallo I.R.Gendwer,

    der Umweg über das Image geht mir nicht ein. Ich überschreibe vor dem Erstellen des Images direkt auf der SD-Karte die freien Sektoren mit Nullen. Dann kann man sich das nachträgliche Bearbeiten des Images sparen.

    Gruß Georg

    Hi,
    da muss ich erst selber noch mal nachgrübeln, was ich mir dabei gedacht habe.
    Verkleinern der Partition damit die Systemtabellen stimmen und dann irgendwie über dd oder so.
    Ich geb' mal bescheid, wenns mir wieder einfällt ...

    cu,
    -ds-

    EDIT:
    Ha! Jetzt weiss ich's wieder: statt mit einem anderen PC über gparted die Partition zu verkleinern, müsste es mit resize2fs/reboot am lebenden System gehen. Das war's ...
    Und dann gab's da noch einen Benutzer, der die "WINDOWS" Partition vergrößern wollte. Dem könnte das evtl. auch weiterhelfen. Aber den Beitrag muss ich erst noch suchen.

  • Zitat

    Hallo I.R.Gendwer,

    der Umweg über das Image geht mir nicht ein. Ich überschreibe vor dem Erstellen des Images direkt auf der SD-Karte die freien Sektoren mit Nullen. Dann kann man sich das nachträgliche Bearbeiten des Images sparen.

    Gruß Georg


    Tja Georg, wo du Recht hast... .
    Ich hatte das niedergeschrieben als ich das für mein Nachbar gemacht hatte, im gleichem Atemzug hatte ich im gemountetem Loop-Device die Netzwerkeinstellungen (SSID und WPA-Schlüssel) geändert und habe diesen Absatz einfach weggelassen.
    Wenn man keine Änderungen durchführen muß, kann man sich das sparen. Ich füge nachher noch eine Ergänzung diesbezüglich ein.
    Eingangspost wurde diesbezüglich ergänzt.

    waren das Zeiten, als Ordner noch Verzeichnisse waren

    Einmal editiert, zuletzt von I.R.Gendwer (5. Juni 2013 um 22:53)

  • Hallo,
    ich stehe jetzt auch vor dem Problem, dass eine neu gekaufte 8GB-Karte, die meine alte Karte ersetzen soll, etwa 80MB zu klein ist. Aber, was hat es mit diesen konkreten Zähler in

    Zitat
    Code
    dd if=/dev/sdb of=neu.img count=3788800


    auf sich? Gilt die 3788800 für eine 4GB-Zielkarte und müsste bei einer 8GB-SD-Karte anders lauten?

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

  • Habe ein nettes Programm dafür gefunden:
    script-automatic-rpi-image-downsizer
    autosizer.sh

    "autosizer.sh"

    Schein sehr gut zu funktionieren! :bravo2:

    Gruß

    Micha

    Einmal editiert, zuletzt von michaMEG (16. Februar 2015 um 10:05)

  • Hallo,

    schon etwa ein Jahr ruhe hier, aber vllt kann mir trotzdem geholfen werden. Ich arbeite jetzt seit etwa 2 Jahren in meiner Freizeit mit Linux, komme aber gerade an meine Grenzen.

    Ich möchte meine mit Raspbian gefüllte SD Karte gegen ein schnelleres Modell ersetzten. Leider ist diese nicht mehr 16GB sondern 8GB groß, was mich aber nicht stört. Bei der Suche bin ich auf das oben erwähnte Script gestoßen, leider funktioniert es bei mir nicht. Ich nutze ein gparted live (debian) auf einem bootable USB Stick als System an meinem Desktop-Rechner (eigentlich Win10).
    Ergo, ich bin den manuellen Weg gegangen: die ext4 Partition hat 14,44GB: 3,99GB used 10,45Gb free. Um sicher zu gehen soll die Partition 5GB groß werden. Ich bekomme daraufhin aber immer den Fehler

    Code
    new size smaller than minimum (1394833)


    Was kann ich tun, dass die minimale Größe kleiner wird? Auf der ext4-Partition waren im höchstfall mal 6 GB drauf, noch nie mehr. Ich würde mich freuen wenn mir jemand auf die Sprünge helfen könnte!

    VG dj_blue06

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!