OpenBSD を PxeBoot でインストール

2009–03–02

久々の更新になっちゃいました。 ノートPCが手に入ったのでOpenBSDをインストールすることにしました。 もらってから発覚したのですが、CDROMが壊れているマシンでした。インストールCDからインストールできない訳です。 それならと言うことで、以前から興味のあったPxeBootでインストールしてみることにしました。 構成としてはGentooマシンでdhcpdとtftpをホストしました。

やってみた感想としては、インストールするのにISOを焼く作業がなくなるし、設定もそんなに難しくないのでおすすめです。 インストール作業なんかはそんなに頻繁に行う作業ではないでしょうが、OpenBSDは半年に一回Updateがありますし。

参考にさせてもらったのは以下のドキュメント。 The Gentoo Linux alternative installation method HOWTO OpenBSD FAQ 6.10 How do I boot using PXE? (i386, amd64)

ハマった所は、dhcpd.confで next-server を指定しないといけなかった所と、 PxeBoot環境では Grub は OpenBSD をうまく起動できない所でした。 dhcpdについてですが、設定ファイルでnext-serverを指定しないとサーバ機のIPアドレスを認識してくれませんでした。 また、OpenBSDをpxegrubで起動しようとしたのですが、起動時に下記のようなエラーがでて先に進めませんでした。

 panic: /boot too old: upgrade!	  

Grubの設定を下記のようにすればよいとの情報があったのですが、現状には当てはまらないようです。

 title=Diskless OpenBSD
 root (nd)
 kernel --type=openbsd /bsd.rd	  

うまくいった手順についてですが、まずはGentoo機にdhcpdとtftpをインストールします。

 $ sudo emerge dhcp
 $ sudo emerge tftp-hpa	  

Bootファイル設置用のディレクトリを作成します。

 $ sudo mkdir -p /diskless	  

まず ftp://ftp.jaist.ac.jp/pub/OpenBSD/4.4/i386/bsd.rd][bsd.rd を取得して、 /diskless 配下に置きます。 次に ftp://ftp.jaist.ac.jp/pub/OpenBSD/4.4/i386/pxeboot][pxeboot を取得して、 /diskless 配下に置きます。

最終的な /etc/dhcp/dhcpd.conf の内容は以下のようになりました。

 ddns-update-style none ;
 option routers 192.168.1.10;
 option subnet-mask 255.255.255.0;
 option broadcast-address 192.168.1.255;
 option domain-name-servers 218.176.253.97;
 next-server 192.168.1.12;

 default-lease-time 120;
 max-lease-time 120;

 subnet 192.168.1.0 netmask 255.255.255.0 {
     # クライアントにロードさせるブートファイルを指定
     filename "pxeboot";
     range 192.168.1.36 192.168.1.250;
 }	  

tftpの起動オプションは以下のようになります。 /etc/conf.d/in.tftp

 INTFTPD_PATH="/diskless"
 INTFTPD_USER="nobody"
 INTFTPD_OPTS="-u ${INTFTPD_USER} -l -vvvvvv -p -c -s ${INTFTPD_PATH}"	  

クライアントをネットワークブートし、起動後に boot> プロンプトが表示されるので、 bsd.rd と入力します。 後は通常のインストールと変わりません。