web-dev-qa-db-ja.com

Macでマジックsysrqキーを使用するにはどうすればよいですか?

魔法のシステム要求キー について最近知りました。 LinuxベースのOSがインストールされているMacのキーボードから、またはキーボードにキーボードがない場合に、キーボードからそれらを使用するにはどうすればよいですか? SysReq キー?に相当するシーケンスはありますか meta-SysReq、またはそれを作成する方法?

12

持っていない同じスキャンコードを生成するキーがない場合、唯一のオプションはecho <char> > /proc/sysrq-triggerです。ここで、<char>M-SysRqと一緒に押すキーです。 (もちろん、これは、マジックSysRqがコンパイルされたカーネルを実行していて、以前にecho 1 > /proc/sys/kernel/sysrqなどで/etc/rc.localを実行したことを前提としています。)

ランダムな/ procエントリにエコーすることによって得られる淡い模倣ではなく、本当の魔法のSysRq機能が必要な場合は、SysRqキーを備えたPCスタイルのUSBキーボードを見つける必要があります。 Linuxは、実行されているアーキテクチャに関係なく、スキャンコードを適切に解釈します。この場合、注意が必要なのは、最初にスキャンコードを生成することです。これは、標準のMacキーボードからは実行できません。

(一方、SysRqの代わりにMacのイジェクトキーなどの別のスキャンコードを認識するようにカーネルをコンパイルできる可能性があります。MBPをダウングレードしたいという衝動を感じたことは一度もないので、そうしませんでした。直接知っているのですが、誰かがやったと思います。あるいは、おそらくあなたが最初になるでしょう。結局のところ、カーネルをカスタムハッキングすることは、Linuxを実行する楽しみの半分なので、理解することができます。)

更新:どうやらこれは実行できます ユーザースペースから

現在のところ、最善の方法は、keyfuzzプログラムをインストール(手動でコンパイル)して、

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

たとえば、/ etc/profileにあります。これは、典型的なApple Macbook Pro(私の2010年半ば、6、2))のAlt-EjectをAlt-SysRqの組み合わせにマッピングします。

もっと古臭い、 "Two-Fisted Tales of Linux"のような経験を探しているのなら、そのコメントスレッドからリンクされたいくつかのカーネルパッチがあり、カーネルレベルでのキーコードの再マッピングのガイダンスを提供します。

7
Aaron Miller

この答え ここにも投稿されています

3時間または4時間のハードな検索、読み取り、試行錯誤の後、これはすべてのAppleで機能する、より徹底的で一般的な答えです/Macラップトップまたはキーボードただし、私の特定のケースでは、Xubuntu 16.04LTSを実行している2008MacBookホワイトにこのソリューションを使用しています。

Bengt Olssonの優れた説明をここに掲載 に感謝します。欠けている詳細を理解するために必要な出発点が得られました。

このソリューションはユーザー空間で行われ、いくつかの提案のようにカーネルを再コンパイルする必要はありません。

  1. Keyfuzzのソースをダウンロードし( http://0pointer.de/lennart/projects/keyfuzz/keyfuzz-0.2.tar.gz )、解凍します(右クリックして[抽出]に移動しますここで」、たとえば私のGUIファイルマネージャーでそれを抽出します)。 keyfuzzの詳細については、 ここを参照 。 GNU GPL 2.0以降のオープンソースライセンス(yaaayオープンソース!)でリリースされています。

    • 深すぎる(またはスペースがある可能性のある)ディレクトリを使用しないでください。使用しないと、以下の_./configure_コマンドが失敗します。
  2. 依存関係をインストールしないと、以下の_./configure_を実行すると、いくつかのエラーが発生する可能性があります。

    _Sudo apt-get update
    Sudo apt-get install lynx xmltoman gengetopt
    _
  3. 通常のコマンドでkeyfuzzをコンパイルしてインストールします。

    _./configure
    make
    Sudo make install
    _
  4. _/dev/input/by-id_に移動し、「-event-kbd」で終わるAppleキーボードを見つけます。

    _cd /dev/input/by-id
    ls
    _
    • 私にとっては「usb-Apple_Computer_Apple_Internal_Keyboard ___ Trackpad-event-kbd」です
  5. 次の行を_/etc/rc.local_ファイルに追加して、コンピューターが起動してこのユーザーをロードするたびにこのコマンドが実行されるようにします。上で見つけたAppleキーボードエントリを使用していることに注意してください。このコマンドは、keyfuzzを使用してAppleキーボードまたはラップトップのF12またはF13をシステム " Magic SysRq key "、ソフトリブート用。

    • F12をSysRqにマップするには:_458821 99_。ここでそれを理解してくれた「pjjjv」に感謝します! https://ubuntuforums.org/archive/index.php/t-762665.html
    • F13をSysRqにマップするには:_458856 99_。
    • 私のMacBook2008にはF13がないので、上記のF12オプションを使用しています。また、上記で見つけた適切なキーボードエントリを使用することを忘れないでください。私の場合のために_rc.local_に追加したコマンドは、_echo "458821 99" | keyfuzz -s -d /dev/input/by-id/usb-Apple_Computer_Apple_Internal_Keyboard___Trackpad-event-kbd_です。
    • これが私の適切な_/etc/rc.local_ファイル全体です。
_#!/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. リブート。

これで、Alt + F12を押して(または上記のようにAlt + F13を使用できます)、REISUBを発行してコンピューターをソフトリブートできます Xubuntu 16.04LTSを実行している私のMacBook2008ラップトップ。

コマンドを発行する前に、最初にCtrl+Alt+F1 (F1 through F6 work actually)を使用して別のセッションにジャンプして各キーを押すと、REISUBを発行して返される結果を確認できることに注意してください。メインのX Windowセッションに戻るには、_Ctrl+Alt+F7_を使用します。

「このsysrq操作が無効になっています」という結果が表示された場合、セキュリティ上のリスクが生じる可能性があるため、いくつかのコマンドでは正常です。ただし、Boot oneは引き続き機能しますが、コンピューターをソフトリブートできます。これに関するいくつかの詳細情報があります ここのmniessから

Ubuntu 12.10以降、Magic-SysRq機能を有効にするためのよりきめ細かい制御が可能になりました。ファイル/ etc/sysctl.d/10-magic-sysrq.confを編集するだけです。

このファイルは十分に文書化されており、どの機能を有効にするかを正確に説明しています。現在のデフォルトはセキュリティの目的で選択されており、必要な理由がわかっている場合にのみ変更する必要があります(セキュリティへの影響については、 バグ#194676 を参照してください)。

5
Gabriel Staples