ハードウェアリセット方法

ハードウェアリセットの方法です。


キーボードリセットによる方法


ポート 0x64 の bit 0 に 0 を書き込むと、コールドリセットされます。
0x64 はキーボードコントローラのポートです。

パソコン鳥も、15年以上前にこの方法でリセットするコードを書いたことがあります。

Linux ではリセットを実施するとき、アドレス 0x64 に 0xfe を書き込んでいます。
該当箇所はカーネルソースの arch/x86/kernel/reboot.c 、arch/x86_64/kernel/reboot.c のnative_machine_emergency_restart()関数内です。


PCIポートへのアクセスによる方法


ポート 0xCF9 に 0x06 を書き込むと、ウォームリセットされます。
ポート 0xCF9 に 0x0E を書き込むと、コールドリセットされます。

Linux ではキーボードリセットでリセットできなかった時に、この方法でリセットしています。
該当箇所はカーネルソースの arch/x86/kernel/reboot.c 、arch/x86_64/kernel/reboot.c のnative_machine_emergency_restart()関数内です。


Linux で /proc/sysrq-trigger に 'b' を書き込む


Linux限定ですが、下記で紹介したように、/proc/sysrq-trigger に 'b' を書き込むと、即座にシステムがリブートされます。

linux強制再起動 - shutdownコマンドでもダメな時の再起動手段 パソコン鳥のブログ/ウェブリブログ

ここでのリブートは、上記の「キーボードリセットによる方法」「PCIポートへのアクセスによる方法」の方法によって、ハードウェアリセットが実施されます。

この方法も、カーネルソースの arch/x86/kernel/reboot.c 、arch/x86_64/kernel/reboot.c のnative_machine_emergency_restart()関数が呼ばれます。


参考


ISAPnP-HOWTO
Realtime Windows Now: PCの強制リセット手法
[PATCH] reboot: perform warm/cold reset correctly for CF9 type | Linux | Kernel

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック