仕組みは簡単でメモリは1バイトもあれば十分
起動時にCMOSで保持するメモリの1バイトを1にしておいて
ACPIでシャットダウンした場合は0に戻す

予期せぬ電源OFFが落ちてもCMOSの設定は保持されるから
予期せぬ電源OFFの場合、該当メモリは1のまま
正常にシャットダウンした場合は0になるから区別できる

あとは電源投入時に、そのメモリがどうなっているのかを判断するだけ
OSに依存することもない。そんなに複雑な仕組みじゃないよ