2008年6月14日

Disklessマシン

NFS rootを利用してDisklessなDebianを、デスクトップマシンとして利用したいとなんとなく思いついた。
使うマシンは埃をかぶって眠っていた我が家の最小自作マシン(M/B VIA EPIA-5000)

内蔵していたHDDとケースFANも外して完全に駆動部品無しの無音マシン~
できればVGAカードも乗せたい(意味は無い)
用途は不明。Linuxルータにできるけど、それには大きすぎる。


で、いろんなサイトに出てる情報を掻き集め、試行錯誤しつつ完成。
主に参考にさせていただいたのは diskless Fun's Wiki

そのメモ↓

■必要なもの
・DHCPサーバ
・TFTPサーバ
・NFSサーバ

ウチではDHCPとNFSサーバが別なので、TFTPサーバをNFSサーバと一緒にした
全部Debianなので、説明もDebian用


▼DHCPサーバの設定
以下を /etc/dhcp3/dhcpd.conf に追加

host hogehoge{
hardware ethernet 00:0C:29:xx:xx:xx; #DisklessマシンのMACアドレス
fixed-address 192.168.xxx.xxx;
option host-name "hogehoge";
next-server 192.168.xxx.yyy;  #NFS(TFTP)サーバのIPアドレス
filename "pxelinux.0";
option root-path"/tftpboot/xxxxxxxx"; #NFS rootのパス
}

▼NFSサーバの設定

tftpdのルートとNFS root用のディレクトリは別にしたかったのだけど、PXEブート後にkenelイメージへのパスが渡せなくて挫折(ショボ

で、以下のように作成

mkdir /tftpboot
mkdir /tftpboot/hogehoge #NFS root用

で、hogehoge以下に既存Debianマシンからシステムディレクトリを全て持ってきます。
debootstrap でも作れるらしいが、自分の環境ではうまく行かなかったのでまた挫折
(/lib とかが空)

ただ、現行マシンは色々と入れて大きくなったので、Vmwareに新規に最小インストールした(汗
そこから /bin /boot /dev /etc /home /lib /opt /sbin /usr /var あたりを /tftpboot/hogehoge/. にコピー
そして

chroot /tftpboot/hogehoge # vi /etc/initramfs-tools/initramfs.conf

BOOT=nfs #ここだけ変更 local -> nfs

# update-initramfs -u
# vi /etc/fstab

#
192.168.xxx.yyy:/tftpboot/hogehoge / nfs defaults 0 0
proc /proc proc defaults 0 0

# vi /etc/network/interfaces
(eth0関連を全てコメントアウト)
# exit

これでOK


▼TFTPサーバの設定
まずはインストール

# apt-get install tftpd-hpa

daemonで動かすのも無駄なのでinet経由。/etc/inetd.confを編集してinetd再起動

tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /tftpboot
#↑の最後のパスはtftpdのroot

そして設定を編集

# mkdir /tftpboot/pxelinux.cfg # vi /tftpboot/pxelinux.cfg/default

DEFAULT linux
LABEL Debian etch
KERNEL hogehoge/vmlinuz
APPEND initrd=hogehoge/initrd.img root=/dev/nfs NFSOPTS="-o nolock,udp,retrans=10,wsize=8192,rsize=8192" nfsroot=192.168.127.132:/tftpboot/hogehoge ethernet=eth0 ip=dhcp

/tftpboot/hogehoge/以下が↑のパスに合致するか一応確認。APPNDは一行で
NFSOPTSはNFSのオプション。UDPを指定しなかったらブート時にNFSサーバーの応答がなくなってしまったのでつけてみたら解消したので一応こうした。

でもこれはVmware上のゲストをNFS root化してテストしただけで、リアルマシンではまだ試してません。
↑のkernelは余計なモジュールが多いので、メモリ節約のためにもmakeし直した方がいいかも

それでなくてもこの設定には無駄とかいっぱいありそう...

#次はNFSサーバにもなってるマシンのRAID5化

トラックバックURL

このエントリーのトラックバックURL:
/561

コメントする