Wie verwende ich Magic Sysreq Keys auf einem Mac?


12

Ich habe erst kürzlich von den Anforderungsschlüsseln für das magische System erfahren . Wie verwende ich sie über die Tastatur auf Macs mit einem installierten Linux-basierten Betriebssystem oder in anderen Fällen, in denen die Tastatur keinen SysReqSchlüssel hat? Gibt es eine Sequenz, die meta- entspricht SysReq, oder eine Möglichkeit, eine zu erstellen?


Ohne eine Taste, die denselben Scan-Code generiert, den Sie nicht haben, besteht die einzige Option darin echo <char> > /proc/sysrq-trigger, wo <char>sich die Taste befindet, mit der Sie zusammen drücken möchten M-SysRq. (Dies setzt natürlich voraus, dass Sie einen Kernel mit Magic SysRq ausführen, der darin kompiliert wurde und dies zuvor echo 1 > /proc/sys/kernel/sysrqin /etc/rc.localoder ähnlichem getan hat .)
Aaron Miller

1
@AaronMiller meinte ich über die Tastatur, ohne sich unbedingt eingeloggt zu haben oder so.
Schwarzlicht

In diesem Fall sollten Sie sich eine USB-Tastatur im PC-Stil mit einer SysRq-Taste suchen. Linux interpretiert den Scan-Code unabhängig von der Architektur, auf der er ausgeführt wird, richtig. In diesem Fall besteht der schwierige Teil darin, zunächst den Scan-Code zu generieren, was mit einer Standard-Mac-Tastatur nicht möglich ist.
Aaron Miller

(Andererseits scheint es wahrscheinlich, dass ein Kernel kompiliert werden könnte, um anstelle von SysRq einen anderen Scan-Code wie den Auswurftaste des Mac zu erkennen. Ich hatte nie den Drang, meinen MBP herunterzustufen, also würde ich nicht Ich weiß es nicht aus erster Hand, aber ich kann mir vorstellen, dass es jemand getan hat. Oder vielleicht sind Sie der Erste. Schließlich macht das benutzerdefinierte Hacken Ihres Kernels den halben Spaß, Linux auszuführen, oder so muss ich es verstehen.)
Aaron Miller

Nun, das wurde ziemlich lang; Kommentare konvertiert, um zu antworten.
Aaron Miller

Antworten:


7

Ohne eine Taste, die denselben Scan-Code generiert, den Sie nicht haben, besteht die einzige Option darin echo <char> > /proc/sysrq-trigger, wo <char>sich die Taste befindet, mit der Sie zusammen drücken möchten M-SysRq. (Dies setzt natürlich voraus, dass Sie einen Kernel mit Magic SysRq ausführen, der darin kompiliert wurde und dies zuvor echo 1 > /proc/sys/kernel/sysrqin /etc/rc.localoder ähnlichem getan hat .)

Wenn Sie echte magische SysRq-Funktionalität anstelle der blassen Nachahmung wünschen, die durch das Echo in zufällige / Proc-Einträge erhalten wird, sollten Sie sich eine USB-Tastatur im PC-Stil mit einer SysRq-Taste suchen. Linux interpretiert den Scan-Code unabhängig von der Architektur, auf der er ausgeführt wird, richtig. In diesem Fall besteht der schwierige Teil darin, zunächst den Scan-Code zu generieren, was mit einer Standard-Mac-Tastatur nicht möglich ist.

(Andererseits scheint es wahrscheinlich, dass ein Kernel kompiliert werden könnte, um anstelle von SysRq einen anderen Scan-Code wie den Auswurftaster des Mac zu erkennen. Ich hatte nie das Bedürfnis, meinen MBP herunterzustufen, also würde ich nicht Ich weiß es nicht aus erster Hand, aber ich kann mir vorstellen, dass es jemand getan hat. Oder vielleicht sind Sie der Erste. Schließlich macht das benutzerdefinierte Hacken Ihres Kernels den halben Spaß, Linux auszuführen, oder ich muss es verstehen.)

