Linux のパーティションを移す(翻訳)
MovingLinuxPartition - Community Help Wiki
以下は上のページの(大雑把な)翻訳です。自分向け。参考にされる方は自己責任でお願いします。
この覚え書きは Ubuntu Linux のパーティションを、同じHDDや別のHDD上の別のパーティションに移すためのものです。
ネット上の他の記事では、以下の点が古くなっているようです。
なので、以下ここだけで充分な記事にするだけでなく、それらのギャップを埋めることも目指しました。
大まかにはこんなところです。
- 新しい目的用のパーティションを作る
- Linux のパーティションを新しいそれに複製する
- 新しいパーティションのための UUID を作り、更新する
- grub と fstab を更新する
- 新しい grub を指定するよう MBR を更新する
以下のことが想定されています。
- Ubuntu 9.10以降
- Ubuntu が ext4 パーティション上にあること
- Ubuntu の設定が標準的であること(カスタマイズされすぎていない)
- ブートローダーが grub 2 であること
- SystemRescueCd - これには Gparted が付いてくるので、私はこの Rescue CD を好みます。
- swap パーティションを変えていないこと
もし上記のいずれかが満たされていなければ、以下の操作は慎重にやって下さい。
その1:Rescue CD からブートする
- SystemRescueCd はここから入手できます。
- これをCDに焼きます。
- そして Rescue CD をトレイに入れてPCを再起動して下さい。
- もしかしたら、CDからブートするためにBIOSの設定を変える必要があるかも知れません。
- デフォルトのブート・オプションを選択し、カーソルが出たら「wizard」とタイプして下さい。
- すると、Xデスクトップが立ち上がる筈です。
その2:新しいパーティションを作る
- スタートメニューから Gparted を起動して下さい。
- Gparted を使って、移植先のHDDに新しいパーティションを作って下さい。
shell> mkdir ~/ubuntu shell> mount /dev/sdZY ~/ubuntu or shell> mount /dev/hdZY ~/ubuntu #ここでのZYは Ubuntu パーティション・ブロックのデバイス名です(Gpartedの画面を見れば調べられます) shell> cd ~/ubuntu
- 作業が済んだら、必ずアンマウントして下さい。
shell> umount ~/ubuntu
その4:UUIDを作成し、更新する
(訳注:以下のコマンドは sudo を付けるべきです。)
- 「その3」でコピーしただけではUUIDが元とまったく同じなので、コンフリクトして grub は両方のパーティションが区別できません。
- 現在のUUIDを調べるため、以下のようにします(その際、UUIDをコピペしておくことをお勧めします)。
shell> blkid
- そして、次のコマンドでUUIDを作成・更新します。
shell> tune2fs -U random /dev/sdZY or shell> tune2fs -U random /dev/hdZY #ここでのZYは新しいパーティション・ブロックのデバイス名です(Gpartedの画面を見れば調べられます)
- UUIDをベリファイします(今度はすべてのUUIDにちがうIDが付いている筈です)。
shell> blkid
その5:grub と fstab を更新する
- 再起動して Rescue システムから元の Ubuntu へ戻ります。
- 元の ubuntu をブートしたら、gnome→Places option でマウントします。
- 新しいパーティションの grub.cfg を編集します。
shell> gksu gedit /media/<new partition uuid>/boot/grub/grub.cfg &
- 編集するのは新しいパーティションの grub.cfg であり、(元の Ubuntu の)「/boot/grub/grub.cfg」ではありません。
- gedit を使って、「(hdX,Y)」というのを見つけて(それぞれの場合に合わせて下さい)すべて(以下のように)書き換えます。
- ここでの X や Y は、新しいパーティションの /dev/sdZY や /dev/hdZY を元にして書き換えて下さい。もし Z が「a」なら X は「0」だし、もし Z が「b」なら X は「1」という具合に。
- gedit を使って「--fs-uuid --set
」というのを見つけ、新しく作成した UUID を元にしてすべて置き換えて下さい。 - 同じファイルで、「menuentry 'Ubuntu...」というのをすべて「menuentry 'UBUNTU...」に書き換えて下さい。これは単に grub がメインブートメニューに使われるかを検証するために行うだけです。あとで grub-update 時に上書きされます。
- 新しいパーティションの fstab を編集します。
shell> gksu gedit /media/<new partition uuid>/etc/fstab &
その6:新しい grub を指定するよう、MBR を更新する
- ここまでで、ブート可能な二つの適切な Ubuntu が出来ました。次にするのは、新しいパーティションの Ubuntu を、古いそれに依存しなくてもブートできるようにすることです。そして、最終的には古い Ubuntu から乗り換えます。
- 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は必要ありません。
shell> sudo grub-install -d /media/<new partition uuid>/usr/lib/grub/[instance] /dev/sda
- [instance] にはブート可能にしたいバージョンを入れます。
gnome> Run the "Disks" application
- 古い Ubuntu のパーティションを見つけてパーティションをハイライトします。
- [Settings]ギアボタン→[Edit Mount Options] を選択。
- [Mount at Startup] のチェックを外して [OK] をクリック。
- 新しい Ubuntu のパーティションを見つけてパーティションをハイライトします。
- [Settings]ギアボタン→[Edit Mount Options] を選択。
- [Automatic Mount Options] を [OFF] に。
- [Mount at startup] にチェックを入れる。
- [Show in user interface] と [Require additional authorization to mount] はチェックを外す。
- マウントオプションは 「errors=remount-ro」 に。
- マウントポイントは「/」に。
- [OK] をクリック。
- PCを再起動。
- ブート中、新しいパーティションの grub メニューは「UBUNTU...」と表示されなくてはいけません。こうなれば、新しいパーティションの再起動はようやく成功です。
- GRUB 2 のメニューを更新します。
sudo update-grub
- 古い Ubuntu のパーティションを消す前に、新しいパーティションの Ubuntu が完全に動くか確かめて下さい。
- 古い 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は必要ありません。