DDコマンドでクローンコピーして容量の小さいSSDに換装(防備録)Ubuntu版

1.このページについて(Windows版はこちら) (一般的なブートドライブのclonecopyはこちら)
ノートパソコンの起動が2分半ほどかかるので、少しでも速くなればと思ってハードディスクからSSDに換装しました。(結果的に30秒ほどで起動するようになりました。)
これまではハードディスクの換装を行う場合、OSをクリーンインストールして1から環境を整えることが多かったのですが、ちょっと楽をしたいと思ってハードディスクを そのままコピーする方法でやってみました。また、コピー元よりコピー先に容量の大きなデバイスを用意するのが一般的ですが、今回はコピー先のSSDの方がコピー元の ハードディスクより幾分小さい状況でした。
いろいろ失敗しましたが、GoogleのAI Geminiと相談しながら何とか換装できて、一応の手順が分かった気がするので失敗談を挟みながら防備録として残すことにしました。
DDコマンドでコピーする方法として、デバイスのすべてをコピーするものと、コピー先に一旦システムをクリーンインストールして、ルートがあるパーティションだけを DDコマンドでコピーする方法がありましたが、結果的にデバイスのすべてをコピーする方法で換装にこぎ着けたので、この防備録はデバイスの全体をコピーする方法を 中心にします。

2.参考にしたサイト
ここを参考にしました
(※参考といいながら、ほぼこのサイトのとおりですが‥)

3.条件など
OSはubuntu24.04
BIOS設定でブートモードをUEFIにしている
コピー元:内蔵ハードディスク1TB(GPTパーティション)
コピー先 :KIOXIA 内蔵用SSD(SATA3対応)960GB
コピー元の内蔵ハードディスクの使用済み容量は300GB未満で十分余裕がある

4.ポイント
Ubuntuインストール用USBメモリ:インストール目的ではなく内蔵ハードディスク以外で起動する目的で使います。
外付けSATAスタンド(ケース):コピー先SSD用のUSB接続のスタンドですが、実はここに挿したまま起動はできません。
ddコマンド:コピー担当のコマンド(sudoで起動します)
gdiskコマンド:ddコマンドでコピーした後、パーティション情報の誤りを修正するコマンド。(sudoで起動します)

5.インストール用のブータブルUSBメモリの作成
インストール用のブータブルUSBメモリの作成については、ubuntu24.04.1のISOファイルを元に、運用中のubuntu24.04内のブータブルUSB作成プログラムで 16GBのUSBメモリに書き込みました。インストール用USBメモリのパーティション構成を見るとEFIパーティションが作成されていたので、このUSBで起動すると パソコンはUEFIモードで起動することになります。なお、このインストール用ブータブルUSBメモリは換装作業中になぜか壊れてしまって再度作成することになりました。
(余談ですが、USBメモリって本当に壊れやすいです。物理的に壊れることは少ないですが、普通に使っていて突然参照できなくなることは度々あります。そんな時は UbuntuのDiskアプリでパーティションの修復をすれば復活します。ただし、物理的に壊れていなければですが。)

6.インストール用USBメモリからパソコンを起動
BIOS設定でUSBから起動するよう調整が必要な場合もあるでしょう。いつも思うんですが、起動時にBIOSセットアップ画面を出すキーを押すタイミングが微妙で、 セットアップ画面へのキーをもう少し長く表示してくれないものでしょうか。

7.SSDにGPTパーティションテーブルを作成
Gpartedやdiskアプリでコピー先のSSDにGPTパーティションテーブルを作成します。(DDコマンドでデバイスを丸ごとコピーするならこの作業は不必要かも しれませんが念の為。ただ、ネット情報ではコピー先のSSDは事前に初期化するよう説明されています。)
このまとめではDDコマンドでディスクを丸ごとコピーする方法ですが、選択的にルートのパーティションのみをコピーする場合はインストール用USBを使って 一旦UbuntuをSSDにクリーンインストールすることになります。この場合はUEFIモードで起動しておくことと、インストール先のSSDにGPTパーティションテーブルが あることが必須です(今回はUEFIモードで起動させようとしているので)。そうでないと、ubuntuのインストーラはBIOSモードでインストールを行うようです。

