Surface 3は自宅で常用するには少し非力なので、自宅用のWindows環境としてデスクトップPCを使っていますが、本体もモニターも場所ふさぎなのでちょっとどうにかしたくなりました。
それで、メインで使っているMacBook ProにWindowsをインストールしたところ、謎のエラーでWindowsが起動しません。どうやらAppleがBoot Camp関連のドライバーでミスってる模様です。
海外のフォーラムに出ていた回避方法と私が実際にやってうまくいった方法を紹介します。
Boot Camp アシスタントを使ってWindows 7をインストールするとWindowsが起動しない件
MacにはBoot Camp アシスタントというツールがインストールされていて、MacでWindowsを使うためのドライバーが入った起動用USBメモリーを作ったり、HDDやSSDにWindows用のパーティションを作ったりすることができます。
今回私はAppleの公式の手順どおりこのBoot Camp アシスタントを使ってWindowsのインストールを試みました。
Apple「Boot Campを使ってWindowsをインストールする方法」
https://support.apple.com/ja-jp/HT201468
何度かの再起動の後にそろそろ終わりかなと思ったところでブルースクリーンが出て次のようなメッセージが表示されました。
「AppleSSD.sys 0xc0000428 このファイルのデジタル署名を検証できません。」
明らかにApple製のドライバーで何か問題が起きています。
メッセージからすると、このファイルにデジタル署名を付け忘れているか署名が間違っているということでしょうか。
別のPCで問題のファイルのプロパティを見てみるとこのとおり。
これはあかん…
このエラーをスキップするすべはなく、いったん撤退を余儀なくされました。
海外のフォーラムに回避策が2つあった
Appleのフォーラムを覗いてみると同じ問題で困っている人がいました。
Apple Support Communities「Windows 7 Pro 64 Bit Installation Error」
https://discussions.apple.com/thread/7171609
このスレッドで問題の回避方法が2つ紹介されています。
私は後に紹介する別の方法でやったのでこの2つの方法は最後までは試していませんが、スレッドの情報で言葉足らずな部分を補強するために途中まではやってみました。
方法1:インストール後にAppleSSD.sysを削除する方法
- Boot Camp アシスタントを使ってWindows 7をインストールする(ブルースクリーンになる)
-
いったんMac OSを起動してParagon NTFSというソフトのトライアル版をインストールする
電源キー長押しでMacを終了させ、電源投入直後にOptionキーを長押ししてMac OSから起動させて、Paragon NTFSをインストールします。
Paragon NTFSというのはNTFSフォーマットされたドライブにMacから書き込みできるようにするソフトのようです。
こちらから10日間有効のトライアル版をダウンロードできます。
http://www.paragon-software.com/ja/home/ntfs-mac/download.html -
Mac OSからBOOTCAMPのドライブにアクセスして問題のAppleSSD.sysを削除する
AppleSSD.sysはBOOTCAMPのドライブの Windows\System32\Drivers フォルダの中にあります。
これでWindowsが起動するようになるようです。 -
Windowsを起動してドライバーをインストールし直す
Windowsを起動し、インストールに使ったUSBメモリーのBootcampフォルダー内にあるsetup.exeを起動してドライバーをインストールし直す。
手順は以上です。
方法2:Boot Camp アシスタントが作ったUSBメモリーを古い情報で上書きする方法
- Boot Camp アシスタントを使ってUSBメモリーを作る
-
AppleからBoot Camp用のファイルをダウンロードしてUSBメモリーに上書きする
Boot CampアシスタントでUSBメモリーを作るとAppleから最新のドライバー類をダウンロードしてくるのですが、そこに含まれるファイルがダメなので少し古いものを使おうということのようです。
ファイルは以下のリンク先から入手でき、USBメモリーへのコピーのしかたも書かれています。
Apple「System requirements to install Windows 7 and earlier on your Mac using Boot Camp」
https://support.apple.com/ja-jp/HT205016 -
Boot Camp アシスタントを使ってパーティションの分割(BOOTCAMPパーティションの作成)を行う
上で作ったUSBメモリーをMacに装着したままの状態でBoot Campアシスタントでパーティションの分割をし、その後Windowsインストールのための再起動を行います。
Boot Campアシスタントには「Windows 7 またはそれ以降のバージョンのインストールディスクを作成」「最新の Windows サポートソフトウェアを Apple からダウンロード」「Windows 7 またはそれ以降のバージョンをインストール」の3つのチェックボックスがありますが、最後のものにだけチェックを入れて「続ける」を押し、パーティションのサイズ指定したあとで「インストール」するとMacが再起動してWindowsのインストールが始まります。(WindowsのインストールメディアをセットしたDVDドライブを接続しておく必要があります)
Appleからダウンロードする古いファイルにはAppleSSD.sysが含まれていないため、USBメモリーを上書きしても問題のAppleSSD.sysは残ったままです。これがそのままインストールされるとすればなんの解決にもならないような気がします。どうなんでしょうか。
実際はこうやって解決しました
私は上の2つの手順を参考に次のような手順でインストールしてうまくいきました。
- Boot Campアシスタントを使ってUSBメモリーを作る
-
USBメモリーからAppleSSD64のフォルダーを削除する
-
Boot Camp アシスタントを使ってパーティションの分割(BOOTCAMPパーティションの作成)を行う
Boot Campアシスタントでパーティションの分割をし、その後Windowsインストールのための再起動を行います。
Boot Campアシスタントには「Windows 7 またはそれ以降のバージョンのインストールディスクを作成」「最新の Windows サポートソフトウェアを Apple からダウンロード」「Windows 7 またはそれ以降のバージョンをインストール」の3つのチェックボックスがありますが、最後のものにだけチェックを入れて「続ける」を押し、パーティションのサイズ指定したあとで「インストール」するとMacが再起動してWindowsのインストールが始まります。(WindowsのインストールメディアをセットしたDVDドライブを接続しておく必要があります)
※ ここまででWindowsのインストールが行われ起動もするようになりますが、Wi-Fiをはじめ各種のドライバーがインストールされない状態となります。USBメモリーもメモリーカードも使えません。なんとかしてドライバーをインストールしなくては。
- いったんMacに戻ってPandora NTFSをインストールする
これでBOOTCAMPのドライブに書き込みできるようになります。 -
下記のリンク先から自分のモデルに合った少し古いBoot Campソフトウェアをダウンロードする
Apple「System requirements to install Windows 7 and earlier on your Mac using Boot Camp」
https://support.apple.com/ja-jp/HT205016 -
ダウンロードしたBoot CampソフトウェアをBOOTCAMPのドライブの適当な場所にコピーする
-
再起動してWindows側で立ち上げ、先ほどコピーしたBoot Campソフトウェアをインストールする
以上の手順でBoot CampのWindows環境に必要なドライバー類がインストールされ、まともに使えるようになります。
Appleは検証とリリースのプロセスを見直した方がいいと思う
以上、Appleのフォーラムに紹介されたMacにWindowsをインストールできない問題の回避方法と、私が実際に行った方法の紹介でした。
速攻で回避策を見つけてくれる人々には感謝の言葉もありません。ありがたい。
さて、AppleSSD.sysがデジタル署名をミスった状態でリリースされたために起きた今回の問題ですが、Appleが署名済みのファイルで検証してそれをそのままリリースする仕組みになっていれば発生しない問題です。署名を付けずに検証してその後署名するプロセスになっているか、署名の有効性が検証の対象になっていないかのどちらかでしょう。
署名は毎回のビルドプロセスの中で自動的に付けるようにして、QAでは署名の正しさを検証の対象に加えれば良いだけですので、見直しは簡単です。
検証はなるべくユーザーに渡るのと同じもので行うほうがいいです。