【Windows】ノートPCのHDDからSSDにクローンして換装する手順
つい先日、動作が重いノートPC(Lenovo ideapad 330)をどうにかしてくれと頼まれてHDDからSSDに換装したはいいものの大分手こずりました。
今まで7、8台くらいは換装してきましたが、いつも細かい手順を忘れてきた頃に頼まれるので必ずどこかしらで躓いています。
なのでまたいつか同じところで躓くであろう将来の自分のために備忘録を書いておこうと思い立ち、半年ぶりにnoteを書いています。既に忘れないレベルまで記憶に定着したことは書かないので、このnoteだけ読んでもやったことがない人には分からないかもしれません。所々詳しい人にとっては間違っていることを書くかもしれませんが、とりあえずWindowsが起動すればいいと思っているので温かい目で見てください。今回換装したPCはUEFIだったので、主にUEFIの場合について書いています。
1. 下準備
方針
新しいSSDに元のHDD内のパーティションをそのままコピー(クローン)する。
ソフトはGParted(フリーソフト)を使う。
用意するもの
SSDを繋いでGPartedのLive CDを起動する
UEFIの場合は、分解を始める前に必ずSecure Bootを無効にする。その後ディスクを入れて電源を入れるとおそらく内部ストレージから起動してしまうので、電源を入れたら特定のキー(今回のLenovoはF12)を連打してBoot Managerを起動してCDを選択する。
レガシーBIOSの場合はbootの順番を変えて光学ドライブを先頭にする。
2. GPartedでクローン
Live CDを起動して指示に従って言語設定やらをしてしばらく待つと、デスクトップが現れて勝手にGPartedのウインドウが表示される。
通常内部ストレージ(HDD)は
/dev/sda
外部ストレージ(SSD)は
/dev/sdb
となっている(はず)。ここで内部HDDのパーティション構成はUEFIの場合、多分以下のようになっている。(画像はここから)
まず空のSSDにはパーティションテーブルがないので作成する。元のHDDと同じテーブルにすれば良い(UEFIならgpt、レガシーBIOSならmsdos)。その後は基本的には元のHDD上のパーティションを一つ一つ選択して新しいSSDにコピーすれば良いが上記(2)のパーティションはGPartedでは認識できず、コピーもできないのでterminalからddコマンドを使う。
dd
GPartedでとりあえず(2)の前までのパーティションをコピーして、その後ろに(2)と同じサイズの未フォーマット領域を作成する。その後GPartedのアイコン横にあるterminalを起動し、以下のコマンドを入力して(2)の中身をSSDにコピーする。
sudo dd if=/dev/sda2 of=/dev/sdb2 bs=1M
ここでは'/dev/sda2'が内部HDDのパーティション2、'/dev/sdb2'が外部SSDのパーティション2を表しているので状況に応じて適宜変えること。'if='が入力元、'of='が出力先を表す。'bs='は一度に読み取るブロックの単位を指定する(上記は1MB)。特に指定しなければデフォルトで512バイト。Win10では(2)のパーティションは16MBと小さいので特に指定しなくても大丈夫そう。
これで(2)をコピーしたつもりですが、この操作に本当に意味があるかは分かりません。とりあえずうまくいくからヨシ。
それ以外のパーティションは普通にGPartedでコピーする。
SSDの容量が元のHDDよりも小さい場合
(3)のWindowsパーティションを普通にコピーすることはできないので、まず内部HDDの(3)をSSDより小さくなるようにパーティション分けしてからSSDにコピーする。その後(4)をSSDの一番後ろにコピーしてから(3)のパーティションを目一杯大きくする。こうすれば無駄がない。SSDの容量がHDD以上ならパーティションを分けなくてもそのままコピーできる。
パーティションの名前、フラグを編集
無事に全てのパーティションのコピーが終わったら、SSDにコピーしたパーティションの名前とフラグを編集して追加する。特にHDDの(1)についている'boot'のフラグをSSDの(1)にもつけないとWindowsが起動しなくて数時間溶かす羽目になる(体験談)。
3. BCDの再構成
後はSSDに換装して作業終了…と思いきや、クローンしただけではまずWindowsは起動しない。
レガシーBIOSの場合
Windows10のインストールディスクからコマンドプロンプトを起動して
bootrec /RebuildBcd
と入力。しばらく待つとWindowsがインストールされたパーティションが1つ見つかったと言われるので'Y'と入力する。
bootrec /fixboot
と入力しコマンドプロンプトを終了してスタートアップ修復を2,3回行う。
UEFIの場合
上記の方法だと「要求されたシステムデバイスが見つかりません」とのエラーが出るので、別の方法で(1)のSystemパーティションにあるBCDファイルを作り直さないといけない。
コマンドプロンプトを起動して
diskpart
と入力。diskpart内で使用するコマンドは以下の3つ。
list volume
select volume #(数字)
assign letter=#(アルファベット)
ここでの目的は
例えば'list volume'の結果、
となっていたら、
select volume 1
assign letter=b
select volume 2
assign letter=c
とすることで目的の状態になる。Systemパーティションのレターは’C’以外なら何でも良い(ここではB、以降Bとする)。
因みにコマンド内の'select'、'volume'はそれぞれ'sel'、'vol'と省略できる。またドライブレターを割り当てるときは大文字でも小文字でもよい。
次に
cd /d B:¥EFI¥Microsoft¥Boot
でSyetemパーティションのBootディレクトリに移動したら
del BCD
で既にあるBCDファイルを削除する。適当にリネームしてもよい。後は
bcdboot C:¥Windows /l ja-JP /s B: /f ALL
と入力すればBCDファイルが作成される。あとはスタートアップ修復を2, 3回行って再起動すればめでたくWindowsが起動するはず。
4. 回復パーティションを再認識させる
BCDの再構成を行うと、Windowsから回復パーティションが認識出来なくなっているのでこれを修正する。Windowsを起動して管理者としてコマンドプロンプトを起動する。
reagentc /info
reagentc /enable
reagentc /info
とコマンドを入力して'Windows RE'の状態が'Enabled'になればOK...のはずが、回復パーティションが一番後ろにあるせいかおそらくエラーになる。回復パーティションがどこにあるか教えてあげないといけません。
3章と同様に
diskpart
を起動する。volume一覧を表示すると回復パーティションに('hidden'のフラグをつけていれば)ドライブレターが割り当てられていないのでとりあえず'R'を割り当てる(何でも良い)。
reagentc /setreimage /path R:¥recovery¥WindowsRE
と入力してうまく行けば、後は先程と同様に
reagentc /enable
reagentc /info
で'Windows RE'が'Enabled'になるはず。無事に全て終わったらSecure Bootを有効にしましょう。
5. 参考にしたサイト
BCDファイルの再構成について
回復パーティションの再認識について
その他多数。
P.S.
いらすとや って便利ですね
このような拙文を最後までお読みいただきありがとうございます。 皆さんの反応を糧に生きています。