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

 

 

 

 

 

 

 

 

posted @ 2012-10-08 08:50  随身笔记  阅读(1095)  评论(0编辑  收藏  举报