debian作无盘启动
2008-11-24    刘世伟   
打印自: 安恒公司
地址: HTTP://tcpdump.anheng.com.cn/news/article.php?articleid=1637
debian作无盘启动
安装 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的配置文件里面指定。
责任编辑: admin