一応、Fedora Core 6 なシステム。システムが古いが、基本は同じだろう、ということで。
Fedora Core は普通にインストールすると lvm を使ってパーティションを作成しているが、今回はlvmを使っていないものとする。
hda に元のシステムがあり、hdb に新しいハードディスクを接続したと仮定。
hdb に適切にパーティションを切り、ファイルシステムを作成。
ここでは、
hdb1 が /boot
hdb2 が /
hdb3 が swap
hdb4 が /var
とした。
init 1 でシングルモードに入る。
/mnt 以下にhdb のパーティションをマウント。マウント位置は好きなところでよい。
cp -a コマンドを使ってhda のファイルを全てhdbにコピー。
grub コマンドを起動して、grub を設定する。
grub> root (hd1,0)
grub> setup (hd1)
grub> quit
root (hd1,0)
新しいハードディスクの最初のパーティションに、カーネルが入っていることを指定する。
setup (hd1)
新しいハードディスクのMBRを書き換える。
という意味になる。ちなみに、hd0 が元々のハードディスクなので、新しいハードディスクは hd1。
grub.conf (menu.lst) も適切に書き換える。
ここでは、新しいハードディスクを hda として使うことを想定しなければならないので、新しいハードディスクは(hd1)ではなく、(hd0)になる。したがって、splashimage や root の指定も、そのように書き換える。
だいたいこんな感じ。
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.22.14-72.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.22.14-72.fc6 ro root=LABEL=/
initrd /initrd-2.6.22.14.org2.img
swap の指定は、/etc/fstab によって行えばよい。
ただ、fedora の場合、initrd の中の init で
resume /dev/hda5
などとしている。/dev/hda5 というのは元々のswapパーティションだ。これはハイバネーションに関係するもの。おそらく、ハイバネーションによってメモリイメージを swap に書き込んでいるのだろう。だからレジューム時のデータの位置を指定しているらしい。
もしも、/dev/hda5 がなかったりするとシステムパニックになるので、ちゃんとswapパーティションを指定しなければならない。
今回の場合は、
resume /dev/hda3
と書き換える。ハイバネーションを使わないなら、コメントアウトでもいいと思う。
initrd の編集方法は
http://evcom.sblo.jp/article/13623075.html
に書いてあるので参照のこと。
その他、新しいハードディスクが sata の場合は、やはり initrd に sata のドライバを入れてやらなければならないし、ハードディスクのデバイス名も /dev/sda とかになったりする。ただしこの場合でも、grub 的には、(hd0) のままでいける。
あとは応用次第。