Windows 11環境が入ったSSDを別のSSDにLinuxのddコマンドで引っ越し

これらは正規の手順ではないので自己責任で。

  • 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環境が必要かもしれない(オフラインで試したことがないのでわからない)

USBメモリRufusでISOイメージを焼き付けて完成。

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でコピーされてしまうため、領域が分断されてしまう。

Dドライブがあるのは手癖で作ってしまったため。本来は未割当になっている

というわけで手順に従って回復パーティションを削除する。ディスクの管理では行えないので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個にまとまる

後はディスクの伸張を行えばよい。もし回復パーティションを作る場合は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.winC:\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: 操作は成功しました。

多分これでできている。使わないと思うけど。

おまけ: ベンチマーク

記念に。ちなみに新旧で体感速度はあまり変わった感じはない。

SSD: CT1000P1SSD8

SSD: WD_BLACK SN7100

SSDモード(IO多重化)でベンチマークするともう少し早くなる。

SSD: WD_BLACK SN7100 (SSDモード)