Autostart - Bashscript: Anmeldung nach Neustart nicht mehr möglich

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ich habe nach der Anleitung unter Tutorials > "Autostart per Python-Skript" ein Bash-Skript erstellt anstatt eines Python-Skripts.
    Dabei habe ich in /home/pi/ eine Datei namens test.sh erstellt mit folgendem Inhalt:

    Bash
    #!/bin/bash
    
    
    while True:
    print "Test"

    Die Datei wurde anschließend gespeichert und ich vergab die Rechte zum Ausführen per sudo chmod +x /home/pi/test.sh
    Dann bin ich ins Verzeichnis /etc/ gewechselt und habe rc.local mit sudo nano rc.local geöffnet.
    Darin habe ich nach fi und vor exit 0 eingetragen: /home/pi/test.sh und mit STRG+O gespeichert.
    Abschließend sudo reboot für den Neustart.

    Die Kiste ist neu gestartet, aber es kam das Login-Fenster mit Benutzername und Passwort.
    Das Passwort habe ich korrekt eingegeben, es lädt dann kurz etwas im Hintergrund, aber er lässt mich nicht mehr rein!
    Bei einem falschen Passwort bringt er ja eine entsprechende Fehlermeldung, also das Passwort ist definitv richtig ;)
    Der Benutzername ist Pi und das Passwort raspberry (nein, Z und Y sind nicht vertauscht).
    Als Root kann ich mich mit raspberry auch nicht einloggen. Ich habe kein Root-Passwort vergeben.

    Hat jemand eine Idee, wie ich jetzt wieder über das Desktop-tty reinkomme oder notfalls einen Reset durchführe?
    Über das tty1 - für diejenigen, die nicht wissen, was tty1 ist, mal auf dem Desktop STRG+ALT+F1 drücken ;) - komme ich aber rein bzw. bin angemeldet (automatc login).
    Dort sehe ich auch den Fehler vom Skript: /home/pi/test.sh: Zeile 5: Syntax Fehler: Unerwartetes Dateiende.


    LG
    IrishStu

  • Autostart - Bashscript: Anmeldung nach Neustart nicht mehr möglich? Schau mal ob du hier fündig wirst!

  • Wenn du via tty noch reinkommst, kannst du ja mit nano die rc.local bearbeiten und deinen Eintrag auskommentieren, bzw. löschen:

    Code
    sudo nano /etc/rc.local


    Zudem hätte ich ein & hinter dem Eintrag /home/pi/test.sh gemacht:

    Code
    /bin/bash /home/pi/test.sh &
    exit 0


    Bin kein Programmierer, aber gehört da nicht ein ; hin statt : ?
    So wie in den Beispielen:
    http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html

  • Dein PI ist dabei, auf die noch nicht vorhandene Konsole "Test" auszugeben.

    Wenn du Sachen drauf hast, die du behalten willst, und du auch noch einen anderen Linux-Computer hast, kannst du die SD-karte dort einstecken dun die zweite Partition mounten.
    Dann in der "rc.local" deinen Eintrag entfernen.

    Wenn so solches Testen willst, solltest du die Ausgabe in eine Datei (auch /dev/null) umleiten. Bei echten Dateien darauf achten, dass dieser Befehl rasend schnell schreibt, und damit das Dateisystem, auf dem diese Datei liegt, ebenso schnell voll sein wird.

    Ein "&" hinter dem Aufruf schiebt den Befehl in den Hintergrund. Hier kommt es darauf an, wie das System konfiguriert ist. Denn es kann sein, dass damit Unmengen von Einträgen im Syslog landen => volles Dateisystem.

    Computer ..... grrrrrr

  • fred0815:
    Darauf bin ich auch schon gekommen. Das Löschen mit anschließendem Reboot lässt mich leider trotzdem nicht über das Desktop-tty rein :(((
    Das & hatte ich natürlich wie in der Anleitung vorgegeben, gesetzt, hatte es nur in diesem Beitrag vergessen.

    Rasp-Berlin
    Das ist gut zu wissen, aber mir erstmal gar nicht wichtig. Ich möchte wieder wie vorher auf den Desktop per Autologin (default) gelangen.
    Durch die Änderung in rc.local ist das Login-Fenster zum ersten Mal beim Reboot erschienen.

    Trotzdem erstmal danke für eure Antworten!

  • Zur Not steckst du die SD-Karte in einen Win-Rechner mit SD-Slot und bearbeitest die cmdline.txt so ab, dass am Ende noch ein init=/bin/sh steht.
    Danach steckst du die Karte wieder in den Pi und bootest.
    Dann noch ein

    Code
    mount -o remount,rw /


    und du hast du Zugriff auf die rootpartition und kannst deine fehlerhaften Einträge wieder entfernen.
    Anschliessend noch ein

    Code
    sync
     exec /sbin/init


    und er bootet weiter, danach nicht vergessen, den Eintrag in der cmdline.txt wieder zu entfernen.

    Oder du nimmst eine Live-Linux-DVD und bootest mit dieser, dann kannst du direkt die Dateien bearbeiten.
    (Windows sieht nur die /boot Partition)
    Ansonsten hilft ein Backup einspielen. :P

  • Zitat von "IrishStu" pid='292172' dateline='1500887604'


    Das Passwort habe ich korrekt eingegeben, es lädt dann kurz etwas im Hintergrund, aber er lässt mich nicht mehr rein!

    Was heißt denn "lässt mich nicht mehr rein" genau? Bleibt der Bildschirm schwarz, ist was anderes zu sehen oder erscheint wieder das Loginfenster?

    Letzteres würde darauf hindeuten, daß die Xsession für den Nutzer aufgrund eines Fehlers abbricht. Schau doch mal in der Konsole, ob Du eine Datei '.xsession-errors' (oder so ähnlich, bin mir mit Bindestrich und Groß-/Kleinschreibung nicht mehr ganz sicher) hast und ob deren Inhalt möglicherweise einen Hinweis gibt.

  • Ich habe jetzt die SD-Karte in den Windows-Rechner gesteckt und in der cmdline.txt am Ende lediglich ein init=/bin/sh reingeschrieben und gespeichert.
    Dann steckte ich die SD-Karte wieder in den Pi und es kam Folgendes: /bin/sh: 0: can't access tty; job control turned off

    Ist ja logisch soweit. Er geht nur bis zu einem bestimmten Punkt nach dem Start. Das muss man eben wissen, was zuerst geladen wird und was zuletzt ;) .
    Dann habe ich ein

    Code
    mount -o remount,rw /

    eingegeben und sehe nun mit ls: bin boot dev etc home lib lost+found media mnt opt proc root run sbin srv sys tmp usr var
    Also ganz normal meine Sub-Root-Verzeichnisse.

    Nun schreibst du aber Folgendes:

    Zitat

    und du hast du Zugriff auf die rootpartition und kannst deine fehlerhaften Einträge wieder entfernen.

    Wie finde ich heraus, welche Einträge fehlerhaft sind?! :daumendreh2:

    Manul: Das heißt, dass er das Passwort zwar akzeptiert und die Desktop-GUI daraufhin eigentlich laden will, aber lediglich ein kleines schwarzes Fensterchen in der Größe des Login-Fensterchens aufpoppt und schließlich wieder das Loign-Fensterchen erneut Benutzername und Passwort möchte. Es erscheint also wieder das Login-Fenster.
    Wo befindet sich die xsession-errors in der Regel? Im tmp-Verzeichnis konnte ich sie schon mal nicht finden, aber dort stehen doch normalerweise die Logs drinnen, oder?!

  • Unter .xsession* wurden die letzten Änderungen am 21.07. vorgenommen, das kann es dann nicht sein, richtig?
    Ich könnte jetzt alle Dateien, die heute verändert wurden, in eine Datei schreiben und dann hoffen, dass die dabei ist, die den ganzen Schlamassel verursacht.
    Aber gibt es dazu nicht eine elegantere, weniger komplizierte und vor allem schnellere Lösung?
    Ich will ja eigentlich nur einen Autostart eines Skripts durchführen lassen. Kann ja nicht sein, dass das 3 Tage dauert...

  • Du hättest vor allem dein Script vorher manuell testen können, bevor du es in die rc.local gepackt und dann neu gebootet hast.
    Hast du die SD-Karte mal mit fsck geprüft ?
    Hast du Dateien in /lost+found ?
    Wieviel Platz ist auf der Karte ?
    Hast du evtl. etwas vergessen zu erwähnen ?
    Sind Geräte angeschlossen, oder etwas an den GPIOs ?

  • Ich hab's rausgefunden, woran es lag. Die Dateirechte für den User Pi waren auf Root gesetzt. Deshalb hat der Autologin nicht funktioniert.
    Es gibt beim Booten keine roten Meldungen, alles grün und OK. Ist fsck auszuführen dann trotzdem sinnvoll?!
    In lost+found komm ich nicht mal mit sudo rein, aber mit su- und er sagt, es befinden sich darin 20 Dateien. :)
    Karte hat genug Platz.
    Angeschlossen sind nur Maus und Tastatur.
    Nein, nichts am GPIOs, alles Standardauslieferung.

    Ich hatte beim Skript total vergessen, dass ich ja gar nicht in Python bin, sondern in Bash :D

Jetzt mitmachen!

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