これらは正規の手順ではないので自己責任で。
- Arch LinuxイメージをUSBメモリからブートして、Linuxのddコマンドで現行から移行先へコピーしたら、普通に認識された
- 回復パーティションが挟まるので1つのパーティションにしたい場合はDISKPARTで削除したり再作成する
- あとはボリュームの拡張をして終了
Bitlockerとか入っているので大丈夫なんかな、と思いつつやったらBitlocker絡みは特に引っかからずできたのでメモ。
背景
5年も使っているし、容量不足感も出てきたし、SMARTの状態も悪化してきた。
ということで、CrucialのCT1000P1SSD8の1TBからWD_BLACK SN7100の2TBに乗り換え。時期は悪い気がしているが、欲しいと思ってお金が許すなら買うしかないでしょう。
買ったはいいがどう移行するか悩む。再セットアップしてもいいけど必要なファイルのコピー作業がめんどくさい。
最初はWindowsのバックアップイメージを作ろうかとも思ったがWindows 11での作り方がよくわからなかった。
ふとddコマンドでデバイスのデータをまるっとコピーすれば動作するのでは?と思ったので試した。
作業
Linuxイメージを作成する
メジャーなディストリビューションはだいたいLive CDを提供してくれている。ddコマンドぐらい入っているはずなのでなんでもよい。
今回はArch Linuxを使った。ただArch Linuxはインターネットに出て必要なファイルを取得するので、DHCP環境が必要かもしれない(オフラインで試したことがないのでわからない)
2台とも認識させる
2台とも認識した状態にする。なのでSSDが2つ繋げられないといけない。(今回はM.2スロット2個で作業)
最近のマザーボードはBIOSか何かで認識したかどうかはわかるはず。

LinuxをUSBブートする
USBを指して電源を入れる。電源を入れたらすぐF11等を押してブートメニューを出す。USBメモリを選択して起動する。
LinuxがBootしたら作業する
lsblkで認識しているSSDを確認。M.2なら /dev/nvme0n1 等の名前になっているし、パーティションが3,4つ作られているので区別はできるはず。

dd if=/dev/コピー元 of=/dev/コピー先 bs=1M oflag=direct status=progress コマンドでコピー。
コピー元とコピー先を間違えると空っぽのデータで上書きしてしまうため注意。lsblkの結果と突き合わせて指さし確認しよう。
しばらく待つ。

コピーが終わったら再起動。
Bootできることを確認
電源が入ったらすぐF11等を押してブートメニューを出す。
ここでコピー先のSSDがブート対象に出てくるようになっているはず。そちらを指定して起動することを祈る。
この時、もう片方のSSDはBitLockerの署名の問題で開けない、という状態になっていた。無事コピーできてるならもう不要でフォーマットして消し飛ばすだけだったので気にしなかったが。
起動できたら引っ越しは概ね完了。
回復パーティションを削除する
※普段回復操作をすることがないので機能するかどうかわからないし、この辺の手順は自信がない
Windowsの回復パーティションの再構築方法 - 株式会社センチュリー
Windowsを普通にインストールすると、おそらく回復パーティションが作られる。これをddでコピーされてしまうため、領域が分断されてしまう。

というわけで手順に従って回復パーティションを削除する。ディスクの管理では行えないのでDISKPARTを使う必要がある。
DISKPART> LIST DISK ディスク 状態 サイズ 空き ダイナ GPT ### ミック ------------ ------------- ------- ------- --- --- ディスク 0 オンライン 1907 GB 0 B ディスク 1 オンライン 1863 GB 1024 KB * ディスク 2 オフライン 931 GB 1024 KB * ディスク 4 オンライン 1678 GB 1024 KB 対象はディスク 1 ディスク 1 が選択されました。 DISKPART> LIST PARTITION Partition ### Type Size Offset ------------- ------------------ ------- ------- Partition 1 システム 100 MB 1024 KB Partition 2 予約済み 16 MB 101 MB Partition 3 プライマリ 930 GB 117 MB Partition 4 回復 810 MB 930 GB Partition 5 プライマリ 931 GB 931 GB 間に"回復"パーティションがいて、前後にCドライブ,Dドライブとなってしまっている なので、一度パーティション 4,5を削除 (本来、ddでコピーしただけの状態ならPartition 5は存在しないが、手癖で新しいパーティションを割り当ててしまったためこうなっている。) > SELECT PARTITION 4 パーティション 4 が選択されました。 DISKPART> delete partition override DiskPart は選択されたパーティションを正常に削除しました。

後はディスクの伸張を行えばよい。もし回復パーティションを作る場合は1~2GBほど残す。

回復パーティションを作る
DISKPARTに戻り回復パーティションを作る作業。
DISKPART> select disk 1 ディスク 1 が選択されました。 DISKPART> create partition primary DiskPart は指定したパーティションの作成に成功しました。 DISKPART> format quick fs=ntfs label="Recovery" 100% 完了しました DiskPart は、ボリュームのフォーマットを完了しました。 DISKPART> assign letter=R DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。 DISKPART> set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac" override DiskPart は、パーティション ID を設定しました。 DISKPART> gpt attributes=0x8000000000000001 選択された GPT パーティションに DiskPart で属性を割り当てました。 DISKPART> REMOVE LETTER=R DiskPart はドライブ文字またはマウント ポイントを正常に削除しました。
(assign letter=Rあたりは要らないかもしれない)
パーティションが出来上がるが、これでは本当にただパーティションができただけなので、回復パーティションにするにはもうひと手間必要。
管理者としてPowerShellかコマンドプロンプトを起動する。
reagentc /enableで回復パーティションを有効化できるのだが、私の環境では失敗した。多分回復パーティションを勝手に削除したのが良くなかったのかもしれない。
> reagentc /enable REAGENTC.EXE: Windows RE イメージは見つかりませんでした。
この場合、次を参考にし、Windows11イメージからwinre.winをC:\Windows\System32\Recoveryにコピーしてから再実行した。
Win10 解決!「REAGENTC.EXE: Windows RE イメージは見つかりませんでした。」 | Windows 技!
> reagentc /enable
REAGENTC.EXE: 操作は成功しました。
> reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:
Windows RE の状態: Enabled
Windows RE の場所: \\?\GLOBALROOT\device\harddisk1\partition4\Recovery\WindowsRE
ブート構成データ (BCD) ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX
回復イメージの場所:
回復イメージ インデックス: 0
カスタム イメージの場所:
カスタム イメージ インデックス: 0
REAGENTC.EXE: 操作は成功しました。
多分これでできている。使わないと思うけど。
おまけ: ベンチマーク
記念に。ちなみに新旧で体感速度はあまり変わった感じはない。


