Nutzung von PiShrink

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • 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.

    Spoiler anzeigen

    pi@raspberrypi:~ $ echo $PATH

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

  • "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.

  • Da fehlt doch was. ;)

    Aber nur, wenn Du es im gleichen Pfad ausführen willst. Sonst entweder nach /usr/local/bin, was in $PATH steht oder /Pfad/zum/Skript/pishrink.sh.

    • Offizieller Beitrag

    Ja sorry, ich hatte mich verlesen.

    Zitat

    Ich befinde mich in dem Verzeichnis wo auch das Image liegt

    Statt Image las ich Script. War bestimmt ein freudscher Verleser. :shy:

    //Edit: Absolute Pfade für alles wäre fehlerunanfälliger.

  • 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:

    :no_sad: ... Kein Backupkein Mitleid ... :no_sad:
    :) Nutze lieber raspiBackup bevor Du in die Luft 💥 gehst wie ein HB Männchen :)

    Einmal editiert, zuletzt von framp (29. April 2019 um 22:35) aus folgendem Grund: 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:

  • 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

Jetzt mitmachen!

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