30 November 2008

(Linux) 別ハードディスクへのシステム・パーティションのコピー

ハードディスク交換時に、Linuxのシステム用パーティション( / パーティション)を別ハードディスクにコピーして用いる時の作業メモ。

条件1 :複写後も、複写したパーティションを用いてLinuxが起動すること。
条件2 :複写時に、ディスク上で異なったシリンダ位置へ複写される可能性がある

(1) パーティションのコピー(複写)作業

Knoppix 5.1 CD を用いて行う。
Knoppixでシェルを起動し、『su』コマンドでroot権限に昇格した後に、『gparted』(GParted)を実行する。

(GUI上の”コピー”、”貼り付け”コマンドで、簡単にコピー処理が行える)

20081130-gparted1.png
コピーと同時に、サイズ変更も可能

20081130-gparted2.png
コピーを実行すると、自動的にパーティションのチェック(fsck)など、一連の作業が自動的に行われる


なお、シリンダ位置が変更された場合は、このままでは起動不可能。次の処理を行う。

(2) GRUB起動ディスクを作成する

GRUB起動ディスク(起動CD)が無い場合は、GRUBの公式ページに書かれた方法で起動CDを作成する。

[root@localhost ~]# mkdir grubiso [root@localhost ~]# mkdir -p grubiso/boot/grub [root@localhost ~]# cp /usr/share/grub/i386-redhat/stage2_eltorito grubiso/boot/grub [root@localhost ~]# mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso grubiso

なお、CentOS 5.2 で作成した起動CDの iso イメージファイルを、参考までにここに掲載しておく。

GNU GRUB version 0.97 起動CD : grub.isoファイルをダウンロード
(473,088 Bytes)

(3) Linuxのパーティションをマウントして、GRUBを用いた起動時のパラメータをメモする

/boot/grub/grub.conf
title CentOS (2.6.18-92.1.17.el5) root (hd0,11) kernel /boot/vmlinuz-2.6.18-92.1.17.el5 ro root=LABEL=/fedora5 rhgb quiet initrd /boot/initrd-2.6.18-92.1.17.el5.img

(4) 必要であれば、パーティション指定を編集する

/boot/grub/grub.conf および、/etc/fstab で、Linux の / パーティションなどのマウントポイントに変化があった場合は、ここで修正しておく。

特に、fstab で、swap パーティションの変更を忘れがち。

(5) GRUB起動CDで起動する

grub> root (hd0,11) grub> kernel /boot/vmlinuz-2.6.18-92.1.17.el5 ro root=LABEL=/fedora5 rhgb quiet grub> initrd /boot/initrd-2.6.18-92.1.17.el5.img grub> boot

なお、grubプロンプト内でも、tabキーによるパス名の補完が働く。

(6) コピー先のLinuxが起動すれば、GRUBの再インストール

このホームページの『Linuxブートローダ (lilo, grub) メモ』に書かれているような方法で、PBRまたはMBRを書き換える。

例えば、シリンダ移動・サイズ変更があった場合、PBRの第一セクタの変更前後の差分は次のようになっていた。

[root@localhost ~]# cmp -l sda11.bin sda11_org.bin 65 377 200 69 205 25 70 312 211 71 243 130 72 16 13

(7) Windows XPのntldrなどでチェーンロードする場合は、PBRをファイル化する

[root@localhost ~]# dd if=/dev/sda11 of=/dev/sda1/sda11_pbr.bin bs=512 count=1