シャットダウンとリブートの違いTwitterで、「Linuxでもシャットダウンとリブートは違うよ」という話をしたら、若干の反響があったので、軽く解説。私はこのあたりのことはそこまで詳しくないので、詳しい解説をすると多分間違えることからほどほどにしておく。Linux上の仕組み実は私が行っているのはLinux上でどうこうということではなかったりするのだけど、けれど若干違いはある。final.targetとなっており、reboot.targetはAfter=systemd-reboot.serviceとなっている。rebootそう、再起動はSystemdの場合組み込みである。shutdownのほうは割と単純で、Conflicts=shutdown.targetとBefore=shutdown.targetがあるので色々終了処理を行う。shutdown.targetはそれだけの存在で、shutdown.serviceやsystemd-shutdown.serviceはない。shutdownで良い。少なくとも、rebootとshutdownが分けられている、というのはわかる。ハードウェア的にここからが私が言っていた話になる。実際に再起動してみるとわかると思うのだが、普通のパソコンでは再起動しても電源が切れることはない。電源を入れるのと比べて速く立ち上がる。ワークステーションや、一部の業務用PC(法人向けのモデル)だと再起動時に電源を切ったりするのだが。そもそもシャットダウンした時点でプロセスはほとんど残っていないのだから、OS側から「電源を切ったら起動する」のような制御をすることはできない。当然ながらこれはファームウェア的な動作であり、ファームウェア的にシャットダウンの状態とリブートの状態を分けていることがわかる。一般的には再起動時はPOSTが省略される。そのため、デバイス認識がバグっている状態(例えば接続されているキーボードが認識されていないとか)では再起動では修復されなかったりする。changesした場合は(通常は変更があったかどうかにかかわらず)POSTからやり直すようになっている。電源を切るかどうかについては、メモリ(DIMMに限らず)に影響を及ぼすことから、違いがでる、かもしれない。英語で、ものすごーーーーく詳しい説明を見つけたのだけど、再度見つけることができず掲載できない。