Linux のパーティションを移す(翻訳)

MovingLinuxPartition - Community Help Wiki
以下は上のページの(大雑把な)翻訳です。自分向け。参考にされる方は自己責任でお願いします。


この覚え書きは Ubuntu Linuxパーティションを、同じHDDや別のHDD上の別のパーティションに移すためのものです。

ネット上の他の記事では、以下の点が古くなっているようです。

  1. grub 2 (Ubuntu 9.10以降)
  2. パーティション指定の UUID (Ubuntu 6.10以降)

なので、以下ここだけで充分な記事にするだけでなく、それらのギャップを埋めることも目指しました。

大まかにはこんなところです。

  1. 新しい目的用のパーティションを作る
  2. Linuxパーティションを新しいそれに複製する
  3. 新しいパーティションのための UUID を作り、更新する
  4. grub と fstab を更新する
  5. 新しい grub を指定するよう MBR を更新する

以下のことが想定されています。

  1. Ubuntu 9.10以降
  2. Ubuntuext4 パーティション上にあること
  3. Ubuntu の設定が標準的であること(カスタマイズされすぎていない)
  4. ブートローダーが grub 2 であること
  5. SystemRescueCd - これには Gparted が付いてくるので、私はこの Rescue CD を好みます。
  6. swap パーティションを変えていないこと

もし上記のいずれかが満たされていなければ、以下の操作は慎重にやって下さい。

その1:Rescue CD からブートする

  1. SystemRescueCdここから入手できます。
  2. これをCDに焼きます。
  3. そして Rescue CD をトレイに入れてPCを再起動して下さい。
    1. もしかしたら、CDからブートするためにBIOSの設定を変える必要があるかも知れません。
  4. デフォルトのブート・オプションを選択し、カーソルが出たら「wizard」とタイプして下さい。
  5. すると、Xデスクトップが立ち上がる筈です。

その2:新しいパーティションを作る

  1. スタートメニューから Gparted を起動して下さい。
  2. Gparted を使って、移植先のHDDに新しいパーティションを作って下さい。
    1. 新しいパーティションのサイズは、必ず元のパーティションのそれと同じかあるいは大きくして下さい。
    2. サイズを小さくするため、マウントしていまの Ubuntu パーティションの不必要なファイルを削除しても構いません。
shell> mkdir ~/ubuntu
shell> mount /dev/sdZY ~/ubuntu
or
shell> mount /dev/hdZY ~/ubuntu
#ここでのZYは Ubuntu パーティション・ブロックのデバイス名です(Gpartedの画面を見れば調べられます)
shell> cd ~/ubuntu
  1. 作業が済んだら、必ずアンマウントして下さい。
shell> umount ~/ubuntu

その3:Ubuntuパーティションを新しいそれに複製する

  1. Gpartedの画面で、Ubuntu パーティションを右クリックして「Copy」を選択して下さい。
  2. そして、さっき作った新しいパーティションを右クリックし、「Paste」を選択して下さい。
    1. Gpartedは順番にコピーしていきます。しばらくお待ち下さい。
    2. 同じ目的で dd コマンドを選んでもよいのですが、私は次の理由で Gparted を好みます。
      1. データを(ブロックサイズで)上書きコピーするのに最適な方法を判断してくれます。
      2. 進行状況の報告が詳しいです。

その4:UUIDを作成し、更新する

(訳注:以下のコマンドは sudo を付けるべきです。)

  1. 「その3」でコピーしただけではUUIDが元とまったく同じなので、コンフリクトして grub は両方のパーティションが区別できません。
  2. 現在のUUIDを調べるため、以下のようにします(その際、UUIDをコピペしておくことをお勧めします)。
shell> blkid
  1. そして、次のコマンドでUUIDを作成・更新します。
shell> tune2fs -U random /dev/sdZY
or
shell> tune2fs -U random /dev/hdZY
#ここでのZYは新しいパーティション・ブロックのデバイス名です(Gpartedの画面を見れば調べられます)
  1. UUIDをベリファイします(今度はすべてのUUIDにちがうIDが付いている筈です)。
shell> blkid

