自分で Linux のパーティションを移してみた結果

/dev/sda4 に入っている Ubuntu MATE を、外付けHDDの /dev/sdb2 に移してみました。目標としては、元の /dev/sda4 も(sdb2 とは別に)そのまま使えるようにするというもの(消すのは簡単)。


まず、sda4 よりも sdb2 の方がサイズが大きいという前提でやる(これは必須らしい。ただし、コピーしたあとだが、パーティションのサイズをどれだけ大きくしたところで、コピー前と同じだけの容量しか使えないようである。要検証)。
コピーは dd コマンドでも Gparted でもどちらでもよし。(しかしどのみちMBRは移さないので、cp コマンドやファイルマネージャのコピペでやってはいけないのか。要検証)

そうすると sdb2 のUUIDが sda4 と同じになってしまうので($ sudo blkid で確認できる)、

$ sudo tune2fs -U random /dev/sdb2

で sdb2 のUUIDを変えておく。

Grub Customizer を起動して保存。これだけで大雑把な修正はOK。ただし、このままだとブートメニューで /dev/sdb2 を選んでも、実際は sda4 が立ち上がってしまう。Grub Customizer にやり残しがあるのだ。

ここからは grub.cfg を編集しないといけない。自分の起動用 gurb は sda1 なので、$ sudo gedit で /dev/sda1 の /boot/grub/grub.cfg を編集する。ここは各自で勝手に変えればよい。
編集するのはもちろん /dev/sdb2 の内容が書かれている場所である。これはよく見て探すしかない。そして、一部 sda4 のUUIDが残って いる部分を手作業で sdb2 のUUIDにすべて変更していく。ちょっと面倒だがここが核心なので頑張る。そして、何かの折に Grub Customizer を立ち上げるとまた設定がもとに戻ってしまうので、書き換えた grub.cfg を別に保存しておくとよい。

これでいい筈。あとはマルチブートしたすべての Linux が立ち上がるか確認してみて欲しい。以上で目標達成です。