最近、ディスクがクラッシュしたのでpxegrubの設定をやり直した。手順は以下のようにやる。

pxegrubはgrubを使用しネットワーク越しにカーネルを立ち上げる事ができる。カーネル設計者にとってメリットはGRUBのマルチブートを利用できる事や、カーネルの再起動がすぐにできることである。pxegrubを利用するときネットワークカードの制限があるのでGRUBに対応しているネットワークカードを買うか、仮想マシンを利用するかどちらかにしなければならない。

pxegrub概要

pxegrubを使用しカーネルを立ち上げるにはいくつかの手順が必要になる。

  1. tftpserverを立ち上げる(開発マシンで立ち上げるとよい)。
  2. tftpserverにカーネルをアップロード
  3. 実機または仮想マシンPXE用にコンパイルしたGRUBをインストール
  4. 実機または仮想マシンの/boot/grub/menu.lstを編集
具体的には次のように行う。

tftpserverをインストール

$ sudo aptitude install tftpd
$ sudo mkdir /tftpboot # ここにカーネルをアップロードする。
$ vi /etc/xinetd.d/tftp
$ sudo /etc/init.d/xinetd restart

tftpserverの設定ファイルのサンプルは以下の用になる。

service tftp
{
        socket_type     = dgram
        protocol        = udp
        wait            = yes
        user            = your_user_name
        server          = /usr/sbin/in.tftpd
        server_args     = -s /tftpboot
        disable         = no
        per_source      = 11
        cps             = 100 2
}

実機または仮想マシンで以下のように行う。以下はVMwareで行ったので./configureのオプションでlanceのネットワークカードを有効にしている。

$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/grub co grub
$ sudo aptitude install cvs gcc autconf automake
$ cd grub
$ ./configure --prefix=/usr/local/ --enable-diskless --enable-lance
$ make
$ make check
$ make install
$ sudo grub-install /dev/hda
$ sudo update-grub
$ sudo vi /boot/grub/menu.lst

/boot/grub/menu.lstのサンプルは以下のようなコードを追加すればよい。

title pxegrub + kernel
dhcp
tfptserver	server_address
root		(nd)
kernel		/kernel
#module		/init
#module		/fs
#module		/pm

実機または仮想マシンを立ち上げ"pxegrub + kernel"を選べばカーネルを立ち上げる事ができる。