Tatsu still writes something... Fourth season

これからも私はなにかをしてなにかを書く

Windows 8と起動プロセス

高速スタートアップを無効にして落ち着いたかに見えたWindows 8だったが、先週、Visual Studio 2008の異常終了から操作不能になった。リセットして再起動を行うと起動時に自動修復が行われたが、結局Windows 8は起動しなくなった。

仕方がないのでリフレッシュを行って、高速スタートアップを無効にしたが、Windows Updateに出てくるパッチを当てた後再び起動時に自動修復が走るが修復できずにWindows 8は起動しなくなる状態に陥った。

パッチ当てを行ったときは再起動を行って起動プロセスの間にシステムファイルを入れ替えるので起動プロセスを疑ってみた。

今まではWindowsをインストールする際にインストール先のパーティションをアクティブにしてWindowsをインストールすることで各パーティションWindowsはインストール先のPBRからインストール先のWindowsブートローダーを介して起動するようにし、起動するOSの切り替えはMBMを使用してMBRの段階で切り替えを行うようにしていた。

図にすると下記のようになる。


BIOS---MBR---+---PBR---ntldr---Windows XP
+---PBR---Windowsブートローダー---Windows 7
+---PBR---Windowsブートローダー---Windows 8

この場合、以下の利点がある。

  • Windows 8に致命的な障害が発生しても他のWindowsには影響が及ばない。
  • それぞれのWindowsを再インストールしても他のWindowsに影響がない。

この状態ではWindows 8は他にWindowsがいることを認識しないのでシャットダウン時のNTFSの処理をWindows 7以前のWindowsと整合性のない方法で行うため、Windows 7以前のWindowsを起動したときにスキャンディスクが行われる。
そこで、高速スタートアップを無効にしてシャットダウン時のNTFSの処理をWindows 7以前のWindowsと整合性のとれた方法で行わせるようにしていた。

ところが、この状態でパッチを当てるとシステムファイルが破損してWindows 8が起動しないという状態に陥ってしまった。
パッチあてを行うとトラブルが発生するのでどうやら、高速スタートアップを無効にしてもシステムファイルを入れ替えるプロセスとNTFSの状態の整合性が取れず、パッチを適用するとファイルシステム上の整合性が取れずにシステムファイルを破壊してWindows 8が起動しなくなるようである。

そこで、Windows XPのあるパーティションをアクティブにした状態で別パーティションWindows 8を入れるようにした。
この場合の起動プロセスは下記のようになる。


BIOS--MBR--+--PBR--Windowsブートローダー--+--ntldr--Windows XP
+--Windows 7
+--Windows 8

この状態でWindows 8を入れ、パッチを当てていったところ、今度は何の問題もなくWindows 8のパッチあてが完了し、Windows 8、7、XPともに起動時のスキャンディスクなしに起動するようになった。
おそらく、この状態がWindows 8の想定しているWindowsのマルチブート構成なのだろう。

ということで結論としては、
Windows 8を他のWindowsとマルチブートするときは以前のWindowsパーティションをアクティブにした状態でインストールして、他のWindowsが登録されたWindowsブートローダーから起動する必要がある。
ということになりそうである。

この方法には以下の欠点がある。

が、パッチが当てられないのでは元も子もないのでとりあえずはWindowsブートローダーで起動するWindowsを切り替えるようにしていくことにする。