misc.log

日常茶飯事とお仕事と

システムドライブをSSDに交換(2)

下記の続きです。
www.backyrd.net

2013年にセットアップして、2018年にHDDを修復USBから復元し、さらにそれをSSDへという流れの続き。クローン完了後からの顚末です。結論を先に言うと「諦めてまた修復USBから復元」で全部アプリ等もインストールし直しました。

クローン完了、ディスク入れ替えて再起動

クローンは7時間で完了しました。

f:id:frontline:20210124130839p:plain
EseUS Todo Backupクローン完了

とりあえず電源を落として、既存のHDDの電源ケーブルを外します。そして起動、BIOSの画面から起動ドライブをSanDiskSSDに変更したいのですが

f:id:frontline:20210124131727p:plain
American MegatrendsBIOS画面、起動オプションではSSDが出てこない

American MegatrendsBIOS画面、「BIOSの機能」タブにある「起動オプション」かとおもい見てみるとSanDiskの名称が出てくるのは「Windows Boot Manager(P5: SanDisk……)」のみ。これを上位に持ってきたのですが起動せず。あらためてもう一度設定画面を見てみると、その下に「ドライブのBBS優先順位」という項目があります。そこを見るとSanDiskのドライブが出てくるので、これを上位に持ってくると起動オプションの設定にもSanDiskの名前が登場しました。ちなみに「P5」というのはマザーボードにある6つのSATAポートのうち5番目、という意味のようです。

f:id:frontline:20210124132348p:plain
起動をSSD優先に変更

で……ここからが地獄でした。起動しません。PCはひたすら「正しいシステムが入ったドライブを……」というメッセージを出すばかり。

いろんなブログ等を当たってみる

自宅には別のノートパソコンがあるので、そちらで様々なブログ等を検索。上がってくるのは

  • diskpartでBCD(Boot Configuration Data)と呼ばれるファイルのあるドライブを特定し、そこでBCDファイルの修復を行う
    • bootrecコマンドを「/RebuildBCD」で実行してBCDファイルを再構成する
    • bcdbootコマンドに「システムドライブとフォルダ、/l ja-JP、/s BCDのあるドライブ、/f UEFI」を指定してBCDファイルを再構成する
    • bcdeditコマンドでBCDファイルを編集、修正する

あたりですね。いろいろ試行錯誤する時間があまりないので、十分な理解とか下調べ無しに片っ端からやってみたのが良いのか悪いのか。結論からいうとどれもダメでした。手はあるのかもしれませんが、知識不足でした。

あらかじめWindowsが生きてるうちに作っておいた修復用のUSBメモリーからWindowsのセットアップツールを起動。そこから「トラブルシューティング」「コマンドプロンプト」を選ぶと表示されるプロンプトで作業を行います。基本はコマンドでの操作になります。このあたりはちょっとハードウェアよりの話にも普段から触れておかないと抵抗感があるかもしれないですね。

とりあえず、そうして起動したコマンドプロンプト

diskpart

というコマンドを実行。そうするとdiskpartというツールが起動して命令待ちになるので、そこでさらに

list volume

という命令でディスクのボリューム(ドライブ)構成を確認します。

f:id:frontline:20210124133935p:plain
diskpartで表示されるボリューム一覧に「ブート」の印がない

これが起動しないSSDのドライブ構成です。ドライブ番号はEseUS Todo Backupのクローン実行時に出ていたAとかBではなく、既存のHDD(2TBで接続しっぱなしにしている、問題の無いデータ用ディスク。DATAと銘打たれている)がCドライブ、今回作ったSSDがDから始まるドライブ名になっています。ここで、本来であれば右端に、Windowsが入った起動用ドライブの場合は「ブート」という文字が出てくるはずなのですが、出ていませんね。これがそもそもの原因のようです。要するにデータは揃っているのだけれど、PCにとって「で、どれから始めれば良いの?」というのが判らない状態。

ちなみに、いろいろやってWindowsが動くようになった状態の同じ画面がこちらです。

f:id:frontline:20210124134056p:plain
本来はこのように「ブート」が表示される

Volume 4、Cドライブに「ブート」と書かれています。おそらく「そういうフラグを設定すりゃいいだけ」だとおもってたかをくくっていたのですが、結果から言うと上手くいきませんでした。

BCDファイルを特定する

とりあえず、とあるブログにあった方法でBCDファイルを再構成してみる、というのを試してみることにしました。BCDファイルは、FAT32でフォーマットされ、ドライブ名(CとかDとか)が割り当てられていないところにあるそうです。下図の場合「Volume 8」がそれに相当します。

f:id:frontline:20210124135327p:plain
BCDファイルのあるボリュームを特定する

BCDファイルをこのあと削除して再構成するには、コマンドプロンプトでその場所に行かなければなりませんが、そのためにはドライブ名が必要です。diskpartから「list volume」で上記画面を出したあと、仮のドライブ名を割り当てて手作業で作業可能にします。

select volume 8

これでボリューム8を選択状態にしたあと

assign letter b

これで、選択したボリュームがBドライブになります。あらためてlist volumeコマンドで一覧表示したものがこちら(……改めて見ると、変更したところに「*」がついてますが……なんだこれ……)。

f:id:frontline:20210124135606p:plain
FAT32の無名ドライブをBにする

bootrecでBCDを再構築してみる

