Nutzung von PiShrink

  • Hallo, zwar ist das Thema nicht neu, ich komme aber trotzdem nicht so recht weiter. Habe PiShrink geladen wie angegeben nach ~/bin. Laut Anleitung:

    Code
    $ wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh -P ~/bin
    $ chmod +x ~/bin/pishrink.sh
    $ pishrink.sh
    Usage: /home/user/bin/pishrink.sh [-s] imagefile.img [newimagefile.img]

    Funktioniert bis dahin auch so. Auch der Aufruf von PiShrink ergibt die erwünschte Ausgabe der Syntax. So wie oben. Also bis dahin alles OK?

    Dann folgt: (mmblk0 ist die SD-Karte im Kartenleser)

    Code
    $ sudo dd if=/dev/mmblk0 of=~/raspberry-pi.img

    Auch hier scheinbar alles ok. Image wird erstellt und hat bei mir 8GB wie eben auch die Karte.


    Aber nun das Problem: (Ich befinde mich in dem Verzeichnis wo auch das Image liegt)


    Mit "sudo pishrink.sh raspberry-pi.img raspberry-pi_2.img" erhalte ich: "Befehl nicht gefunden". Selbiges auch bei einem Versuch ohne "sudo".

    Ein testweise "sudo ~/bin/pishrink.sh raspberry-pi.img raspberry-pi_2.img" ergibt dann: "raspberry-pi.img is not a file".


    Was soll denn das nun wieder? Wo kann es hier klemmen? Was geht hier schief?

    Zusatzinfo:

    Das alles spielt sich ab unter Ubuntu auf einem Laptop.


    Danke wenn es eine Hilfe gäbe, war froh endlich eine Lösung gefunden zu haben meine Raspi Karte(n) endlich sichern zu können.


    Grüße Justuv

  • ~/bin. Laut Anleitung:

    Eher nicht. Die Anleitung sagt:

    Code
    sudo mv pishrink.sh /usr/local/bin

    Von /home Deines angemeldeten Nutzers ist keine Rede.


    Edit: zu langsam.


    Justuv : Ich vermute ja, dass Du gar nicht in dem Verzeichnis bist, wo das Image liegt. Versuche:

    sudo ~/bin/pishrink.sh ~/raspberry-pi.img ~/raspberry-pi_2.img

  • "usr/local/bin"

    /usr/local/bin - MIT führendem slash. Und dort wirds auch gefunden.


  • "Weil es im Internet steht, muss es wahr sein." Albert Einstein, Erfinder des Glühbiers


    Nö, ich lese da was von hätte, könnte und sollte. Ist aber nicht. Und mir zumindest bei Raspbian unbekannt. Letztlich ist es nur relevant, ob Du es mit absolutem Pfad aufrufen musst, oder nicht.

  • Ok, danke allen Beteiligten, "/usr/local/bin" hat's gebracht. Aufruf von PiShrink vom Ort der Imagedatei und es funktioniert.

    Danke nochmals, bin einen Schritt weiter. Nun muss nur noch die 'Rückkehr' zum Raspi funktionieren ;).

    Gruß Justuv

  • Justuv Eine kurze Erklaerung was das alles soll mit dem /, ~ und .


    / ist die Wurzel des Dateibaumes. /usr ist das Verzeichnis usr direkt unter /. usr ist das Verzeichnis direkt unter dem aktuellen Verzeichnis in dem Du bist. Mit pwd kannst Du das abfragen. Du kannst auch ./usr schreiben, denn . bezeichnet das aktuelle Verzeichnis (pwd). ~ ist die Kurzform von /home/<user> und /home/pi wenn Du als pi angemeldet bist. D.h. ~/usr ist das usr Verzeichnis was in Deinem Home Verzeichnis /home/pi steht, also /home/pi/usr.


    Also:


    1. /usr -> /usr

    2. usr <=> ./usr -> $(pwd)/usr

    3. ~/usr <=> /home/pi -> $(HOME)/usr wobei $HOME pi ist wenn Du als pi angemeldet bist


    ... hoffentlich habe ich Dich jetzt nicht noch mehr verwirrt :daumendreh2:

    "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 ;)

    Edited once, last by framp: Dummy Typos korrigiert ().

  • Ja, so prinzipiell ist mir das bekannt. . .

    Erklärt mir(!) aber noch nicht folgendes der 1. Variante:


    Vom Ort der Imagedatei aufgerufen ergibt "PiShrink.sh" als Antwort:

    "Usage: /home/user/bin/pishrink.sh [-s] imagefile.img [newimagefile.img]"


    Also wird das Script gefunden und ausgeführt und meldet sich hier wegen fehlender Angaben mit der Ausgabe seiner Syntax?


    Will ich es dann von selbigem Ort(!), mit oder ohne "suso", ausführen mit (in meinem Fall): pishrink.sh raspberry-pi.img raspberry-pi_2.img", dann erhalte ich:

    "Befehl nicht gefunden"


    Ok, also versuche ich es mit dem Pfad zu PiShrink.sh, dann ergibt das "raspberry-pi.img ist not a file"


    Aber, inzwischen geht es ja mit pishrink.sh in /usr/local/bin, aber verstehen werde ich dieses Verhalten wohl nicht. . .

    Gruß Justuv

  • Erklärt mir(!) aber noch nicht folgendes der 1. Variante:

    Es kommt hier wirklich auf jeden Buchstaben drauf an :)
    Starte doch mal

    Code
    script

    und gib dann vor jeder Deiner Eingaben

    Code
    pwd

    ein und wiederhole die Befehle. Danach

    Code
    exit

    und zeige uns die folgende Ausgabe

    Code
    cat typescript


    PS: Du hast die Datei PiShrink.sh genannt und benutzt dann pishrink.sh. Dann wird letzterer Aufruf sagen dass die Datei nicht existiert. Ich wuerde an Deiner Stelle PiShrink.sh in pishrink.sh umbenennen. Scriptnamen in mixed case sind tueckisch :no_sad:

    "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 ;)

  • Will ich es dann von selbigem Ort(!), mit oder ohne "sudo", ausführen mit (in meinem Fall): pishrink.sh .....

    Da das Script Systemprogramme verwendet, die nur der "Administrator" = root ausführen darf, muss (im Regelfall) der User pi mit "sudo" das Script aufrufen, sonst wird das Script mit einem Fehlerhinweis abgebrochen.


    Wenn es unbedingt sein muss, dass der User pi ohne "sudo" das Script ausführen können muss, kann der Eigentümer des Scriptfiles, also "root" durch einen Eintrag in die ACL (Access Control List) dem User pi gestatten sein File in seinem Namen zu verwenden. Siehe < man acl >.


    Dies könnte der User pi z.B. mit < sudo setfacl -m u:pi:r-x /usr/local/bin/pishrink.sh> veranlassen.


    Übrigens gibt es zu jedem vorinstallierten Programm (und vielen configs) eine eine Handbuchseite. Die man-page für die Filesystem hierachy kannst Du mit < man hier > einsehen ind mit < man man > wird Dir der man Befehl selbst erklärt.


    Servus !

    RTFM = Read The Factory Manual, oder so