Update : Anscheinend kann dies über den Userspace erfolgen :

Der derzeit beste Weg ist, das Keyfuzz-Programm zu installieren (manuell zu kompilieren) und zu setzen

echo "786616 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Inc._Apple_Internal_Keyboard___Trackpad-event-kbd

zum Beispiel in Ihrem / etc / profile. Dadurch wird Alt-Eject auf einem typischen Apple Macbook Pro (meins ist Mitte 2010, 6,2) der Alt-SysRq-Kombination zugeordnet.

Wenn Sie eher nach einer altmodischen "Two-Fisted Tales of Linux" -Erfahrung suchen, gibt es einige Kernel-Patches, die mit diesem Kommentarthread verknüpft sind und Anleitungen zum erneuten Zuordnen von Schlüsselcodes auf Kernel-Ebene bieten.


+1 für Userspace- und Kernelspace-Lösungen. :) Ich würde hinzufügen, dass es ein bestimmtes Programm gibt, das Sie ausführen können (solange es sich in einem befindet tty), das Ihnen die numerischen Codes jeder Taste beim Drücken anzeigt.
Blacklight Shining

Es ist besser, den Befehl keyfuzz in eine Datei mit dem Dateinamensuffix ".sh" im Verzeichnis /etc/profile.d/ einzufügen. Es wird von / etc / profile bezogen und wird weniger wahrscheinlich durch Systemaktualisierungen und dergleichen überschrieben.
Jarno

Nach dem Anmelden wird eine Fehlermeldung angezeigt, nachdem ich den Befehl unter /etc/profile.d/ eingegeben habe: "open ('/ dev / input / by-id / usb-Apple__Inc._Apple_Internal_Keyboard ___ Trackpad-event-kbd'): Berechtigung verweigert"
jarno