まず、exitと入力して一旦diskpartを終わらせます。そこからコマンドプロンプトでBドライブに移動し、「\EFI\Microsoft\Boot」フォルダーに移動。そしてBCDというファイルが存在していることを確認してから削除かリネームで退避。次に

bootrec /RebuildBCD

このコマンドを入れると、各ボリュームをツールが自動的にしらべてWindowsのシステムドライブを特定、列挙してくれるのでどれをシステムドライブと見なすかを選択します。ここでは1個だけが見つかるのですが……

f:id:frontline:20210124144215p:plain
bootrec /rebuildBCD を実施するも「要求されたシステムデバイスが見つかりません」

「要求されたシステムデバイスが見つかりません」とのエラーが出て失敗。念のため再起動してみてもやはり起動せず。

bityl.co

BCDBootでブートファイルを再構成する

Microsoftのフォーラムで提示されていた方法です。同じくUSBから起動した環境のコマンドプロンプトで下記のコマンドを入力しました。

bcdboot e:\Windows /l ja-JP /s b:

ここでコマンドのうしろに書いてあるパスは、diskpartで調べられるドライブ名でWindowsのシステムフォルダーがあるパスを示します。次の「/L(エルです)」はロケール。日本なのでja-JP。次の「/s」では、同じくdiskpartで確認できるBCDファイルがあるドライブを指定します。ここで指定できるように、先ほどのbootrecの場合と同様に適当なドライブ名をassignしてそれを指定すれば良いようです。で、実行した結果は

f:id:frontline:20210124150321p:plain
bcdbootの実行結果は一見上手くいったようですが

「ブートファイルは正常に作成されました。」と出るのですが、再起動してみると……だめです。ディスクの初期化がGPTの場合には、さらにオプションとして「/f UEFI」を付けると良いようですが、これもダメでした。同じように「正常に作成されました。」という結果になるも、起動はしません。

docs.microsoft.com

bcdeditでBCD設定を編集する

他にもbcdeditというコマンドで設定を変えられるという話が各所にあったので試してみたのですが……

ブート構成のデータ ストアを開けませんでした。要求されたシステム デバイスが見つかりませんでした。

というエラーでそもそもツールの起動すらできませんでした。

www.atmarkit.co.jp

結局Windowsを修復セットアップしなおす

きちんと調べて、きちんと対処するか、または改めてクローンをシステムクローンとしてやりなおす、または、物理的なクローン装置で複製するといった方法を採っていれば上手くいっていたのかもしれませんが、いかんせん、時間があまりありません。また、ディスク自体非常に怪しい動きをしていたので、あまり長引かせるとHDD自体が破損していく可能性があります。なのでもうここは残りの時間も勘案して「USBメモリーに入っている修復データでWindows 10を入れ直す」を選択することにしました。

またアプリとか全部入れ直しになるのが非常に面倒ではありますが、ここまでやって上手くいかない「怪しいWindows」を使い続けるよりはマシ。ということで。

USBメモリーから起動すると修復セットアップのメニューがあるので、SSDを接続した状態で実行。ここで1点大失敗というか(結果的に問題無かったけれど)心配になったのが、もう1つ、無事なハードディスクを接続したまま修復を実行してしまったことです。USBからの起動で行う修復セットアップ、実行を選択すると実施確認の後すぐにセットアップが始まりました。ここで思ったこと……「SSDとHDDどっちにインストールするか聞かれなかった」です。その時点でのディスク構成は、既に古いHDDは外したものの

  • 前から使っていた無事な2TBのHDD(今回の作業にあたりデータなどを退避している)
  • 新しく購入してクローンするも起動しない4TBのSSD

という構成。これで修復セットアップがどっちにインストールしてくれるのか。停止!?と思いましたが既に初期化していますという表示になっているため、下手に手をいれたらSSDも壊れるかもしれません。運を天に任せて待つしかありませんでした。

インストールは30分弱で完了しました。速い!?(ということはSSDに入った?)かと思いましたが油断は出来ません。コルタナが起動して初期設定の案内をされ、Microsoftアカウントでログイン設定を行い、さて、デスクトップが表示された……というところでWindowsエクスプローラーを確認。よかった無事でした。SSDWindowsがインストールされ、古いドライブは残っています。

なお、ライセンス認証は不要でした。修復ディスクに入っている情報で完了したのか、ログインに使ったマイクロソフトアカウントに紐付いていたのか判りませんが。このあたりもボンヤリしています。

まとめ:原因は分からない

もっと時間があればいろいろ試してみるところなのですが、もうかつてのような時間は無いので。出来る事で前に進むしかありません(Windowsシステムディスクのクローン方法を調べるのが目的ではなく、壊れそうなHDDから使えるデータをひきぬいて新しい環境に移すのが目的なので)。ということで、原因はよく分かりませんが起動がすごく速いPCが出来上がりました。

ただ、修復用のUSB、いつ作ったものか忘れてしまったのですが、これがパーティション構成なども全部含めて修復するらしく、2世代前のディスク構成でセットアップされました。なので、

  • そもそもディスクがGPTではなくMBRで初期化されている(そのためか、1.7TBほどが未割り当てで空いてしまっている)
  • システムパーティションのうしろにWindows RE回復環境ができていて、そのうしろの空き領域とシステム領域をマージできない……(4TBあるのに2TBでぶつ切れになる)

等などちょっとアレな構成になってしまいましたが。そのあたりについては別途記載しようとおもいます。とりあえず「クローンは一筋縄では行かないのかも」というのが自分的な今回の教訓でした。