it-swarm.com.de

Stoppen Sie, dass Raspberry Pi das Programm beim Booten ausführt

Ich habe versucht herauszufinden, wie man ein Programm beim Booten ausführt, aber nachdem ich erkannt habe, dass dieses Programm eine Endlosschleife ist, habe ich keine Möglichkeit herauszukommen oder zum Terminal zurückzukehren. Richtig, wenn ich dem Pi Kraft gebe, geht es direkt auf das Programm auf schwarzem Hintergrund. Ich kann mich nicht genau erinnern, was ich getan habe, um es beim Booten auszuführen. Ich glaube, ich habe an einer Stelle etwas Code hinzugefügt, der direkt über etwas steht, das "exit 0" und darunter etwas mit "esac" sagt. Ich kann mich nicht an den Befehl erinnern, der mich sogar dort hingebracht hat. (Ich bin neu bei Pi und Python und habe gerade rumgespielt ... undeutlich.)

Wenn mir jemand helfen könnte, dieses Programm zu löschen oder zu bearbeiten, damit ich die Endlosschleife reparieren kann, wäre das großartig. Ich muss die SD-Karte lieber nicht komplett mit einem frischen Raspbian überschreiben. Aber wie gesagt, ich kann beim Booten nichts tun, und Ctrl + C macht nichts und Ctrl + Alt + Delete.

BEARBEITEN: Wenn ich die SD-Karte in meinen Computer stecke, sehe ich eine Liste von 11 Dateien: Bootcode Cmdline Config Fixup Fixup_cd Ausgabe Kernel Kernel_cutdown Kernel_emergency start.elf start_cd.elf

Nichts davon bedeutet mir etwas ...

6
user2506445

Update: Sieht so aus, als wäre es mir nicht gelungen, den laufenden Bootprozess zu unterbrechen und das Skript zu stoppen.

Die einfachste Idee wäre, das pi auszuschalten, die SD-Karte zu entfernen und sie an den Desktop anzuschließen, das Skript (erneut) zu verschieben und erneut zu starten.


Während des Startvorgangs erzeugte Prozesse werden in /etc/init.d/... in Skripts gespeichert. Diese Skripts werden vom init-Prozess aufgerufen, dem ersten Prozess auf einer Linux-Maschine (PID: 1).

Aber init startet nicht alle Skripte in /etc/init.d. Dies hängt vom Run-Level ab. Auf einem Debian-System gibt es 7 Runlevels.

Für jede Ausführungsebene gibt es einen Ordner mit dem Namen:

/etc/rc0.d
...
/rc6.d

in denen Softlinks zu Skripten von /etc/init.d gespeichert sind.

Um zu verhindern, dass ein Skript bei jedem Start ausgeführt wird, löschen Sie alle Links aus diesen Ordnern. Normalerweise geschieht dies auf Debian-Systemen mit dem update-rc.d-Tool:

update-rc.d NAME_OF_INIT_SCRIPT remove

Sie sollten sich auch die Datei /etc/rc.local ansehen.

12
hek2mgl

Alt + PrintScn + k, um den Prozess zu stoppen, der von rc.local ausgeführt wird

6
user1070356

Sie können die Datei cmdline.txt. Verwenden. Zuerst müssen Sie die Datei cmdline.txt auf Ihrer SD-Karte hinzufügen oder ändern. Fügen Sie "init =/bin/sh" hinzu, starten Sie Ihren Pi neu und sehen Sie eine Eingabeaufforderung. Geben Sie 'Sudo nano /etc/rc.local' ein, um die Datei zu bearbeiten und die Datei zu kommentieren oder zu löschen Zeile, die den Fehler enthält. Nach diesem Neustart.

3
user2536152

Ich hatte genau das gleiche Problem und konnte den Vorgang nicht mit STRG + C beenden. Ich habe die cmdline.txt wie oben beschrieben bearbeitet, aber dann hat der Pi nicht die notwendigen USB-Treiber für meine Tastatur geladen.

Also loggte ich mich schließlich über SSH in das Pi ein und modifizierte meine rc.local-Datei auf diese Weise.

1
Wout Standaert

Ich hatte das gleiche Problem wie zu Beginn dieses Beitrags erklärt. Meine Python-App war in einer Endlosschleife gefangen.

Ich habe es versucht Ctrl+Alt+F2 Befehl wie in vielen Posts im Internet empfohlen, ohne dass ein Terminalfenster geöffnet ist. Anscheinend sah ich nach vielen anderen Versuchen und Neustarts jedes Mal, wenn die Schleife meiner Anwendung neu gestartet wurde, einen Blick auf ein Terminalfenster. Es war unmöglich, irgendetwas zu fangen, bis ich mit dem Zeitlupenvideo meines Handys angefangen habe, und ja, ein Terminalfenster mit der Linux-Eingabeaufforderung war aktiv und konnte Tastatureingaben akzeptieren.

Alles was ich getan habe, war (fast blind) die Täterdatei mit dem zu bearbeiten

Sudo nano filename command 

und Eingabe einiger Zeichen, um eine solche Datei tatsächlich zu beschädigen, zu speichern und zu schließen, einen Neustart des Pi. Am Ende des Startvorgangs verursachte die Datei einen Fehler, das System war jedoch weiterhin betriebsbereit.

Ich konnte den Fehler dann auf normale Weise beheben. Ich hoffe, dass dies für andere nützlich sein kann. In meinem Fall ersparte es mir, einen neuen Raspbian zu verbrennen und alle meine früheren Arbeiten zu verlieren.

0
Rambar48

Ich habe mich in genau demselben Problem festgefahren. Glücklicherweise hatte ich die ssh aktiviert, anscheinend ist diese Einstellung für Raspbian Jessie standardmäßig deaktiviert, sodass dies möglicherweise nicht für alle funktioniert.

Der Exit 0 ist die Zeile in /etc/rc.local, in die Sie das Skript eingefügt hätten, das jetzt in einem kontinuierlichen Modus ausgeführt wird. Wenn Sie mit PuTTY und der IP-Adresse des Pi eine Verbindung zum Pi herstellen können

Sudo nano /etc/rc.local

Scrollen Sie bis zum Ende der Datei und entfernen Sie das betreffende Programm. Sudo reboot

Um zu verhindern, dass dieses Problem auftritt, fügen Sie am Ende der Zeile ein & (kaufmännisches Und) hinzu, um den Prozess zu verzweigen und als separaten Prozess auszuführen

python /home/pi/myscript.py &

wie in https://www.raspberrypi.org/documentation/linux/usage/rc-local.md angegeben

Mit dem kaufmännischen Und kann der Befehl in einem separaten Prozess ausgeführt und mit dem laufenden Prozess fortgesetzt werden.

0
SudeepJD

In meinem Fall hat die Kombination "Alt" + "F4" die aktuelle Sitzung angehalten und den Anmeldebildschirm geöffnet

0
Andrey Mazur