配置 HTTP/FTP/TFTP 服务器
我们可以根据自己的情况使用HTTP或者 FTP。
这里,我们将介绍所有2个服务器的配置,以便我们可以选择其中之一。
HTTP服务器
# vi /etc/httpd/conf/httpd.conf ## 在文件的最后面添加下面内容 <VirtualHost 192.168.1.6:80> ServerAdmin root@test.example.com DocumentRoot /var/lib/tftpboot/images ServerName test.example.com ErrorLog logs/test.example.com-error_log CustomLog logs/test.example.com-access_log common </VirtualHost> <Directory /var/lib/tftpboot/images> AllowOverride None Options Indexes FollowSymlinks Order allow,deny Allow from all </Directory>
重启httpd服务
# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
使用浏览器打开服务器ip (http://192.168.1.6/centos/6/i386/) 并验证是否可以看到所有文件。
FTP服务器
# vi /etc/vsftpd/vsftpd.conf anonymous_enable=YES anon_root=/var/lib/tftpboot/images
使用浏览器打开 (ftp://192.168.1.6/centos/6/i386/) 并验证是否可以看到所有文件。
重启服务
# /etc/init.d/vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ]
配置 TFTP 服务器
安装这些软件包后,将以下文件从指定目录复制到 /var/lib/tftpboot
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # cp /usr/share/syslinux/chain.c32 /var/lib/tftpboot/ # cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/ # cp /usr/share/syslinux/memdisk /var/lib/tftpboot/ # cp /usr/share/syslinux/mboot.c32 /var/lib/tftpboot/
接下来我们将创建tftp服务器所需的配置文件
# mkdir /var/lib/tftpboot/pxelinux.cfg
在“/var/lib/tftpboot/pxelinux.cfg”下创建一个新文件“default”并添加以下条目
如果是 HTTP 服务器:
# vi /var/lib/tftpboot/pxelinux.cfg/default DEFAULT menu.c32 PROMPT 0 TIMEOUT 100 ONTIMEOUT Local MENU TITLE PXE Menu MENU seperator LABEL CentOS 6.2 KERNEL images/centos/6/i386/images/pxeboot/vmlinuz APPEND initrd=images/centos/6/i386/images/pxeboot/initrd.img method=http://192.168.1.6/centos/6/i386 devfs=nomount MENU seperator LABEL Local LOCALBOOT 0
这里需要更改的两件事 KERNEL 定义了 PXELINUX 引导加载程序将从其中加载的位置
APPEND 定义要加载的 PXE initrd 镜像文件的位置
如果是 FTP 服务器:
ftp 服务器没有太大变化,只需替换上面文件中的以下行
APPEND initrd=images/centos/6/i386/images/pxeboot/initrd.img method=ftp://192.168.1.6/centos/6/i386 devfs=nomount
在 xinetd 中启用 tftp 服务
# vi /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
重启相关服务
# /etc/init.d/xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ]
确保 tftp 服务器正常工作
登录到我们计划执行 PXE 安装的同一子网中的任何目标节点
安装tftp客户端
# yum install tftp
或者我们也可以使用 rpm 安装,如下所示
# rpm -Uvh /tmp/tftp-5.2-13.el7.x86_64.rpm warning: /tmp/tftp-5.2-13.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY Preparing... ################################# [100%] Updating/installing... 1:tftp-5.2-13.el7 ################################# [100%]
连接到 TFTP 服务器
# tftp (to) 192.168.1.6
如我们所见,它已正确连接
tftp> status Connected to 192.168.1.6. Mode: netascii Verbose: off Tracing: off Literal: off Rexmt-interval: 5 seconds, Max-timeout: 25 seconds
接下来尝试从服务器下载一个 tftp 文件
tftp> get linux-install/rhel7_64/vmlinuz tftp> quit
如果文件存在,现在检查当前路径
# ls vmlinuz vmlinuz
我们的 tftp 工作正常
配置 DHCP 服务器
# vi /etc/dhcp/dhcpd.conf option domain-name "example.com"; option domain-name-servers test.example.com; default-lease-time 600; max-lease-time 7200; authoritative; subnet 192.168.1.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.1.20 192.168.1.25; option broadcast-address 192.168.1.255; option routers 192.168.1.1; allow booting; allow bootp; next-server 192.168.1.6; filename "pxelinux.0"; }
重要的提示:
在 dhcp 服务器中,确保添加这些行
next-server 192.168.1.6; filename "pxelinux.0";
因为这些定义了 tftp 服务器的地址和从 dhcp 服务器获取 IP 地址后要查找的文件
重启相关服务
# service dhcpd restart Shutting down dhcpd: [ OK ] Starting dhcpd: [ OK ]
确保服务在重启后启动
# chkconfig httpd on # chkconfig xinetd on # chkconfig dhcpd on
iptables 规则
对于 DHCP 服务器
# iptables -I INPUT -m state --state NEW -p udp --dport 69 -j ACCEPT
对于 HTTP 服务器
# iptables -I INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
对于 FTP 服务器
# iptables -I INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT
我们已准备好测试 PXE 服务器。
启动一台机器,然后从 Bios 中选择网络启动选项。
你应该看到下面的屏幕
重要的提示:
检查 selinux 策略,因为它可能会阻止 TFTP 和 DHCP 服务。
在我的服务器中,我已经把它禁用。
# getenforceDisabled
在 PXE 服务器上准备安装介质
接下来,我们需要将所有文件从安装媒体(CD/DVD、ISO)复制到我们的 PXE 服务器。
我们还可以在 PXE 服务器上挂载媒体文件,以防我们不想复制所有文件,但使用这种方式我们将只能为一个操作系统配置 PXE 服务器。
要配置多个操作系统,我们必须将操作系统文件复制到不同操作系统的单独目录中。
假设我们想 配置一个 PXE 服务器来安装 CentOS 6.2
让我们创建单独的目录来保存所有安装文件
# mkdir -p /var/lib/tftpboot/images/centos/6/i386/ # mkdir -p /var/lib/tftpboot/images/centos/6/x86_64/
接下来从安装媒体复制安装文件。
如果我们有操作系统的 iso 镜像,我们可以使用 WinSCP(在 Windows 上)复制所有文件。
如果镜像安装在 Linux 机器上,那么我们可以使用 scp 命令进行复制。
为了跳过冗长的过程,我们现在只需将 DVD 安装到相关目的地。
# mount /dev/sr0 /var/lib/tftpboot/images/centos/6/i386/
mount: block device /dev/sr0 is write-protected, mounting read-only
注意:我的 cdrom 安装在 /dev/sr0 上,你的系统可能有所不同。使用df -h查看
准备工作
我们将在Red Hat Linux 6(32 位)上实现PXE服务器。
服务器IP:192.168.1.6
- dhcp
- tftp服务器
- syslinux
- http/ftp(任何一个)
使用 yum 安装所需的包
# yum -y install dhcp tftp-server syslinux http ftp vsftpd
PXE 是 Preboot eXecution Environment 的缩写,它描述了一个客户端服务器标准化环境,用于从网络引导客户端上的软件组件。
其主要用于通过使用网络接口存储在 PXE 服务器上的安装介质来引导客户端计算机。
在本文中,将介绍使用 http 和 ftp 配置 PXE 引导服务器的步骤。