プライマリスレーブに接続されたディスクから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の認識のためだとは思うけど…。