その5:grub と fstab を更新する

  1. 再起動して Rescue システムから元の Ubuntu へ戻ります。
  2. 元の ubuntu をブートしたら、gnome→Places option でマウントします。
  3. 新しいパーティションgrub.cfg を編集します。
shell> gksu gedit /media/<new partition uuid>/boot/grub/grub.cfg &
  1. 編集するのは新しいパーティションgrub.cfg であり、(元の Ubuntu の)「/boot/grub/grub.cfg」ではありません。
  2. gedit を使って、「(hdX,Y)」というのを見つけて(それぞれの場合に合わせて下さい)すべて(以下のように)書き換えます。
    1. ここでの X や Y は、新しいパーティションの /dev/sdZY や /dev/hdZY を元にして書き換えて下さい。もし Z が「a」なら X は「0」だし、もし Z が「b」なら X は「1」という具合に。
  3. gedit を使って「--fs-uuid --set 」というのを見つけ、新しく作成した UUID を元にしてすべて置き換えて下さい。
  4. 同じファイルで、「menuentry 'Ubuntu...」というのをすべて「menuentry 'UBUNTU...」に書き換えて下さい。これは単に grub がメインブートメニューに使われるかを検証するために行うだけです。あとで grub-update 時に上書きされます。
  5. 新しいパーティションの fstab を編集します。
shell> gksu gedit /media/<new partition uuid>/etc/fstab &
  1. 編集するのは新しいパーティションの fstab であり、古いパーティションの「/etc/fstab」ではありません。
  2. gedit を使い、ルートマウントポイント(「/」のある行)の を、新しく作られたUUIDを元にして書き換えて下さい。

その6:新しい grub を指定するよう、MBR を更新する

  1. ここまでで、ブート可能な二つの適切な Ubuntu が出来ました。次にするのは、新しいパーティションUbuntu を、古いそれに依存しなくてもブートできるようにすることです。そして、最終的には古い Ubuntu から乗り換えます。
  2. MBRを更新する前に、バックアップしておきます。
shell> sudo dd if=/dev/sdZ of=~/sdZ.img bs=1 count=512
or
shell> sudo dd if=/dev/hdZ of=~/sdZ.img bs=1 count=512
#Z は古い Ubuntu パーティションのブロックデバイス名です。
#デバイス名に Y やパーティションIDは必要ありません。
  1. gnome→Places option でパーティションにマウントします(マウントしていない場合)
  2. 新しいパーティションgrub のセットアップを実行します。
shell> sudo grub-install -d /media/<new partition uuid>/usr/lib/grub/[instance] /dev/sda
  1. [instance] にはブート可能にしたいバージョンを入れます。
gnome> Run the "Disks" application
  1. 古い Ubuntuパーティションを見つけてパーティションをハイライトします。
  2. [Settings]ギアボタン→[Edit Mount Options] を選択。
  3. [Mount at Startup] のチェックを外して [OK] をクリック。
  4. 新しい Ubuntuパーティションを見つけてパーティションをハイライトします。
  5. [Settings]ギアボタン→[Edit Mount Options] を選択。
  6. [Automatic Mount Options] を [OFF] に。
  7. [Mount at startup] にチェックを入れる。
  8. [Show in user interface] と [Require additional authorization to mount] はチェックを外す
  9. マウントオプションは 「errors=remount-ro」 に。
  10. マウントポイントは「/」に。
  11. [OK] をクリック。
  1. PCを再起動。
  2. ブート中、新しいパーティションgrub メニューは「UBUNTU...」と表示されなくてはいけません。こうなれば、新しいパーティションの再起動はようやく成功です。
  3. GRUB 2 のメニューを更新します。
sudo update-grub
  1. 古い Ubuntuパーティションを消す前に、新しいパーティションUbuntu が完全に動くか確かめて下さい。
  2. 古い Ubuntuパーティションを戻したい場合は、バックアップしておいた MBR のイメージを戻すだけです。
shell> sudo dd if=~/sdZ.img of=/dev/sdZ bs=1 count=512
or
shell> sudo dd if=~/sdZ.img of=/dev/hdZ bs=1 count=512
#Z は古い Ubuntu パーティションのブロックデバイス名です。
#デバイス名に Y やパーティションIDは必要ありません。