Ubuntu Server auf kleinere SD Karte

  • Moin Leute,


    Ich hoffe ihr könnt mir bei meinem Problem helfen.

    Ich möchte lediglich mein Ubuntu Server vom RsPi 4 b, von einer 128 GB Karte auf eine 32 GB Karte "klonen".

    Dies gestaltete sich aber nicht so leicht wie ich dachte. Nach zahlreichen Stunden die ich auf Google verbracht habe, dachte ich, ich mache mal selbst ein Thema dazu auf.


    Sachen mit denen ich das schon probiert habe: Win32DiskImager und rpi-clone. Beim letzteren dachte ich mir ich hätte endlich eine Lösung weil dies so plausibel klingt aber dort war das Problem dass es schlussendlich nicht booten wollte.


    Ich weiß dies klingt vielleicht etwas speziell aber ich hoffe es geht.

  • Danke für die sehr schnelle Antwort an euch.

    Hallo Niggo,


    willkommen im Forum! ;)


    Um ein Image zu verkleinern gibt es Pishrink. Siehe dazu hier: https://github.com/Drewsif/PiShrink

    Danke, ich habe dies auch schon im Auge gehabt nur wusste ich nicht genau wie dies funktioniert, da ich denke man muss ja erstmal das image auf dem Pi haben um dies machen zu können.

    Den SD Card Copier von Raspbian schon ausprobiert? Ansonsten manuell Partitionen anlegen und mit cp oder rsync kopieren.

    Vom SD Card Copier habe ich nichts gehört, da ich kein Raspbian besitze und wenn ich das manuell mache sagt er mir ja andauernd das der Ziel Pfad zu klein ist.

  • Imager aller Art sind immer Problematisch, da dieses immer direkt die 'Platte' abfragen und gegebenenfalls Fehlerstellen 'mitkopieren' (der kopierte Block wird als defekt markiert, obwohl er es nicht ist)


    sinnvoller sind Programme, die den Inhalt kopieren, abhängig vom Ziel gibt es verschiedene Programme.

    Über das Netz ist z.B. 'rsync' ein mögliches Tool, da es sehr effektiv die Daten überträgt.

    'cp' ist da problematischer, da es dafür gedacht ist, Unterverzeichnisse mit zu kopieren. Man kann es machen, doch der Einsatzzweck ist eigentlich ein anderer.


    Beim Kopieren von Daten, die lokalen liegen (zum Beispiel auch extra gemountet), ziehe ich zum Beispiel 'tar' vor.

    Man geht n das Quellverzeichnis und gibt das folgende ein. '/dst' ist der Pfad zum Zielveruzeichnis.

    Code
    tar cf - . | (cd /dst; tar xvf -)


    Bei jedem Kopieren ist darauf zu achten, dass man nur Dateisystem kopiert, auf dies aktuell keine anderen Schreib- oder Lesevorgänge stattfinden.

    Es werden sonst die Daten im Ziel inkonsistent.

    Selber denken,
    wie kann man nur?

  • Mir scheint Du bist ein primaerer Windows User (Kein Vorwurf!).


    Da pishrink nur unter Linux laeuft musst Du den Umweg ueber ein Linux auf der Raspberry gehen. D.h. wie Hyle schon vorschlug:


    1) Erstellen eines win32diskimage Backup auf irgendeinem Medium

    2) Anschluss dieses Mediums and Deine Raspi

    3) Download von pishrink

    4) Aufruf von pishrink um ein verkleinertes Image zu erstellen

    5) Kopieren dieses verkleinerten Images auf eine neue SD Karte

    6) Booten der neuen SD Karte und freuen ueber dem Umzug ;)

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert =O Bei mir tut das raspiBackup automatisch ;)

  • 4) Aufruf von pishrink um ein verkleinertes Image zu erstellen

    Das muss er aber mit der Option -s machen.

    Oder gibt es eine (funktionierende) /etc/rc.local bei dem Ubuntu-Server?

    Auf meiner Ubuntu 18.0.4 jedenfalls nicht.


    Und anschließend fehlt dann noch ein resize von Hand.


    Ganz so einfach ist das dann doch nicht.


    MfG


    Jürgen

  • Und anschließend fehlt dann noch ein resize von Hand.

    Eine SD-Karte kannst du mit raspi-config resizen. Nur eine SSD nicht. Aber soweit ich weiß, macht Raspbian das mittlerweile bei einer SD automatisch.

    Bei Ubuntu geht das natürlich nicht.


    <EDIT>

    Aber pishrink macht das automatisch

    Quote from https://www.raspberry-pi-geek.de/ausgaben/rpg/2017/08/mit-pishrink-raspi-images-platzsparend-schrumpfen/

    Auf GitHub gibt es mit PiShrink [1] ein kleines Linux-Programm, das genau diese Aufgabe übernimmt. Das Tool schnappt sich ein RasPi-Image und reduziert die Partitionsgröße auf das absolut notwendige Minimum. Noch besser: PiShrink baut in das archivierte System gleich noch ein Skript ein, das beim nächsten Booten des Systems auf einem RasPi die Partition auf den maximalen Speicherplatz ausdehnt.

  • Eine SD-Karte kannst du mit raspi-config resizen.

    Aber der TE hat kein RASPIOS, und damit auch kein raspi-config, siehe #1

    Ich möchte lediglich mein Ubuntu Server vom RsPi 4 b, von einer 128 GB Karte auf eine 32 GB Karte "klonen".

    Deshalb kam ich auf das "Handresize", und ich weiss auch, das meine Anleitung ein rotes Tuch für Mausschubser ist.

    Allerdings hat er ein Henne-Ei Problem, er kann zwar mit Windows ein Image erzeugen, das Image aber dort nicht shrinken.

    Und die SD-Karte (128GB) ist dafür zu klein, er braucht Platz für 2 128GB-Images. Das sind dann mindestens 256GB.

    Außer er nimmt eine externe Platte (500GB), kopiert sich das 128GB-Image auf die Platte, steckt sie dann an den RPi und shrinkt dann.


    MfG


    Jürgen

  • Außer er nimmt eine externe Platte (500GB), kopiert sich das 128GB-Image auf die Platte, steckt sie dann an den RPi und shrinkt dann.

    Genau das hatte hyle ja geschrieben.

    Genau, am besten die Imagedatei, die Du von der SD gezogen hast, auf eine externe Festplatte kopieren und diese an den RPi anschließen und mounten.

    Mir gings ja eigentlich nur um das anschließende resizen. Das erfolgt durch pishrink automatisch.

  • Das erfolgt durch pishrink automatisch.

    Dazu tauscht es die /etc/rc.local aus, aber die hat Ubuntu nicht.


    MfG


    Jürgen

  • 128GB da ist glaub ich meine Methode zu leicht gedacht.

    Frage ein SD-Karten leser ist vorhanden, so ein USB Teil?

    Ja habe ich.

    Okay aber so wie ich das verstanden habe kann man damit nicht das ganze System kopieren oder? Sondern nur einzelne Verzeichnisse usw..

    Genau, am besten die Imagedatei, die Du von der SD gezogen hast, auf eine externe Festplatte kopieren und diese an den RPi anschließen und mounten.

    Alles klar kannst du mir den Befehl genau für das mounten schicken?

    Alles klar super, das probiere ich nachher sofort mal.

  • Ok mein nächstes Problem mit dem Versuch es mit PiShrink zu probieren: ich habe kein USB Stick etc. der die Image Datei tragen kann. Geht es auch irgendwie mit Virtual Box? Dort Ubuntu Server rauf und es dann mit PiShrink verkleinern?

  • Ok leude, vielen dank

    Die Lösung hat super funktioniert, hat halt nur extrem lange gedauert bis Pishrink fertig war.