第一次听到PXE的时候感觉这东西很神秘啊,但是实践过一次之后觉得这东西很容易理解,先简单的介绍一下原理吧:

    PXE是由DHCP、TFTP和NFS(FTP或其它能实现共享的服务)组成的。无系统的新计算机要将bios启动方式改为firest为硬盘,second为网络。

    为什么要先用硬盘启动?

    因为这里我犯过一个错误,将bios直接改为网络为第一启动项,这样尽管能够从PXE服务器获取到系统并安装,但是当系统重新启动的时候会再次运行系统的网络安装程序,造成反复安装。而将硬盘作为第一启动的时候,因为一开是硬盘是没有东西的所以自然就会走网络启动,而当完成安装后硬盘中有了系统就不会再从网络获取了

    无系统的计算机首先会通过网卡从DHCP服务器哪里获取一个IP地址,同时还会获得TFTP服务器的地址,这是计算机就会去链接TFTP服务器获取安装系统必须的三个文件和配置了安装什么系统的配置文件,配置文件中定义了共享了的iso镜像的位置(如果你做了kickstar,那么系统会再配置文件中找到ks文件的保存位置,再找到对应的ks文件)。

         客户端                       NFS                  TFTP                    DHCP

          请求IP----------------------------------------------------------------------------

           -------------------------------------------------------分配IP 发送TFTP 服务器信息

   连接TFTP服务器-----------------------------------(udp)

   请求下载对应文件---------------------------------

   根据配置文件信息找共享iso--

                                      

    说了这么多是不是有点晕那,但是配置文件却很简单,我们先来说DHCP的配置吧:

    Linux的系统都是默认安装了DHCP的Client端服务,而没有安装服务器端的服务,所以要先安装DHCP服务。

    完成安装后,就要copy配置文件到/etc目录下了

    cp /usr/share/doc/dhcp-*/dhcpd.sample.conf /etc/dhcpd.conf(*为DHCP的版本号)

    之后打开dhcpd.conf配置文件,将原文件中的net和ipaddr都改为你自己的后,添加一下内容:

    allow BOOTP;

    allow BOOTING;

    next-server “x.x.x.x”;

    filename “/tftpboot/pxelinux.0”;

    上面四行最好写在全局设置里面,网络上很多都是写在host里面,但是我自己做的时候放在host里面没有成功,改到全局设置里面就可以了。

    保存退出后重启服务,并且记住无论什么服务我们都要将它加到开机启动中。

    service dhcpd restart

    chkconfig --level 345 dhcpd on

    这样DHCP就完成了,接下来是TFTP了,因为tftp这个服务过于简单,所以再linux中是没有tftp的进程的,所以系统将许多这类没有进程的服务都交给一个比较大的服务管理,那就是xinetd。tftp也是很多linux默认就安装了的,只需要修改一下配置文件:

    vim /etc/xinetd.d/tftp

    打开后,将disable项的值由yes改为no就可以了。

    系统会自动创建一个tftp的根目录,那就是tftproot。这里我们需要copy几个文件到这个目录。这几个文件都可以在系统或者光盘镜像中找到

    cp /mnt/isolinux/initrd.img ./

    cp /mnt/isolinux/vmlinuz ./

    cp /usr/lib/syslinux/pxelinux.0 ./

    除了上面三个文件,还需要创建一个目录pxelinux.cfg。我们要再这个目录中创建一个default的文件,内容为:

    default linux

    prompt 1

    timeout 60

    label linux

    kernel vmlinuz

    append initrd=initrd.img

    保存推出后

    service xinetd restart

    chkconfig --level 345 xinetd on

    chkconfig --level 345 tftpd on

    这样tftp也完成了,下面就是最后的nfs了,nfs的配置也是最简单的,先将光盘镜像iso挂在一个目录上我们直接挂再mnt上了

    mount -o loop /root/xxxxxx.iso /mnt

    之后打开nfs的配置文件/etc/exports

    再文档中加入 /mnt   *(ro) 因为这是一个实验,在实际工作中是不能这么配置的

    保存就可以了。

    service nfs restart

    这样我们启动那个没有系统的电脑,是不是已经变得向插了光盘开机一样了那!如果需要无人留守的自动安装则需要配合kickstart就可以了