raspberry pi 配置 pxe server (debian)
以前在大学时用过pxe启动,安装系统或维护等很方便。一直好奇pxe server是怎样工作的。最近入手一个raspberry pi(以下简称rpi),正好搭建一个pxe server玩玩。
pxe server 大约需要以下组件,但rpi不一定需要全部安装
- tftp-server (必须安装)
- dhcp (可以配置已有的dhcp server,比如家里的路由)
- httpd 或 ftpd (貌似不是必须,详情见下文)
- syslinux (提供pxelinux.0等文件)
因为家里的路由有DNSMasq,所以rpi不需要安装dhcp服务。 以下是我个人的配置,仅供参考。
1 apt-get install tftpd syslinux-common vsftp
之所以安装vsftpd,是由于配置clonezilla时其自带的tftpd不能正确下载文件系统文件filesystem.quashfs。可能是clonezilla脚本有点问题吧。
tftpd的配置文件是 /etc/inetd.conf,默认目录为/srv/tftp。pxe相关的文件都放到这个目录下,要保证所有人可读。拷贝启动用文件pxelinux.0,这里我用gpxelinux.0。
cp /usr/lib/syslinux/{gpxelinux.0 ,menu.c32} /srv/tftp/ mkdir /srv/tftp/bin cp /usr/lib/syslinux/memdisk /srv/tftp/bin/
然后需要配置pxe,因为只是在家里玩玩,就只用最简单的方法
mkdir /srv/tftp/pxelinux.cfg touch /srv/tftp/pxelinux.cfg/default
把以下内容写到 /srv/tftp/pxelinux.cfg/default 里:
DEFAULT menu.c32 PROMPT 0 MENU TITLE PXE Boot TIMEOUT 100 ONTIMEOUT local LABEL local MENU LABEL ^Boot from local disk LOCALBOOT 0 LABEL Clonezilla-live-x86_64 MENU LABEL Clonezilla-live-x86_64 kernel clonezilla/vmlinuz APPEND initrd=clonezilla/initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="" vga=788 nosplash noprompt fetch=ftp://$(FTP_SERVER_IP)/clonezilla/filesystem.squashfs
其中$(FTP_SERVER_IP)是rpi的ip地址。接着,我们要到路由器(hdcp服务器)里设置一下,详情参考这里,tomato的话参考这里。由于使用的是gpxelinux.0,所以参数应该写成
dhcp-boot=gpxelinux.0,,X.X.X.X
X.X.X.X 就是rpi的ip。
就这样pxe启动部分应该就可以用了。可以找一台支持pxe的机器试试。
然后很明显clonezilla还不能用,因为还没下载嘛。。。好了,下载完后根据官方教程把 vmlinuz,initrd.img 和 filesystem.squashfs 拷贝到 /srv/tftp/clonezilla 下,其实位置随意,只要是在 /srv/tftp 目录里并且对 /srv/tftp/pxelinux.cfg/default 作出相应改动即可。最后要对vsftpd作些设置。配置文件为 /etc/vsftpd.conf,要改动两个地方
1) nonymous_enable=NO 改为 nonymous_enable=YES
2)添加一行anon_root=/srv/tftp
这样所有工作都完成了,一个简陋的pxe server就搭好了。
当然,我们还可以启动其他的系统镜像,只需要在 /srv/tftp/pxelinux.cfg/default 添加相应的entry就可以了,格式如下
LABEL freedos MENU LABEL dos box KERNEL bin/memdisk APPEND initrd=kernels/freedos.img.gz
补充参考:
[1] http://www.debian-administration.org/articles/478
[2] http://elinux.org/R-Pi_PXE_Server
[3] http://technet.microsoft.com/en-us/library/cc732649(v=ws.10).aspx