安装 tftp-hpa syslinux dnsmasq nfs-kernel-server
aptitude install tftp-hpa syslinux dnsmasq nfs-kernel-server
修改 /etc/default/tftp-hpa 让tftp-hpa可以启动,
tftp的根在 /var/lib/tftpboot ,用于引导的配置文件和引导程序都放在/var/lib/tftpboot
memdisk, menu.c32这些程序也要从syslinux的安装目录放到 /var/lib/tftpboot
memdisk用来载入*个内存虚拟软盘, 是syslinux里面包含的,在非netboot上也是可以使用的。
memdisk在我们这里不是必须的,但是不妨用它在无盘启动菜单里增加几个软盘启动菜单比如ghost之类的。
syslinux这个bootloader包含有4个软件,syslinux(fat方式) extlinux(ext2方式) , pxelinux(网络启动方式),cdlinux(cdrom启动方式)
他们的菜单配置文件*不同, 但是格式都是*样的,
我们这里用dnsmasq里面的dhcp功能,配合tftp-hpa 把pxelinux程序以及配置文件,以及后续的内核,ram影像发送到无盘客户机。
dnsmasq设置比较简单,正常打开dhcp功能后,在配置文件增加*行
dhcp_boot=pxelinux.0,boothost,192.168.12.25
pxelinux.0 是pxelinux的执行文件, 192.168.12.25是tftp服务器。
pxelinux的配置文件在 pxelinux.cfg/default ,
如果default文件里面包含了 default menu.c32
pxelinux就会调入menu.c32程序, 用图形的方式把default里面定义的菜单显示出来。
pxelinux的配置文件的语法,可以参考cdlinux或者syslinux的例子来做, 无非是设定kernel文件位置, kernel参数, initrd文件位置
能够引导linux后,剩下的就是制作*个支持nfs做root文件系统的initrd了,
这个在debian下异常的简单, 只要修改 /etc/initramfs-tools/initramfs.conf
把里面的
BOOT=local
改成
BOOT=nfs
然后执行update-initramfs -k `uname -r`
然后把相应的/boot/initrd文件复制到/var/lib/tftpboot, 当然kernel文件也要复制*份过来。
剩下的就是通过nfs把 根文件系统发布出来, 然后nfs的服务器*和共享*在pxelinux的配置文件里面指定。