Benutzung eines USB Sticks oder einer USB Platte für die Rootpartition

  • Hallo,


    wenn ich die root Partition auf dem Stick habe und eine Backup von meiner sd boot Partition mache, kann ich dieses Backup dann auf eine andere sd Karte zurückspielen ?


    Hintergrund, ich habe bisher eine 32GB Karte im Raspi und würde diese gern durch eine 4 oder 8 GB ersetzen.


    Schon einmal Danke !

  • Ja, das geht.


    Ich hatte auch eine 4GB SD Karte mit nur der boot Partition. Mit dd habe ich die Bootpartition gesichert und dann auf einer 512MB SD Karte restored. Jetzt ist die 4GB SD Karte wieder frei für andere Sachen. 100MB reichen fuer die Bootpartition.

    Vergiss nicht Deine Raspberry regelmäßig mit raspiBackup zu sichern ;)

    Darum gebe ich keinen Support per PN und auch nicht auf der Pinwand !

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


  • ich muss das Thema nochmal aufgreifen.
    Ich habe das Script bereits mehrfach und erfolgreich genutzt.


    Jetzt habe ich einen neuen Raspi 2 mit Raspian Jessie fertig gemacht und wollte auch hier wieder mit einer HDD arbeiten.
    Aber das Script weigert sich die Partition zu kopieren




    Hier das ganze nochmal mit -d DEBUG
    raspiSD2USB.txt


    mach ich irgendwas noch falsch ? oder übersehe etwas ?
    Danke schon mal im voraus..

  • Vielen Dank cybertron für den Hinweis und das Log. Du hast keinen Fehler gemacht.


    Wie sich zeigt haben sich mit Jessie Ausgaben geändert bzw es sind neue Ausgaben dazugekommen. Deshalb gab es verschiedene Parsingprobleme und das Script funktionierte nicht mehr wie gewünscht.


    Ich habe eine neue Version 0.2.3 die die neuen Ausgabeformate berücksichtigt uploaded.


    Wenn es immer noch Probleme geben sollte einfach das Log mit DEBUG hier bereitstellen.

    Vergiss nicht Deine Raspberry regelmäßig mit raspiBackup zu sichern ;)

    Darum gebe ich keinen Support per PN und auch nicht auf der Pinwand !

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


    Edited once, last by framp ().

  • Hallo Framp


    im Anhang nochmal ein log mit Debug.
    Habe es gerade mit einem weiteren Raspi versucht.
    Wie gehabt wieder mit dem aktuellen Raspian Jessie.


    Ergebnis war wie gehabt.



    Gruss Cybertron


    raspiSD2USB.txt

  • Hm ... Du benutzt immer noch die alte Version 0.2.2

    Code
    raspiSD2USB.py V0.2.2 2015-06-14/21:07:55 7543891


    Die neue Version ist 0.2.3. Ich habe noch mal getestet - sie steht im Netz :s


    Code
    raspiSD2USB.py V0.2.3 2015-12-03/22:52:31 9002706


    Download Link

    Vergiss nicht Deine Raspberry regelmäßig mit raspiBackup zu sichern ;)

    Darum gebe ich keinen Support per PN und auch nicht auf der Pinwand !

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


    Edited once, last by framp ().

  • Guten Morgen,



    ich habe auch ein paar Fragen zu meinen Problemen mit booten auf USB.


    Den Pi habe ich komplett neu aufgesetzt mit Jessie. Ein paar Kleinigkeiten installiert (apache, php,....) und wollte dann in Zukunft auf USB booten.
    Das Skript ist so leider nicht durchgelaufen. Fehlermeldung: Keine mögliche Ziel root Partition gefunden.


    Per Hand konnte ich alles soweit einrichten. Komisch war nur, dass im /mnt/ Verzeichnis alles verschachtelt war. Die Option --exclude=/mnt/*
    im Befehl:

    Code
    sudo tar cf - * --one-file-system --exclude=/mnt/*  --exclude=/proc/* --exclude=/lost+found/* --exclude=/sys/* --exclude=/media/* --exclude=/dev/* --exclude=/tmp/* --exclude=/boot/* --exclude=/run/* | ( cd /mnt; sudo tar xfp -)


    hat offensichtlich nicht funktioniert. War aber erst mal kein Beinbruch.
    Als ich dann die cmdline.txt änderte ging es los.
    booten geht nur mit root=/dev/sda1. Mit PARTUUID oder UUID geht es nicht. Wäre auch nicht so schlimm, wenn ich nicht noch einen zweiten USB anschließen wollte. wenn ich jetzt mit root=/dev/sda1 boote kann es sein dass ich Glück habe. Wenn nicht, muss ich umstellen auf root=/dev/sdb1. Naach einem reboot gehts wieder nicht. Dann muss ich wieder umstellen auf root=/dev/sda1.


    Warum funktioniert das nicht mit PARTUUID oder UUID


    Hier mal die verschiedenen Versionen der cmdline.txt


    Code
    #dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
    #dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/UUID=719b7cbe-4de8-4d30-accd-16952a0ff1a1 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
    #dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
    #dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/PARTUUID=773b0c35-8d08-48d9-99f5-998343029c79 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
    #dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/sdb1 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait


    blkid liefert mir folgendes:


    Code
    /dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="86EA-017B" TYPE="vfat" PARTUUID="ea0e7380-01"
    /dev/mmcblk0p2: UUID="ad6203a1-ec50-4f44-a1c0-e6c3dd4c9202" TYPE="ext4" PARTUUID="ea0e7380-02"
    /dev/sda1: LABEL="DATEN01" UUID="816C-5C9F" TYPE="vfat" PARTUUID="9f998b26-01"
    /dev/sdb1: LABEL="USB01" UUID="719b7cbe-4de8-4d30-accd-16952a0ff1a1" TYPE="ext4" PARTUUID="773b0c35-8d08-48d9-99f5-998343029c79"
    /dev/mmcblk0: PTUUID="ea0e7380" PTTYPE="dos"


    hat mir einer einen Tipp??
    kann es sein, dass es mit jessie anderst geht??

  • Du hast leider nicht die Meldungen gepostet die Du bekommst wie auch kein Log. Damit machst Du die Analyse unnötig schwer für mich. Aber Deiner Beschreibung nach solltest Du vom Script aber eine entsprechende Fehlermeldung bekommen haben. Bei mir sieht es z.B. wie folgt aus:



    Du hast vermutlich auch die Meldung RSD0016I bekommen. D.h. Du musst eine Partitionstabelle vom Type gpt haben wenn Du mehrere Devices an der Raspi hast und deshalb Partuuids benutzen musst. Mit gdisk kannst Du den Partitionstyp von msdos nach gpt umwandeln ;) . Dann wirst Du auch das Script benutzen können.


    Achte auch darauf dass die Partition, die Du als neue Rootpartition benutzen willst, gemounted sein muss. Ansonsten bekommst Du


    die Meldung RSD0013I. Vielleicht hast Du auch die bekommen und übersehen :shy: Erst danch bekommst Du die RSD0016I.
    Automatisch zusammengefügt:[hr]
    PS: meigrafd hat übrigends in diesem Beitrag auf die Problematik mit mehreren Devices hingewiesen und auf die Lösung mit gpt und partuuids. Daraufhin habe ich ja das Script in Python umgeschrieben weil mir das mit bash zu pfriemelig wurde.

    Vergiss nicht Deine Raspberry regelmäßig mit raspiBackup zu sichern ;)

    Darum gebe ich keinen Support per PN und auch nicht auf der Pinwand !

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


    Edited once, last by framp ().

  • Guten Morgen und DANKE,


    framp
    sorry, wollte es nicht unnötig schwer machen, den Stick konnte ich ja auch manuell einrichten mein Hauptproblem war je eher die Sache mit der UUID aber der Vollständigkeit halber hier nochmals die Ergebnisse der einzelnen Schritte vielleicht ist da ja die Ursache für die Schwierigkeiten.


    ich hab alles nochmal zurückk auf "Null" gesetzt. Jessie per Image neu auf SD gespielt. Konfig ausgeführt und ein paar Progs (apache2, php, rrdtool, ...) installiert. Leeren USB Stick mit gpt Partitionstabelle, ohne Partition eingesteckt.


    Ergebnis von blkid:



    Ergebnis von raspiSD2USB.py:


    Ergbnis Log:


    mit "sudo gdisk /dev/sda" habe ich nun eine Partition angelegt (Optionen n dann w) (übrigens, ist gdisk standardmäßig bei jessie nicht installiert ;) )
    Ergebnis blkid:


    Ergebnis raspiSD2USB.py:



    Ergebnis Log:




    hmm was nun? die Anregungen zu UUID aus dem Beitrag von meigrafd werde ich mir gleich noch anschauen.
    Danke!!

  • Vielen Dank für die ausführlichen Infos. Leider benutzt Du immer noch die alte Version 0.2 :s Die aktuelle ist 0.2.3.1. Du musst schon diese runterladen und benutzen ;) .


    Am Log sieht man dass Du die Zielpartition nicht gemountet hast. Die neue Version schreibt dann auch eine Warnung.


    Ausserdem würde der Parameter -d DEBUG noch mehr Infos ins log schreiben. Ich schicke Dir meine eMail per PN. Solltest Du mit der Version 0.2.3.1 immer noch Probleme haben schicke mir an die email bitte die Logausgabe mit -d DEBUG.

    Vergiss nicht Deine Raspberry regelmäßig mit raspiBackup zu sichern ;)

    Darum gebe ich keinen Support per PN und auch nicht auf der Pinwand !

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


  • Es hat jetzt mit raspiSD2USB.py bei F11 geklappt. Das Problem lag primär darin, dass die neue externe RootPartition nicht auf einem gpt Filesystem gelegen hat. Nachdem dieses vorlag funktionierte alles. Ich nehme das zum Anlass das Tutorial noch etwas zu erweitern und zu beschreiben wie man vom mbr zu einem gpt kommt.

    Vergiss nicht Deine Raspberry regelmäßig mit raspiBackup zu sichern ;)

    Darum gebe ich keinen Support per PN und auch nicht auf der Pinwand !

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


  • Code
    sudo tar cf - * --one-file-system --exclude=/mnt/*  --exclude=/proc/* --exclude=/lost+found/* --exclude=/sys/* --exclude=/media/* --exclude=/dev/* --exclude=/tmp/* --exclude=/boot/* --exclude=/run/* | ( cd /mnt; sudo tar xfp -)


    funktioniert nicht!


    tar: Ungültige Option -- „*“
    „tar --help“ oder „tar --usage“ gibt weitere Informationen.
    tar: Das sieht nicht wie ein „tar“-Archiv aus.
    tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler

  • Und? Selber Schuld wenn Du es derart änderst dass es dann halt nicht mehr funktioniert :fies:


    Im Original Script steht kein *
    Im Original steht[code=php] command = "tar cf - --one-file-system --checkpoint=1000 %s | ( cd %s; tar xfp -)" % (sourceDirectory, targetDirectory)[/php]


    Die ganzen * in deinen exclude's sind ebenfalls überflüssig


    --exclude=PATTERN

  • Für alle die hier auch scheitern, aber dennoch endlich eine Linux Distribution von der USB-Festplatte haben möchten: Ich empfehle bootberry. Genauer BootBerry 2. einfach mal danach im Netz suchen. Das ermöglicht eine odere mehrere Linux Distributionen von SD oder USB zu starten. Es lädt hierzu direkt vom Internet herunter. Es funktioniert einfach wunderbar. Stressfrei.

    Edited once, last by D*Pi ().


  • Und? Selber Schuld wenn Du es derart änderst dass es dann halt nicht mehr funktioniert :fies:


    Im Original Script steht kein *


    Nein, aber im ersten Artikel - dem Tutorial - von mir. Da stand der * drin. War mein Fehler. Allerdings wundert mich etwas dass der Fehler erst jetzt entdeckt wird. Dieser Thread ist schon ziemlich alt :s

    Vergiss nicht Deine Raspberry regelmäßig mit raspiBackup zu sichern ;)

    Darum gebe ich keinen Support per PN und auch nicht auf der Pinwand !

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


  • Hallo,
    ist zwar ein älterer Faden, aber das Skript ist ja noch aktuell. Ich habe einen RasPi 3 mit einem PiDrive, auf dem ein mSata-LW von SanDisk (SDSA6DM-016G) montiert ist.
    Nur zur Info, Bonnie:

    Code
    Version  1.97       ------Sequential Output------ --Sequential Input- --Random-
    Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
    Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
    DietPi           2G   148  99 34996  16 16941  11   856  99 42663  12  2456  82
    Latency             60063us     624ms    1223ms   24616us   42582us   32130us
    Version  1.97       ------Sequential Create------ --------Random Create--------
    DietPi              -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
                  files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                     16 13704  69 +++++ +++ 17321  70 14366  70 +++++ +++ 17451  70
    Latency              8695us    1806us    3461us     461us      54us    1026us



    Da der RasPi 3 von USB booten kann (sobald mal die nötigen Anpassungen an FW und Distri gemacht sind) finde ich die Kombi richtig gut. Da ich aber nicht warten will, habe ich schon mal DietPi auf eine SD-Card installiert und danach mit Deinem Skript auf das mSata-LW kopiert. Funktionierte, soweit ich sehen konnte, ohne Probleme. Der RasPi bootet auch (macht Spaß, die Meldungen so schnell über den Bildschirm flitzen zu sehen...)


    Blöd ist jetzt nur, dass die Root-Partition Read-Only gemountet wird. Das scheint daran zu liegen, dass in der fstab der Eintrag mit "PARTUUID=Eintrag-der-unter-/dev/disk/by-partuuid/-steht" steht. Nach Änderung auf "UUID=Eintrag-der-unter-/dev/disk/by-uuid/-steht" funktioniert es.



    Cheers
    /H.

  • Vielen Dank für den Hinweis und wie Du es gefixed hast.


    Allerdings verstehe ich bislang nicht was diese Änderung mit dem read-only zu tun hat. Darüber wird nur die zu mountende Partition entweder per uuid oder partuuid definiert. partuuid wird bei gpt benutzt während uuid bei mbr benutzt wird. Man muss partuuid benutzen wenn man mehrere Platten angeschlossen hat.


    Kannst Du mal bitte die Ausgabe von

    Code
    parted -l -m

    zeigen?

    Vergiss nicht Deine Raspberry regelmäßig mit raspiBackup zu sichern ;)

    Darum gebe ich keinen Support per PN und auch nicht auf der Pinwand !

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



  • Allerdings verstehe ich bislang nicht was diese Änderung mit dem read-only zu tun hat.


    Bei mir steht in /etc/fstab:

    Code
    UUID=f2e72961-0347-4358-a550-c3d0e0479e5b  /  ext4    defaults,noatime  0  1


    Das sechste Feld (fs_passno) ist bei mir "1", das Filesystem wird also zunächst read-only gemounted und erst nach einem fehlerfreien File System Check dann rw. Das geht anscheinend mit PARTUUID schief? So habe ich die Meldungen in journalctl gedeutet (habe ich leider nicht mehr).



    Quote

    Kannst Du mal bitte die Ausgabe von

    Code
    parted -l -m

    zeigen?


    bitte schön:



    Quote

    Darüber wird nur die zu mountende Partition entweder per uuid oder partuuid definiert. partuuid wird bei gpt benutzt während uuid bei mbr benutzt wird. Man muss partuuid benutzen wenn man mehrere Platten angeschlossen hat.


    Ich habe folgendes dank g**gle gefunden:

    Quote

    PARTUUID/PARTLABEL identifies a GPT partition. UUID/LABEL identifies a filesystem.
    PARTUUID/PARTLABEL have the advantage that they don't change if your reformat the partition with another filesystem. It's also useful if you don't have a filesystem on the partition.


    Wenn das richtig ist und ich das richtig verstehe, wird die zu mountende Partition per PARTUUID definiert (zumindest bei GPT) und das zu mountende Filesystem per UUID. Da ich ein Filesystem mounten will, passt das ja. Hier sieht mann die unterschiedlichen UUID und PARTUUID:

    Code
    root@DietPi:/etc# blkid
    /dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="DIETPI" UUID="70D8-A768" TYPE="vfat" PARTUUID="0313e829-01"
    /dev/mmcblk0p2: UUID="859cf567-e7d3-4fa7-82b8-cb835cd272c6" TYPE="ext4" PARTUUID="0313e829-02"
    /dev/sda1: SEC_TYPE="msdos" UUID="4DE6-54D3" TYPE="vfat" PARTLABEL="BOOT" PARTUUID="ebc5f26b-4c3f-4cf8-bc02-19fc805273fe"
    /dev/sda2: UUID="f2e72961-0347-4358-a550-c3d0e0479e5b" TYPE="ext4" PARTLABEL="ROOT" PARTUUID="eeafd7e9-bdbd-436c-b561-df4fab6d1255"
    /dev/mmcblk0: PTUUID="0313e829" PTTYPE="dos"


    Hier [https://forums.linuxmint.com/viewtopic.php?f=90&t=162677] gibt es jemanden, der das gleiche Problem hat.


    EDIT: G**gle liefert mir noch folgendes:

    Quote

    I did have a problem with using your suggested format for /etc/fstab. I'm running Fedora 20 and when I used "gdisk" to get the PARTUUID, it gave me the string in ALL CAPS. It seems that mount wants to digest the PARTUUID string in lower case form as explained in the man page entry for fstab as published by the Linux kernel development team: This man page is part of the util-linux package and is available from ftp://ftp.kernel.org/pub/linux/utils/util-linux/.


    Demnach müsste PARTUUID auch funktionieren, wenn Kleinbuchstaben verwendet werden. Probieren will ich das jetzt aber nicht mehr...



    /H.

  • Vielen Dank c64emulator für die detailierten Infos und Links!


    Ich bin gerade etwas im Stress - sehe mir das aber später mal genauer an. Genaugenommen bräuchtest Du ja auch keine PARTUUID, da Du nur eine USB Platte angeschlossen hast. Das Script benutzt aber immer PARTUUID wenn ein gpt benutzt wird - was ja auch bei Dir der Fall ist. Vielleicht muss ich da auch die Logik im Script noch etwas anpassen. Dazu muss ich mir aber das Ganze noch genauer ansehen und verstehen.

    Vergiss nicht Deine Raspberry regelmäßig mit raspiBackup zu sichern ;)

    Darum gebe ich keinen Support per PN und auch nicht auf der Pinwand !

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


  • c64emulator: Eben bin ich auf folgenden Beitrag im englischsprachigen Raspberryforum gestossen wo jemand unabhängig von mir auch alle Schritte im einzelnen beschrieben hat wie man das Rootfilesystem umzieht.


    Er beschreibt das so, dass in der cmdline.txt

    Code
    root=PARTUUID=

    stehen soll und in der fstab

    Code
    /dev/disk/by-uuid

    was ja auch Deinem

    Code
    UUID=

    entspricht und dem entspricht was Du als Fix berichtet hast. Allerdings funktioniert es bei mir definitiv mit partuuid auf einer meiner Raspis wo ich von einer 512MB SD Karte boote und zwei USB Platten angeschlossen habe. :)


    Aber in dem Beitrag wird ausdrücklich auf folgenden Parameter in der cmdline.txt hingewisen:

    Code
    rootdelay=5

    damit das OS etwas länger wartet bis sich das Gerät am USB Anschluss initialisiert hat. Ich könnte mir vorstellen, dass das das u.U. der Grund ist warum die Partition bei dir r/o war.
    Vielleicht hast Du ja mal irgendwann etwas Zeit und kannst das bei Dir ausprobieren - also auf partuuid in der fstab umstellen und rootdelay in der cmdline.txt einfügen. Ich kann leider Dein Problem bei mir nicht reproduzieren =(


    Auch erwähnt er

    Code
    max_usb_current=1

    . Ich denke das hat aber weniger mit Deinem Problem zu tun.

    Allerdings verstehe ich noch nicht warum es dann ohne diesen Parameter in Deiner cmdline.txt mit uuid funktioniert wenn der Parameter rootdelay Dein Problem fixed :s

    Vergiss nicht Deine Raspberry regelmäßig mit raspiBackup zu sichern ;)

    Darum gebe ich keinen Support per PN und auch nicht auf der Pinwand !

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