wheezyをPXEboot+NFSroot

cf. http://blog.asial.co.jp/329
cf. http://rkd.zgib.net/wiki/DebianNotes/Netboot

NFSROOTを有効にしたカーネルをビルド

configを変えてmake-kpkgする。

基本的にはNFS bootを有効にして、NICのドライバをYに:
diff:

3c3
< # Linux/x86 3.2.9 Kernel Configuration
---
> # Linux/x86_64 3.2.9-nfsroot Kernel Configuration
638c638,641
< # CONFIG_IP_PNP is not set
---
> CONFIG_IP_PNP=y
> CONFIG_IP_PNP_DHCP=y
> CONFIG_IP_PNP_BOOTP=y
> CONFIG_IP_PNP_RARP=y
1903c1906
< CONFIG_MII=m
---
> CONFIG_MII=y
2036,2039c2039,2041
< CONFIG_E1000=m
< CONFIG_E1000E=m
< CONFIG_IGB=m
< CONFIG_IGB_DCA=y
---
> CONFIG_E1000=y
> CONFIG_E1000E=y
> CONFIG_IGB=y
2094,2095c2096,2097
< CONFIG_8139CP=m
< CONFIG_8139TOO=m
---
> CONFIG_8139CP=y
> CONFIG_8139TOO=y
2100c2102
< CONFIG_R8169=m
---
> CONFIG_R8169=y
2429c2431
< CONFIG_VMXNET3=m
---
> CONFIG_VMXNET3=y
5138c5140
< CONFIG_NFS_FS=m
---
> CONFIG_NFS_FS=y
5143c5145
< CONFIG_PNFS_FILE_LAYOUT=m
---
> CONFIG_PNFS_FILE_LAYOUT=y
5146c5148
< CONFIG_NFS_FSCACHE=y
---
> CONFIG_ROOT_NFS=y
5155c5157
< CONFIG_LOCKD=m
---
> CONFIG_LOCKD=y
5157c5159
< CONFIG_NFS_ACL_SUPPORT=m
---
> CONFIG_NFS_ACL_SUPPORT=y
5159,5160c5161,5162
< CONFIG_SUNRPC=m
< CONFIG_SUNRPC_GSS=m
---
> CONFIG_SUNRPC=y
> CONFIG_SUNRPC_GSS=y

ビルド方法:http://d.hatena.ne.jp/nyaxt/20110131#1296473986

debootstrap + chrootで初期設定

sudo debootstrap --arch amd64 wheezy . http://ftp.jp.debian.org/debian

sudo mount -t proc none /mnt/data/nfsroot/proc
sudo chroot /mnt/data/nfsroot

chroot> dpkg -i *.deb # さっきのカーネルdeb

chroot> passwd
chroot> rm /etc/hostname

chroot> apt-get install initramfs-tools nfs-common
chroot> vi /etc/initramfs-tools/initramfs.conf
MODULES=netboot
BOOT=nfs
chroot> update-initramfs -k 3.2.9-nfsroot -c
 # -c: create new

うーん。apt-get install nfs-commonでchrootの中にstatdが走りだそうとするのがこわいな。

syslinuxいれる

chroot> sudo apt-get install syslinux
chroot> cp /usr/lib/syslinux/pxelinux.0 /boot
chroot> mkdir /boot/pxelinux.cfg
chroot> vim /boot/pxelinux.cfg/default 
DEFAULT debian-wheezy

LABEL debian-wheezy
  KERNEL vmlinuz-3.2.9-nfsroot
  APPEND root=/dev/nfs nfsroot=172.22.1.200:/nfsroot initrd=initrd.img-3.2.9-nfsroot ip=dhcp clocksource=hpet
  IPAPPEND 0

172.22.1.200はnfsサーバのアドレス

tftp設定

apt-get install tftpd-hpa
vim /etc/defaults/tftpd-hpa # rootを/mnt/data/nfsroot/bootに

nfs設定

nfsv3だとさっくりいく。
nfsv4は諦めた。(initrd作ってやってそこでmountしてchrootすればいいらしい)

nfssrv> vim /etc/fstab
/mnt/data/nfsroot       /nfsroot        none    bind    0       0
nfssrv> vim /etc/exports
/nfsroot	172.22.0.0/20(rw,sync,no_subtree_check,no_root_squash)
nfssrv> exportfs -ar

以上