8.内蔵ハードディスクのパーティションサイズを切り詰める
コピー元の内蔵ハードディスクのパーティションサイズを切り詰めます。未使用になった部分を除いてSSDのサイズ以下になるようにしました。1TBと960GBですから それほど差はないので100GB程度切り詰めました。もちろん、内蔵ハードディスクの残り容量が十分にあることが前提ですから。

9.DDコマンドでクローンコピー
DDコマンドで内蔵ハードディスクから外付けSATAスタンドに挿したSSDへクローンコピーします。その逆(コピー先のSSDをパソコンに内蔵させて、コピー元の内蔵 ハードディスクを取り出してSATAスタンドに挿す)も可。このまとめとしては内蔵ハードディスクから外付けのSSDにコピーするものとします。コピー先のSSDの容量が 小さいので実際にはクローンコピーにはなりません。
sudo dd if=/dev/sda of=/dev/sdc bs=1024k status=progress
この場合、sdaは内蔵ハードディスク、sdcはSATAケースに挿したSSD。デバイス名はsudo fdisk -lなどで確認しておくのは必須です。 なお、bs=10Mよりbs=1024kの方がコピー速度は1割以上速かったです。
コピーは2時間30分〜3時間かかりました。コピー先のSSDの容量の方が小さいので、SSDの容量を超えた段階でDDコマンドが異常終了します。
この段階でSSDの構造を見るとパーティション分割されていない異常な状態になっています。ネットでググっているとDDコマンドを実行後、Gpartedで中を覗いたら エラーを修復してくれるなどという無責任な書き込みを鵜呑みにして再度DDコマンドを実行するハメになりました。

10.SSDを対象にgdiskコマンドを実行する
上記参考サイトを参考にSSDデバイスを対象にgdiskコマンドを実行します。
sudo gdisk /dev/sdc
タイプするキーは、x,v,e,m,w,y
参考サイトのとおりこの順でタイプするだけです。意味はman gdiskで確認するか、参考サイトをご覧ください。
※今回はGPTデバイスなので心配ありませんが、gdiskはGPTパーティションを操作するためのツールなのでMBR形式のデバイスに対してこのコマンドを 盲目的に実行すると強制的にGPTパーティションに書き換えられてしまいます。その結果、そのデバイスからは起動できなくなります。
ちなみに、gdiskコマンドを実行する前にSSDを内蔵して起動させようとすると当然起動しません。UUIDと一致するデバイスが見つからないというエラーが表示されました。 Geminiで質問するとDDコマンドでコピーした場合によくある症状であると回答があり、ご親切にUUIDの変更方法まで教えてくれます。しかし、鵜呑みにてUUIDを変更する 必要はありません。gdiskコマンドを実行すればすべてうまくいきます。

11.内蔵ハードディスクを取り出しSSDに換装する
一旦、電源を落として、内蔵ハードディスクを取り出しSSDに換装します。
実は私はSSDに換装する前に確認のために外付けのSATSAスタンドにSSDを挿したままUSBメモリの感覚で起動させようとしました。すると何かエラー表示されて起動できない。 それでコピーが失敗したと考えて再度DDコマンドを実行してここでも無駄な時間を費やしました。実は安物のSATAスタンドは外付けドライブとして起動できないものが 多いようです。その時、手間を惜しまずSSDに換装していればと悔やまれます。

12.SSDの未使用領域の調整
SSDに換装して無事起動することを確認したら、再度インストール用USBメモリで起動して、Gpartedやdiskツールで内蔵SSDの未使用領域を既存のパーティションに 取り込むなど調整すれば終了です。(インストール用USBで起動せずとも、普通にSSDからUbuntuを起動してサイズ調整できるばずですが‥)

以上、ハードディスク(1TB)からSSD(960GB)への換装(Ubuntu版)でした。
一般的なブートドライブのclonecopyはこちら
Windows版はこちら
連絡先:hdd2ssd@inblank.net