Linuxの再起動


init 6とreboot


「init 6とrebootの違い」を直接検索すると、誤魔化したページが大量に得られ、init 6が正しい再起動コマンドであることを次々と示します.
実際、現在のほとんどのリリースでは、initとrebootは同じパッケージ(sysvinit、upstart、systemdなど)から来ています.rebootは最終的にinitプロセスによって完了します.rebootは正常な状況で2つのことをします――1.すべてのユーザーシステムが再起動することを通知します.init 6.
sysvinitの初期バージョン(2.74以前)では、rebootはinitを経ずにカーネルの再起動を直接通知します.upstartとsystemdのrebootはずっとinitを通っています.新しいsysvinitでは、rebootは依然としてこの方法(-fパラメータ)を保持している.

カーネルショートカットの再起動


rebootもinit 6も、すべてのプロセスが正しく閉じられるまでカーネルの再起動を通知しません.では、IOを待つためにD状態に保留されているプロセスに遭遇したらどうしますか?このプロセスは正常に戻るまでkillされないので、rebootは掛けられます.
1つの方法は、rebootに-fパラメータを追加して強制的に再起動することであり、もう1つの方法は、カーネル予約(カーネルコンパイル時にCONFIG_MAGIC_SYSSRQがオンになり、ほとんどのリリース版ではデフォルトでオンになっている)のカーネルショートカットインタフェースであり、/proc/sys/kernel/sysrqを1に設定すると、/proc/sysrq-triggerにカーネルショートカットを書き込むことで強制的に再起動することができる.
一般的な強制再起動プロセスは、次のようになります.
1
2
echo1>/proc/sys/kernel/sysrq
echo b >/proc/sysrq-trigger

サーバーのsshが切れていて、serial consoleがない場合はどうしますか?ipt_を事前にインストールした場合Sysrqの場合、ネットワークがまだ通じている限り、特殊なパケットを送信することでカーネルショートカットキーをトリガーすることができます.
デスクトップシステムの場合、Alt+SysRqでカーネルショートカットキーをトリガすると便利です.たとえば、グラフィックスドライブがオフになったら、Alt+SysRq+REISUBで再起動してみてください.
完全なカーネルショートカットリストはここを見ることができます.

高度な再起動


従来の再起動は基本的にシャットダウン+起動の過程に相当し、特にPOSTのステップが遅すぎて、kexecはカーネルを置き換え、再initする別の再起動方式を提案した.
より多くの場合、linuxシステムを再起動するのはカーネルを更新するためだけで、kspliceは実行中のカーネルに更新patchを直接実行することができ、いっそ再起動を省くことができます.
原文住所:http://d.ream.at/linux-reboot/