プライマリスレーブに接続されたディスクからgrub起動

というのは、ディスク移行でプライマリスレーブに繋いだディスクにcpioでがっつりデータを移して、起動するか確認してみたかったので。大雑把な流れとしては、bootableの設定、grubのインストール、menu.lstの書き換え、fstabの書き換えですかな。

  • bootableの設定。

いるのかどうか分からないけど、fdiskでvmlinuzの入っているパーティションにbootableのマークを付ける。ほんとにいるのかなー。

  • grubのインストール。

/boot/grub/deviace.mapを書き換える。後述する、grubの手動起動の内容と反しているようだが、とりあえずhd0はhda、hd1にhdbを指定しておけばおk。

(hd0) /dev/hda
(hd1) /dev/hdb

インストールは教科書どおり。

# grub-install /dev/hdb

  • menu.lstの書き換え

kernelに渡す引数を変更する必要があるので、スレーブ側のmenu.lstを書き換える。/mntにスレーブのルートを載せているなら/mnt/boot/grub/menu.lstになる。

title new HDD
root (hd0,0)
kernel /boot/vmlinuz root=/dev/hdb1 ro
initrd /boot/initrd.img
savedefault

kernel,initrdのパスは「root (hd?,?)」で指定したパーティションを起点として相対パスで記述する。今回のシステムは、ファイルシステム全体がhdb1に収まっていて、vmlinuz、initrd.imgが/bootにあるイメージ。/bootが別パーティションに分けられている場合はrootでbootが含まれるパーティションを選んで、/vmlinuzと指定する。
カーネルパラメタのroot=/dev/hd??にはルートファイルシステムのパスを渡しとけ。

  • fstabの書き換え

折角起動してもfstabにマスタ側パーティションが記述されていたら(俺的に)あんまり意味がないので、fstabをコソーリ書き換えておく。スレーブからマスターに換装するときはまた書き換える必要がある(menu.lstも)。面倒だね。

  • 起動する。

スレーブ側を優先起動させると何故かスレーブ側がhd0になる。BIOSの認識のためだとは思うけど…。