Magic sysRQ

  • Moin,

    Gestern hatte ich den RPi3b+ zum Stillstand bekommen er läuft mit Bookworm und Desktop, zur Zeit nur auf einer SD-Karte 32Gb, was war geschehen, ich habe den KiCad Schaltplan Editor ausprobieren wollen, aber wie es kommen musste hat er geswapt und danach ging nichts mehr, habe ca. 15 Min. gewartet aber er wollte nicht mehr, ich hatte schon mit dem Gedanken gespielt ihn einfach den Stecker zu ziehen, aber da fiel mir ein es gibt ja noch die MagicRQ Sequenz, das hat sofort geklappt und der Pi hat sofort wieder gebootet ohne mir das Dateisystem zu beschädigen was beim Stecker ziehen schnell passieren kann!

    Ich kann nur Empfehlen, bevor man den Stecker zieht es damit zu versuchen!:bravo2:

    Lg Qvrgre

    Meine Pi-Familie

    RaspbeeryPi 4B 4GB Rev: 1.4, RasbianOS
    Seit 2023 noch ein Pi4 8GB mit Ubuntu 20.04 Raspberry Pi OS Bookworm 64 bit!
    Zuwachs 2025: Pi3b+ mit 7“ WS-170120 LCD-Display.

  • ..., bevor man den Stecker zieht es damit zu versuchen!

    Ja, ... und das geht auch ohne Tastatur (headless) am PI, z. B. mit einem Script via cronjob oder timer-unit oder gleichwertig.

  • MagicRQ Sequenz, das hat sofort geklappt und der Pi hat sofort wieder gebootet ohne mir das Dateisystem zu beschädigen was beim Stecker ziehen schnell passieren kann!

    Ich kann nur Empfehlen, bevor man den Stecker zieht es damit zu versuchen! :bravo2:

    Welche Tastenkombination hast Du denn genommen? Notfall-Neustart mit Alt-Druck halten und dann reisub? Wenn ja, wie macht man da eigentlich die Eingabe? Ich habe zwar große Hände, aber mit einer Hand Alt-Druck halten kann ich nicht.

    Übrigens nicht wirklich Offtopic :shy:, eher Allgemeine Software.

    There are no bugs. Any resemblance thereof is delirium. Really.
    (man lcf)

  • MagicRQ Sequenz, das hat sofort geklappt und der Pi hat sofort wieder gebootet ohne mir das Dateisystem zu beschädigen was beim Stecker ziehen schnell passieren kann!

    Ich kann nur Empfehlen, bevor man den Stecker zieht es damit zu versuchen! :bravo2:

    Welche Tastenkombination hast Du denn genommen? Notfall-Neustart mit Alt-Druck halten und dann reisub? Wenn ja, wie macht man da eigentlich die Eingabe? Ich habe zwar große Hände, aber mit einer Hand Alt-Druck halten kann ich nicht.

    Übrigens nicht wirklich Offtopic :shy:, eher Allgemeine Software.

    Ich habe AltGr und Druck, danach wie Du schon angedeutet hast R,E,I,S,U,B!

    Dann bitte verschieben hyle , Danke!

    Es fehlt nur noch ein Eintrag im Lexikon, wenn das Bitte einer machen könnte wäre toll.:saint:

    Meine Pi-Familie

    RaspbeeryPi 4B 4GB Rev: 1.4, RasbianOS
    Seit 2023 noch ein Pi4 8GB mit Ubuntu 20.04 Raspberry Pi OS Bookworm 64 bit!
    Zuwachs 2025: Pi3b+ mit 7“ WS-170120 LCD-Display.

  • Ich habe AltGr und Druck, danach wie Du schon angedeutet hast R,E,I,S,U,B!

    Ja, das steht auch im verlinkten wiki so:

    Quote
    • Workarounds, wie ⇩ num zuerst zu aktivieren oder Alt Gr anstelle von Alt zu verwenden, sind offenbar bei vielen Laptops nötig.

  • Notfall-Neustart mit Alt-Druck halten und dann reisub? Wenn ja, wie macht man da eigentlich die Eingabe? Ich habe zwar große Hände, aber mit einer Hand Alt-Druck halten kann ich nicht.

    Normalerweise genügt es, nach Alt-Druck nur noch die Alt-Taste weiterhin gedrückt zu halten. Druck kann man also loslassen und dann die weiteren Buchstaben eintippen. Alt aber die ganze Zeit unten halten!
    Zumindest am PC ist das so. Am Raspi habe ich das noch nicht ausprobiert.

  • Wie würde das konkret aussehen?

    Siehe z. B. im Beitrag #6 (EDIT): Raspberry Pi4 (4GB) startet nicht neu. Fährt auch nicht vollständig herunter.

  • Es fehlt nur noch ein Eintrag im Lexikon,

    Warum? Bzw. was ist an der Erklärung bei ubuuntuusers.de nicht gut genug?

    Gruß, noisefloor

    Es ging mir nur darum, wenn man hier im Forum ist, sucht/schaut man auch mal im Lexikon nach ob da was steht, zumindest als ich "Post #1" geschrieben habe, habe ich erst im Lexikon gesucht aber nichts gefunden, danach erst die Suchmaschine meines Vertrauens benutzt.

    Meine Pi-Familie

    RaspbeeryPi 4B 4GB Rev: 1.4, RasbianOS
    Seit 2023 noch ein Pi4 8GB mit Ubuntu 20.04 Raspberry Pi OS Bookworm 64 bit!
    Zuwachs 2025: Pi3b+ mit 7“ WS-170120 LCD-Display.

  • Siehe z. B. im Beitrag #6

    D.h. in dem Script müßte noch ein Check rein dass das System nicht responsible ist - oder?

    Ja. Was man noch machen kann ist, das ausführen des Scripts vom "negativen" event abhängig machen. Man kann das Script auch mit geeigneter watchdog-Software benutzen.

  • Irgendwie war ich neugierig und habe hangwatch auf dem Raspi ausprobiert.

    Da es ursprünglich von einem RedHat-Mitarbeiter kommt, ist es RPM-zentriert und außerdem "etwas" älter. Macht aber nichts...

    Den C-Code zu compilieren war kein Problem.
    Die Installation auch nicht wirklich: es mussten nur ein paar Dateien von Hand in bestimmte Verzeichnisse gestellt bzw. Verzeichnisse angelegt werden.

    Interessanter war dann der automatische Start. Mitgeliefert wird nur ein spezielles Script für /etc/rc.d/init.d/.

    systemd liest diese alten Scripte ja ein und baut daraus ad-hoc Units. Das klappt aber mit diesem Script nicht wirklich. Erst nach diversen Anpassungen ging es dann. Für einen echten Einsatz von hangwatch macht es wohl Sinn, eine eigene systemd-Unit zu schreiben. Vielleicht morgen...

    Aktueller Stand: Manuell gestartet macht hangwatch das Versprochene:
    Abhängig von einem konfigurierbaren "load average" erzeugt es ebenfalls konfigurierbare Magic-SysRq's.

    Beim Raspi scheint "REISUB" allerdings nicht die optimale Wahl zu sein. Ich experimentiere noch...

    Korrektur: Bei der Nutzung von hangwatch ist das "EI" in "REISUB" kontraproduktiv, da dadurch alle Prozesse beendet werden.
    Inklusive hangwatch selbst. Und so kommt das "SUB" (also u.a. das eigentlich Booten) nicht mehr zum Zuge. "RSUB" geht.

    Edited 2 times, last by simonz (January 25, 2025 at 9:52 PM).

  • Korrektur: Bei der Nutzung von hangwatch ist das "EI" in "REISUB" kontraproduktiv, da dadurch alle Prozesse beendet werden.

    <g> Das habe ich in einem Bash-Skript auch bemerkt.

    Normalerweise genügt es, nach Alt-Druck nur noch die Alt-Taste weiterhin gedrückt zu halten. Druck kann man also loslassen und dann die weiteren Buchstaben eintippen. Alt aber die ganze Zeit unten halten!
    Zumindest am PC ist das so. Am Raspi habe ich das noch nicht ausprobiert.

    Ich jetzt aber, geht, danke. Die Tastatur kann auch nachträglich angesteckt werden. Wichtig, da der Raspi hier via VNC bedient wird.

    Ich hatte in mehreren Versuchen (ca. 10) zweimal merkwürdige Effekte. Einmal konnte der Raspi nicht mehr über VNC und ssh angesprochen werden, ließ sich aber noch anpingen. Behoben mit erneuter Eingabe der Tastenkombination. Und einmal konnte ich mich per TigerVNC wieder anmelden, aber das Dateisystem war nicht mehr beschreibbar, also RO gemounted. Leider keine Screenshots gemacht. Behoben durch Reboot ausgelöst über die grafische Oberfläche.

    There are no bugs. Any resemblance thereof is delirium. Really.
    (man lcf)

  • Installation von hangwatch

    Ein Tool zum automatischen Booten des Raspberry Pi, wenn er wegen Überlast hängt/nicht mehr bedienbar ist.

    Ausprobiert auf einem Raspberry Pi 3 Model B Plus mit einem per Rpi-Imager installiertem Raspberry Pi OS Bookworm Desktop 32 Bit.

    Zum Syncen des Filesystems und finalen Booten werden Sequenzen von Magic-SysRq (https://en.wikipedia.org/wiki/Magic_SysRq_key) verwendet.

    hangwatch (https://github.com/jumanjiman/hangwatch) ist ein ursprünglich von einem RedHat-Mitarbeiter geschriebenes Programm. Daher ist die originale Einbindung ins System stark RedHat/Fedora (RPM) zentriert. Und (aufgrund des Alters?) wird dort noch rc.d und nicht systemd verwendet.

    Hier beim Einsatz auf dem Raspberry Pi habe ich eine stark vereinfache Installation und systemd genutzt.
    Dadurch fällt allerdings zur Zeit ein Teil der Konfigurationmöglichkeiten weg bzw. muss/kann dann noch anders gelöst werden.

    1.) Compile und Installation

    Bash
    mkdir ~/sw 
    cd ~/sw 
    git clone https://github.com/jumanjiman/hangwatch.git 
    cd hangwatch/src 
    make 
    sudo cp hangwatch /usr/sbin 
    sudo chown root:root /usr/sbin/hangwatch

    2.) Ausprobieren

    Bash
    hangwatch -h

    Das sollte herauskommen:

    3.) Parameter ermitteln

    Laut Dokumentation von hangwatch sollte der threshold mindestens CPUs + 1 betragen.

    Bash
    grep processor /proc/cpuinfo

    Ergebnis z.B.:

    Code
    processor       : 0 
    processor       : 1 
    processor       : 2 
    processor       : 3

    Also nehmen wir mal "5".

    Die übliche Magic-SysRq Sequenz "REISUB" ist bei der Verwendung per Software nicht sinnvoll. Das "EI" in "REISUB" stoppt nämlich alle Prozesse, inklusive hangwatch selbst. Und so käme das "SUB" (also u.a. das eigentlich Booten) nicht mehr zum Zuge. "RSUB" funktioniert aber.

    4.) Test-Einsatz

    Das "-n" hält das Programm hangwatch hier beim Testen im Vordergrund:

    Bash
    sudo hangwatch -s rsub -t 5 -i 1 -n

    5.) Stresstest

    In einem zweiten Terminal wird nun etwas Dampf gemacht:

    Bash
    sudo apt install stress
    Bash
    stress --cpu 6


    Sehr informativ ist z.B. ein parallel laufendes htop!

    Dort ist der (gelb markierte) Load Average Wert zu sehen, auf den hangwatch achtet.

    Wenn alles klappt, wird nach einiger Zeit hangwatch aktiv, meldet das und rebootet den Raspi. Bei mir nach ca. 1-2 Minuten.

    Achtung:
    Natürlich muss der threshold Wert später den eigenen Bedürfnissen angepasst werden, also in der Regel deutlich höher sein.
    Ansonsten schlägt der Reboot schon zu früh zu...

    6.) Autostart per systemd

    Bash
    sudo systemctl edit --force --full hangwatch

    Und dort eintragen:

    Code
    [Unit] 
    Description=hangwatch 
    [Service] 
    Type=simple 
    ExecStart=/usr/sbin/hangwatch -s rsub -t 5 -i 1 
    RemainAfterExit=yes 
    [Install] 
    WantedBy=default.target

    Dann:

    Bash
    sudo systemctl enable --now hangwatch
    sudo systemctl status hangwatch

    Ergebnis:


    Nachtrag:

    7.) watchdog

    *hangwatch* könnte als Alternative oder Ergänzung zu *watchdog* aus dem Debian Repository genutzt werden.

    Bash
    apt show watchdog 

    Den *watchdog* habe ich aber bisher noch nie benutzt.

    Edited 5 times, last by simonz (January 26, 2025 at 9:00 PM).

  • Ist das so etwas wie der watchdog, ...

    Ja, ... und kann auch mit einer forkbomb getestet werden.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!