Ich habe eine systemd .service-Datei erstellt und installiert, um ein Skript mit dem Befehl keyfuzz auszuführen. Ich frage mich nur, welches Ziel für das WantedBy=Feld in der .service-Datei am besten geeignet ist. `(Ich habe multi-user.target verwendet, was anscheinend gut funktioniert, bin mir aber bei Sonderfällen nicht sicher.
jarno

Dieses Handbuch scheint die Reihenfolge der Ziele zu beschreiben, aber möglicherweise ist ein Ziel zu früh, um die Aufgabe erfolgreich zu erfüllen.
Jarno

5

Diese Antwort wurde auch hier gepostet .

Nach 3 oder 4 Stunden intensiven Suchens, Lesens und Ausprobierens finden Sie hier eine gründlichere und allgemeinere Antwort, die für jeden Apple / Mac-Laptop oder jede Apple / Mac-Tastatur funktionieren sollte. In meinem speziellen Fall verwende ich diese Lösung jedoch für 2008 MacBook weiß mit Xubuntu 16.04 LTS.

Vielen Dank an Bengt Olsson für seine hervorragenden Anweisungen, die mir den nötigen Start gaben, um die fehlenden Details herauszufinden.

Diese Lösung wird im Benutzerbereich durchgeführt und erfordert NICHT das Neukompilieren des Kernels wie einige Vorschläge.

  1. Laden Sie die Quelle für Keyfuzz herunter ( http://0pointer.de/lennart/projects/keyfuzz/keyfuzz-0.2.tar.gz ) und extrahieren Sie sie (ich kann mit der rechten Maustaste darauf klicken und zu "Hier extrahieren" gehen, um sie in meinem zu extrahieren Zum Beispiel GUI-Dateimanager). Weitere Informationen zu Keyfuzz finden Sie hier . Es wird unter der Open Source-Lizenz GNU GPL 2.0 oder höher (yaaay Open Source!) Veröffentlicht.

    • Verwenden Sie kein zu tiefes Verzeichnis (oder möglicherweise mit Leerzeichen), da sonst der folgende ./configureBefehl fehlschlägt.
  2. Installieren Sie Abhängigkeiten, oder führen Sie die ./configurefolgenden Schritte aus, um einige Fehler auszuspucken:

    sudo apt-get update
    sudo apt-get install lynx xmltoman gengetopt
    
  3. Kompilieren und installieren Sie keyfuzz mit den üblichen Befehlen:

    ./configure
    make
    sudo make install
    
  4. Navigieren Sie zu /dev/input/by-idIhrer Apple-Tastatur und suchen Sie sie, die mit "-event-kbd" endet:

    cd /dev/input/by-id
    ls
    
    • Für mich ist es "usb-Apple_Computer_Apple_Internal_Keyboard ___ Trackpad-event-kbd"
  5. Fügen Sie Ihrer /etc/rc.localDatei die folgende Zeile hinzu , damit dieser Befehl jedes Mal ausgeführt wird, wenn Ihr Computer hochfährt und diesen Benutzer lädt. Beachten Sie, dass wir den oben gefundenen Apple-Tastatureintrag verwenden. Dieser Befehl verwendet Keyfuzz, um F12 oder F13 auf Ihrer Apple-Tastatur oder Ihrem Laptop dem System " Magic SysRq-Taste " für sanfte Neustarts zuzuordnen.

    • So ordnen Sie F12 SysRq zu : 458821 99. Vielen Dank an "pjjjv", dass sie das hier herausgefunden haben! https://ubuntuforums.org/archive/index.php/t-762665.html
    • So ordnen Sie F13 SysRq zu : 458856 99.
    • Da mein MacBook 2008 kein F13 hat, verwende ich die obige Option F12. Denken Sie auch daran, Ihre richtige Tastatureingabe zu verwenden, die wir oben gefunden haben. Der Befehl, den ich rc.localfür meinen Fall hinzugefügt habe, lautet : echo "458821 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Computer_Apple_Internal_Keyboard___Trackpad-event-kbd.
    • Hier ist meine gesamte /etc/rc.localDatei mit dem entsprechenden Eintrag:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

echo "458821 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Computer_Apple_Internal_Keyboard___Trackpad-event-kbd

exit 0
  1. Starten Sie neu.

Jetzt kann ich Alt + F12 drücken (oder Sie können Alt + F13 wie oben beschrieben verwenden) und REISUB ausgeben, um Ihren Computer sanft neu zu starten. Funktioniert perfekt auf meinem MacBook 2008-Laptop mit Xubuntu 16.04 LTS.

Beachten Sie, dass Sie die durch die Ausgabe von REISUB zurückgegebenen Ergebnisse sehen können, wenn Sie jede Taste drücken, indem Sie zuerst zu einer alternativen Sitzung mit springen, Ctrl+Alt+F1 (F1 through F6 work actually)bevor Sie den Befehl ausgeben. Um zu Ihrer X Window-Hauptsitzung zurückzukehren, verwenden Sie Ctrl+Alt+F7.

Wenn Sie das Ergebnis "Diese sysrq-Operation ist deaktiviert" erhalten, ist dies für einige Befehle normal, da sie ein potenzielles Sicherheitsrisiko darstellen. Das Boot sollte jedoch weiterhin funktionieren, sodass Sie Ihren Computer sanft neu starten können. Hier einige weitere Informationen dazu von mniess hier :

Ab Ubuntu 12.10 ist eine genauere Steuerung möglich, welche MagicSysRq-Funktionen aktiviert sind. Bearbeiten Sie einfach die Datei /etc/sysctl.d/10-magic-sysrq.conf .

Die Datei ist gut dokumentiert und zeigt Ihnen genau, wie Sie welche Funktionen aktivieren. Die aktuelle Standardeinstellung wurde aus Sicherheitsgründen ausgewählt und sollte nur geändert werden, wenn Sie wissen, warum dies erforderlich ist (Sicherheitsaspekte siehe Fehler Nr. 194676 ).


Bitte unterschreibe deine Beiträge nicht. Personen, die Ihr Profil anzeigen, sehen die Informationen trotzdem und die Signatur kann als Spam angesehen werden. Weitere Informationen finden Sie in der Hilfe .
bwDraco
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.