UEFI環境でHDDからSSDへの換装を行った後にWindowsが立ち上がらなくなった場合の対処方法について説明します。
他の問題について
bcdeditを単に実行しただけではBIOSにWindows Boot Managerが表示されない問題についてはこちらの記事を参照願います。
普通に使っていて、BIOSアップデートなどを行ったことにより、Windows 7以降のUEFIブート対応のOSが立ち上がらなくなった場合は、こちらの記事を参照願います。
ここでは、Windows 8.1がインストールされたパソコンにおいて、HDDからSSDへの換装や、ドライブの順番が変わったために、ブートしなくなった場合の修復方法について記します。
なお、使用したソフトが古いため、Windows 8以降に対応したソフトを使えば問題無い可能性があります。また、修復はツールなどを探さず、OSの機能だけで対処しました。
環境
最近のShuttleのキューブベアボーンは、mSATAやmini PCIeのソケットがマザーボードに付いており、3.5インチベイが埋まっていてもSSDを搭載することが出来ます。mSATA SSDが余ったので、無理なマウント方法で取り付けていた2.5インチSSDを外し、mSATA SDDに換装することにしました。
「これdo台」で2.5インチSSDからmSATA SSDに、内容をそのままコピーしようとしたのですが、容量が128GBと120GBで違うとのことでコピーが出来ませんでした。
仕方ないので、以前購入したHD革命/CopyDrive Ver.4を使ってパーティションサイズを変えてコピーすることにしました。2015年2月時点では、HD革命/CopyDrive Ver.6が最新バージョンです。
- HD革命/CopyDrive Ver.6(アーク情報システム)
同様のソフトはSSDに添付されていたり、SSDメーカーが自社製品だけに使えるバージョンを無償配布したりしています。ただし、上記ソフトに比べて出来ることが限られます。
HD革命/CopyDrive Ver.4はGPTに対応しているため、添付CDから立ち上げて、2.5インチSSDからmSATA SSDにドライブの内容をそのままコピーしました。
問題発生
2.5インチSSDを外し、コピーしたmSATA SSDを取り付けて、起動したところブートローダーがロードできないとのことでブート出来ませんでした。
Windows 8.1のインストールDVDで立ち上げて「スタートアップ修復」(起動方法は次項を参照)を実行してみましたが、修復出来ませんでした。
Shuttleのキューブベアボーンには、2.5インチSSDの他に3.5インチの大容量HDDも搭載していました。BIOSで見ると、このように接続していました。
- SATA1:2.5インチSSD(ドライブC)
- SATA2:3.5インチHDD(ドライブD,E)
- SATA3:無し
- SATA4:光学ドライブ
- PCIe:無し
- mSATA:無し
2.5インチSSDからmSATA SSDに換装した後は、このように接続しました。
- SATA1:3.5インチHDD(ドライブC,D)
- SATA2:無し
- SATA3:無し
- SATA4:光学ドライブ
- PCIe:無し
- mSATA:mSATA SSD(ドライブE)
システムは、この物理的な順番でドライブを認識するので、どうしてもmSATA SSDは3.5インチHDDより後になってしまいます。3.5インチHDDは2パーティションで使っているため、mSATA SSDはドライブEとなってしまいます。
Windows 8.1のインストールDVDで起動し、コマンドプロンプトを開いて、UEFIエントリーを調べてみると、一部の値が不正な値に書き換わっていました。
Windows ブート ローダー
-------------------------------- identifier {default} device unknown path \Windows\system32\winload.efi description Windows 8.1 locale ja-JP inherit {bootloadersettings} recoverysequence {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} integrityservices Enable recoveryenabled Yes isolatedcontext Yes allowedinmemorysettings 0x15000075 osdevice unknown systemroot \Windows resumeobject {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} nx OptIn bootmenupolicy Standard |
ここでは、不正なUEFIエントリーの値を、環境に合った値に書き換えてブート出来るかを試しました。
対処方法
注意:ここでの操作は、SSD/HDDのUEFIエントリーを書き換えます。OSの再インストールが必要になる場合もあります。
(記事が古くWindows 8.1で説明していますが、Windows 10のインストール用USBメモリーでも操作はほぼ同じです)
Windows 8.1のインストールメディアから起動します。SSDにインストールされているOSと同じでないと修復に入れない場合もあります。また、プレインストール版などでインストールメディアが添付されていない場合は、Windows 8.1 Enterprise評価版のDVDを焼いて、そのDVDから起動すれば修復が行えるかもしれません。
インストーラーが起動したら、「次へ」をクリックします。
「コンピューターを修復する」をクリックします。
「トラブルシューティング」をクリックします。
「詳細オプション」をクリックします。
「コマンドプロンプト」をクリックします。「スタートアップ修復」を試してみる場合は、この画面から起動出来ます。
「コマンドプロンプト」が開きます。
まず、
- bcdedit
と入力し、現在のUEFIエントリーを確認します。
Windows ブート ローダー
-------------------------------- identifier {default} device unknown path \Windows\system32\winload.efi description Windows 8.1 locale ja-JP inherit {bootloadersettings} recoverysequence {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} integrityservices Enable recoveryenabled Yes isolatedcontext Yes allowedinmemorysettings 0x15000075 osdevice unknown systemroot \Windows resumeobject {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} nx OptIn bootmenupolicy Standard |
「Windowsブートローダー」の部分の最初の行の「identifier」の値を確認します。ここでは「{default}」となっています。
次に、「device」と「osdevice」の値を確認します。「unknown」または、「partition=C:」などの値になっているはずです。partition=となっていてもブートしない場合は、ドライブレターが違っている可能性があります。
正しい値に設定し直します。ここでは、3.5インチHDDが2パーティションで、その後にmSATA SSDがあるため、ドライブレターは3番目の「E:」となります。
下記のように入力します。「/set」の後の値は、「identifier」の値です。
- bcdedit /set {default} device "partition=E:"
- bcdedit /set {default} osdevice "partition=E:"
綴りを間違っていなければ、正常に設定出来たとのメッセージが表示されます。設定できない場合はドライブの数え間違いや、ドライブが正しく認識されていない可能性があります。認識されていないドライブには設定出来ません。
- bcdedit
と入力して正しく設定出来たことを確認します。
Windows ブート ローダー
-------------------------------- identifier {default} device partition=E: path \Windows\system32\winload.efi description Windows 8.1 locale ja-JP inherit {bootloadersettings} recoverysequence {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} integrityservices Enable recoveryenabled Yes isolatedcontext Yes allowedinmemorysettings 0x15000075 osdevice partition=E: systemroot \Windows resumeobject {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} nx OptIn bootmenupolicy Standard |
最後に、
- exit
と入力し、コマンドプロンプトを閉じて終了します。再起動して、ブート出来るかを確認します。
ブート出来た場合は、物理的なドライブの順番ではなく、論理的なドライブレターに合わせて、UEFIエントリーは自動修復されます。
ディスクの管理で見てみると、システムドライブは2番目のドライブと認識されていますが、ドライブレターは、「C:」になっています。
再度、bcdeditでUEFIエントリーを確認してみると、「partition=E:」と書き換えた値が、「partition=C:」に書き換わっていました。その状態でも正しくブートします。ならば、最初から「partition=C:」と書き換えれば良さそうですが、「partition=C:」と書き換えてもブートしませんでした。
ディスクの修復とシステムの保護
システムドライブにエラーを検出する場合は、エクスプローラーのドライブアイコンを右クリックして表示されるメニューの「プロパティ」をクリックし、「プロパティ」を開きます。「ツール」タブの「エラーチェック」の「チェック」をクリックして、
「ドライブのスキャン」を実行して修復しておくとよいでしょう。
また、システムの保護が無効になっている場合もあります。そのままにしておくと、修復ポイントが作成されないので、有効にしておきます。
「コントロールパネル」の「システムとセキュリティ」の「システム」グループにある「リモートアクセスの許可」をクリックします。
「システムのプロパティ」が開くので、「システムの保護」タブを選択します。「保護設定」の部分で、システムドライブの保護が「有効」になっているか確認します。「無効」になっている場合は、システムドライブを選択し、「構成」をクリックします。
「設定の復元」の部分で、「システムの保護を有効にする」を選択し、「ディスク領域の使用量」の部分で、最大使用量を設定して「OK」をクリックします。
以後、定期的に修復ポイントが作成されますが、この時点で問題が無ければ、一度修復ポイントを作成しておいた方がよいでしょう。最近は、パッチ適用前に自動で修復ポイントが作成されないので、パッチに問題があっても、適用の直前には戻せなくなっています。
「システムのプロパティ」で、「作成」をクリックして作成します。
まとめ
今回のケースは、換装に使用したソフトが古いことによる問題の可能性もありますが、ドライブの物理的な順番が変わることにより発生する問題である可能性もあります。
この方法でも直らない場合は、OSの再インストールから、やり直す必要があるかもしれません。
なお、換装で変更されるハードウェア構成はストレージドライブが1個なので、OSライセンスの再認証は必要ありませんでした。
コメント
ありがとうございます。プレインストール機のHDDをSSDに乗り換えた時、助かりました。
やっくる'21 さん、コメントを頂きありがとうございます。
非常に特殊なケースだとは思ったのですが、お役に立てたようで良かったです。