在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
PXE概述 简单说来,PXE服务器就是DHCP服务器+TFTP服务器。网络启动过程大概是这样的(可能并不严谨):客户端发送动态获得IP地址的广播包到网络上,DHCP服务器在收到该广播包后,发送给客户端分配IP地址的回应包,客户端收到回应包后设置自己的IP地址,然后从DHCP服务器获得启动服务器的IP地址(DHCP服务器066选项,这就是TFTP服务器的IP地址)及启动文件名(DHCP服务器067选项,这里的启动文件名就是pxelinux.0或者支持pxe的grub4dos的grldr,当然,也可以是startrom.n12或者使用3com Image Edit创建的pxe启动菜单文件,总之,它应该是一种由pxe启动规范规定的固定格式的可执行文件),然后客户端到联系启动服务器(TFTP服务器)获得启动文件并执行,这样基本上就完成了pxe启动过程。 在Unix或者Linux系统下,DHCP服务器和TFTP服务器一般都是分开设置的,两台服务器甚至可以在两台不同的机器上,其实Windows下的设置也是一样的,但在Windows下,我们可以通过使用HaneWin DHCP服务器软件或TFTPD32一个软件就搞定(我个人推荐使用HaneWin DHCP服务器软件,但TFTPD32设置起来更简单一些,就是效率有些低),详细的设置方法请自己摸索,你只要知道,在设置PXE服务器时,要设置好DHCP和TFTP两个服务器,其中DHCP服务器要设置启动服务器名(066选项)和启动文件名(067选项)。 配置网络 打开 “/etc/network/interfaces” 文件. 复制代码 代码如下:sudo nano /etc/network/interfaces 作如下修改: 复制代码 代码如下:# 回环网络接口 auto lo iface lo inet loopback # 主网络接口 auto eth0 iface eth0 inet static address 192.168.1.20 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 保存文件并退出。这将设置其 IP 地址为“192.168.1.20”。然后重新启动网络服务。 复制代码 代码如下:sudo /etc/init.d/networking restart 安装 DHCP, TFTP 和 NFS: DHCP,TFTP 和 NFS 是 PXE 服务器的重要组成部分。首先,需要更新你的系统并安装所有需要的软件包。 为此,运行以下命令: 复制代码 代码如下:sudo apt-get update sudo apt-get install isc-dhcp-Server inetutils-inetd tftpd-hpa syslinux nfs-kernel-Server 配置 DHCP 服务: DHCP 代表动态主机配置协议Dynamic Host Configuration Protocol,它主要用于动态分配网络配置参数,如用于接口和服务的 IP 地址。在 PXE 环境中,DHCP 服务器允许客户端请求并自动获得一个 IP 地址来访问网络。 1、编辑 “/etc/default/dhcp3-server” 文件. 复制代码 代码如下:sudo nano /etc/default/dhcp3-server 作如下修改: 复制代码 代码如下:INTERFACES="eth0" 保存 (Ctrl + o) 并退出 (Ctrl + x) 文件. 2、编辑 “/etc/dhcp3/dhcpd.conf” 文件: 复制代码 代码如下:sudo nano /etc/dhcp/dhcpd.conf 作如下修改: 复制代码 代码如下:default-lease-time 600; max-lease-time 7200; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.21 192.168.1.240; option subnet-mask 255.255.255.0; option routers 192.168.1.20; option broadcast-address 192.168.1.255; filename "pxelinux.0"; next-Server 192.168.1.20; } 保存文件并退出。 3、启动 DHCP 服务. 复制代码 代码如下:sudo /etc/init.d/isc-dhcp-server start 配置 TFTP 服务器: TFTP 是一种文件传输协议,类似于 FTP,但它不用进行用户认证也不能列出目录。TFTP 服务器总是监听网络上的 PXE 客户端的请求。当它检测到网络中有 PXE 客户端请求 PXE 服务时,它将提供包含引导菜单的网络数据包。 1、配置 TFTP 时,需要编辑 “/etc/inetd.conf” 文件. 复制代码 代码如下:sudo nano /etc/inetd.conf 作如下修改: 复制代码 代码如下:tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot 保存文件并退出。 2、编辑 “/etc/default/tftpd-hpa” 文件。 复制代码 代码如下:sudo nano /etc/default/tftpd-hpa 作如下修改: 复制代码 代码如下:TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/lib/tftpboot" TFTP_ADDRESS="[:0.0.0.0:]:69" TFTP_OPTIONS="--secure" RUN_DAEMON="yes" OPTIONS="-l -s /var/lib/tftpboot" 保存文件并退出。 3、 使用 xinetd 让 boot 服务在每次系统开机时自动启动,并启动tftpd服务。 复制代码 代码如下:sudo update-inetd --enable BOOT sudo service tftpd-hpa start 4、检查状态。 复制代码 代码如下:sudo netstat -lu 它将如下所示: 复制代码 代码如下:Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 *:tftp *:* 配置 PXE 启动文件 现在,你需要将 PXE 引导文件 “pxelinux.0” 放在 TFTP 根目录下。为 TFTP 创建目录结构,并从 “/usr/lib/syslinux/” 复制 syslinux 提供的所有引导程序文件到 “/var/lib/tftpboot/” 下,操作如下: 复制代码 代码如下:sudo mkdir /var/lib/tftpboot sudo mkdir /var/lib/tftpboot/pxelinux.cfg sudo mkdir -p /var/lib/tftpboot/Ubuntu/14.04/amd64/ sudo cp /usr/lib/syslinux/vesamenu.c32 /var/lib/tftpboot/ sudo cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/ 设置 PXELINUX 配置文件 PXE 配置文件定义了 PXE 客户端启动时显示的菜单,它能引导并与 TFTP 服务器关联。默认情况下,当一个 PXE 客户端启动时,它会使用自己的 MAC 地址指定要读取的配置文件,所以我们需要创建一个包含可引导内核列表的默认文件。 编辑 PXE 服务器配置文件,使用有效的安装选项。 编辑 “/var/lib/tftpboot/pxelinux.cfg/default”: 复制代码 代码如下:sudo nano /var/lib/tftpboot/pxelinux.cfg/default 作如下修改: 复制代码 代码如下:DEFAULT vesamenu.c32 TIMEOUT 100 PROMPT 0 MENU INCLUDE pxelinux.cfg/PXE.conf NOESCAPE 1 LABEL Try Ubuntu 14.04 Desktop MENU LABEL Try Ubuntu 14.04 Desktop kernel Ubuntu/vmlinuz append boot=casper netboot=nfs nfsroot=192.168.1.20:/var/lib/tftpboot/Ubuntu/14.04/amd64 initrd=Ubuntu/initrd.lz quiet splash ENDTEXT LABEL Install Ubuntu 14.04 Desktop MENU LABEL Install Ubuntu 14.04 Desktop kernel Ubuntu/vmlinuz append boot=casper automatic-ubiquity netboot=nfs nfsroot=192.168.1.20:/var/lib/tftpboot/Ubuntu/14.04/amd64 initrd=Ubuntu/initrd.lz quiet splash ENDTEXT 保存文件并退出。 编辑 “/var/lib/tftpboot/pxelinux.cfg/pxe.conf” 文件。 复制代码 代码如下:sudo nano /var/lib/tftpboot/pxelinux.cfg/pxe.conf 作如下修改: 复制代码 代码如下:MENU TITLE PXE Server NOESCAPE 1 ALLOWOPTIONS 1 PROMPT 0 MENU WIDTH 80 MENU ROWS 14 MENU TABMSGROW 24 MENU MARGIN 10 MENU COLOR border 30;44 #ffffffff #00000000 std 保存文件并退出。 为 PXE 服务器添加 Ubuntu 14.04 桌面启动镜像 复制代码 代码如下:sudo cd /mnt sudo wget http://releases.ubuntu.com/14.04/ubuntu-14.04.3-desktop-amd64.iso 注意: 下载用的 URL 可能会改变,因为 ISO 镜像会进行更新。如果上面的网址无法访问,看看这个网站,了解最新的下载链接。 挂载 ISO 文件,使用以下命令将所有文件复制到 TFTP文件夹中: 复制代码 代码如下:sudo mount -o loop /mnt/ubuntu-14.04.3-desktop-amd64.iso /media/ sudo cp -r /media/* /var/lib/tftpboot/Ubuntu/14.04/amd64/ sudo cp -r /media/.disk /var/lib/tftpboot/Ubuntu/14.04/amd64/ sudo cp /media/casper/initrd.lz /media/casper/vmlinuz /var/lib/tftpboot/Ubuntu/ 将导出的 ISO 目录配置到 NFS 服务器上 现在,你需要通过 NFS 协议来设置“安装源镜像( Installation Source Mirrors)”。你还可以使用 HTTP 和 FTP 来安装源镜像。在这里,我已经使用 NFS 输出 ISO 内容。 要配置 NFS 服务器,你需要编辑 “/etc/exports” 文件。 复制代码 代码如下:sudo nano /etc/exports 作如下修改: 复制代码 代码如下:/var/lib/tftpboot/Ubuntu/14.04/amd64 *(ro,async,no_root_squash,no_subtree_check) 保存文件并退出。为使更改生效,输出并启动 NFS 服务。 复制代码 代码如下:sudo exportfs -a sudo /etc/init.d/nfs-kernel-server start 现在,你的 PXE 服务器已经准备就绪。 配置网络引导 PXE 客户端 现在准备出发吧 - 用网络引导启动你的 PXE 客户端计算机,你现在应该看到一个子菜单,显示了我们创建的 Ubuntu 14.04 桌面的菜单项。 结论 |
请发表评论