阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

RHEL/CentOS 7 中配置 PXE 网络启动服务器

210次阅读
没有评论

共计 9107 个字符,预计需要花费 23 分钟才能阅读完成。

PXE 服务器——预启动执行环境——指示客户端计算机直接从网络接口启动、运行或安装操作系统,而不需要烧录 CD/DVD 或使用某个物理介质,它可以减轻你网络中多台机器同时安装 Linux 发行版的工作。

RHEL/CentOS 7 中配置 PXE 网络启动服务器

在 RHEL/CentOS 7 中设置 PXE 网络启动

前置阅读

  • CentOS 7 最小化安装步骤
  • RHEL 7 最小化安装步骤
  • 在 RHEL/CentOS 7 中配置静态 IP 地址
  • 移除 RHEL/CentOS 7 中不要的服务
  • 安装 NTP 服务器以设置 RHEL/CentOS 7 的正确时间

本文将介绍如何在配置有本地镜像安装仓库的 RHEL/CentOS 7 64 位上安装并配置一台PXE 服务器,仓库源由 CentOS 7 DVD 的 ISO 镜像提供,并由DNSMASQ 服务器提供解析。

该机器提供了 DNSDHCP服务,用于网络启动引导的 Syslinux 包,TFTP-Server——提供了可通过网络使用 小文件传输协议 下载的可启动镜像,以及提供本地挂载 DVD 镜像的 VSFTPD 服务器——它将扮演官方 RHEL/CentOS 7 镜像安装仓库的角色,安装器将从这里提取所需的包。

步骤 1:安装并配置 DNSMASQ 服务器

1. 不需要提醒你来确定你的网络接口卡吧,除非你的服务器上有多个网络接口卡,该网卡必须配置有静态 IP 地址,该 IP 地址必须处于你要提供 PXE 服务的网段中。

那么,在你配置好静态 IP 地址后,更新你的系统并进行其它初始设置。请使用以下命令来安装 DNSMASQ 进程。

  1. # yum install dnsmasq

RHEL/CentOS 7 中配置 PXE 网络启动服务器

安装 dnsmasq 包

2. DNSMASQ 的默认的主配置文件位于 /etc 目录中,虽然不需要任何说明就能看懂,但编辑起来确实相当困难的,即使有很详细的说明性注释。

首先,确保你备份了该文件,以便你需要在以后对它进行恢复。然后使用你爱用的文本编辑器创建一个新的空配置文件,命令如下。

  1. # mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
  2. # nano /etc/dnsmasq.conf

3. 现在,复制并粘贴以下配置到 dnsmasq.conf 文件中,并确保根据如下说明进行相应修改,以适应你的网络设置。

  1. interface=eno16777736,lo
  2. #bind-interfaces
  3. domain=centos7.lan
  4. # DHCP range-leases
  5. dhcprange= eno16777736,192.168.1.3,192.168.1.253,255.255.255.0,1h
  6. # PXE
  7. dhcpboot=pxelinux.0,pxeserver,192.168.1.20
  8. # Gateway
  9. dhcpoption=3,192.168.1.1
  10. # DNS
  11. dhcpoption=6,92.168.1.1,8.8.8.8
  12. server=8.8.4.4
  13. # Broadcast Address
  14. dhcpoption=28,10.0.0.255
  15. # NTP Server
  16. dhcpoption=42,0.0.0.0
  17.  
  18. pxeprompt=“Press F8 for menu.”,60
  19. pxeservice=x86PC,“Install CentOS 7 from network server 192.168.1.20”, pxelinux
  20. enabletftp
  21. tftproot=/var/lib/tftpboot

RHEL/CentOS 7 中配置 PXE 网络启动服务器

Dnsmasq 配置

你需要修改的声明有以下这些:

  • interface – 服务器需要监听并提供服务的网络接口。
  • bind-interfaces – 取消注释来绑定到该网络接口
  • domain – 替换为你的域名。
  • dhcp-range – 替换为你的网络掩码定义的网段。
  • dhcp-boot – 替换该 IP 地址为你的网络接口 IP 地址。
  • dhcp-option=3,192.168.1.1 – 替换该 IP 地址为你的网段的网关。
  • dhcp-option=6,92.168.1.1 – 替换该 IP 地址为你的 DNS 服务器 IP——可以定义多个 IP 地址。
  • server=8.8.4.4 – 这里放置 DNS 转发服务器 IP 地址。
  • dhcp-option=28,10.0.0.255 – 替换该 IP 地址为网络广播地址——可选项。
  • dhcp-option=42,0.0.0.0 – 这里放置网络时钟服务器——可选项(0.0.0.0 地址表示参考自身)。
  • pxe-prompt – 保持默认——按 F8 进入菜单,60 秒等待时间。
  • pxe=service – 使用 x86PC 作为 32 为 /64 位架构,并在字符串引述中输入菜单描述提示。其它类型值可以是:PC98,IAEFI,Alpha,Arcx86,IntelLeanClient,IA32EFI,BCEFI,XscaleEFI 和 X86-64EFI。
  • enable-tftp – 启用内建 TFTP 服务器。
  • tftp-root – 使用 /var/lib/tftpboot——所有网络启动文件所在位置。

其它和配置文件相关的高级选项,请参阅 dnsmasq 手册。

步骤 2:安装 SYSLINUX 启动加载器

4. 在编辑并保存 DNSMASQ 主配置文件后,我们将继续安装Syslinux PXE 启动加载器,命令如下。

  1. # yum install syslinux

RHEL/CentOS 7 中配置 PXE 网络启动服务器

安装 Syslinux 启动加载器

5. PXE 启动加载器文件位于 /usr/share/syslinux 系统绝对路径下,你可以通过列出该路径下的内容来查看。该步骤不是必须的,但你可能需要知道该路径,因为在下一步中,我们将拷贝该路径下的所有内容到 TFTP 服务器 路径下。

  1. # ls /usr/share/syslinux

RHEL/CentOS 7 中配置 PXE 网络启动服务器

Syslinux 文件

步骤 3:安装 TFTP-Server 并加入 SYSLINUX 加载启动器

6. 现在,让我们进入下一步,安装 TFTP-Server。然后,拷贝上述位置中 Syslinux 包提供所有启动加载器文件到/var/lib/tftpboot 路径中,命令如下。

  1. # yum install tftp-server
  2. # cp -r /usr/share/syslinux/* /var/lib/tftpboot

RHEL/CentOS 7 中配置 PXE 网络启动服务器

安装 TFTP 服务器

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-02/113587p2.htm

步骤 4:设置 PXE 服务器配置文件

7. 通常,PXE 服务器 从位于 pxelinux.cfg 文件夹中一组指定的文件中读取配置(首先是 GUID 文件,接下来是 MAC 文件,最后是 Default 文件),该文件夹必须位于 DNSMASQ 主配置文件中 tftp-root 声明指定的目录中。

创建需要的目录 pxelinux.cfg,然后添加default 文件到该目录中,命令如下。

  1. # mkdir /var/lib/tftpboot/pxelinux.cfg
  2. # touch /var/lib/tftpboot/pxelinux.cfg/default

8. 现在,该来编辑 PXE 服务器 配置文件了,为它添加合理的 Linux 发行版安装选项。请注意,该文件中使用的所有路径必须是相对于 /var/lib/tftpboot 目录的。

下面,你可以看到配置文件的样例,你可以使用该模板,但请修改安装镜像(kernel 和 initrd 文件)、协议(FTP、HTTP、HTTPS、NFS)以及映射你网络安装源仓库和路径的 IP 地址等参数。

  1. # nano /var/lib/tftpboot/pxelinux.cfg/default

添加以下整个节录到文件中。

  1. default menu.c32
  2. prompt 0
  3. timeout 300
  4. ONTIMEOUT local
  5.  
  6. menu title ########## PXE Boot Menu ##########
  7.  
  8. label 1
  9. menu label ^1)InstallCentOS7 x64 withLocalRepo
  10. kernel centos7/vmlinuz
  11. append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount
  12.  
  13. label 2
  14. menu label ^2)InstallCentOS7 x64 with http://mirror.centos.org Repo
  15. kernel centos7/vmlinuz
  16. append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/ devfs=nomount ip=dhcp
  17.  
  18. label 3
  19. menu label ^3)InstallCentOS7 x64 withLocalRepousing VNC
  20. kernel centos7/vmlinuz
  21. append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount inst.vnc inst.vncpassword=password
  22.  
  23. label 4
  24. menu label ^4)Bootfromlocal drive

RHEL/CentOS 7 中配置 PXE 网络启动服务器

配置 PXE 服务器

正如你所见,CentOS 7 启动镜像(kernel 和 initrd)位于名为 centos7 的目录,该目录是 /var/lib/tftpboot 目录的相对路径(其系统绝对路径为 /var/lib/tftpboot/centos7),而安装器仓库位于可通过 FTP 协议访问的192.168.1.20/pub 网络位置中——在本例中,这些仓库位于本地,因为 IP 地址和 PXE 服务器地址相同。

同时,菜单 label 3 指定客户端安装应该通过 VNC 从一个远程位置实现(这里替换 VNC 密码为一个健壮的密码),如果你在一台没有输入输出的客户端上安装,菜单 label 2 指定了作为安装源的一个 CentOS 7 官方互联网镜像(这种情况要求客户端通过 DHCP 和 NAT 连接到互联网)。

重要:正如你在上述配置中所看到的,我们使用了 CentOS 7 进行演示,但是你也可以定义一个 RHEL 7 镜像。而下面的整个的说明和配置都只是基于 CentOS 7 的,所以在选发行版时要注意一下。

步骤 5:添加 CentOS 7 启动镜像到 PXE 服务器

9. 对于此步骤,需要用到 CentOS 的 kernel 和 initrd 文件。要获取这些文件,你需要 CentOS 7 DVD ISO 镜像。所以,去下载 CentOS DVD 镜像吧,然后把它(刻录成光盘)放入你的 DVD 驱动器并挂载镜像到 /mnt 路径,命令见下面。

使用 DVD,而不是最小化 CD 镜像的原因在于,在后面我们将使用该 DVD 的内容为 FTP 源创建本地安装器仓库。

  1. # mount -o loop /dev/cdrom /mnt
  2. # ls /mnt

RHEL/CentOS 7 中配置 PXE 网络启动服务器

挂载 CentOS DVD

如果你的机器没有 DVD 驱动器,你也可以使用 wgetcurl工具从 CentOS 镜像站下载 CentOS 7 DVD ISO 到本地并挂载。

  1. # wget http://mirrors.xservers.ro/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
  2. # mount -o loop /path/to/centos-dvd.iso /mnt

10. 在 DVD 内容可供使用后,创建 centos7 目录并将 CentOS 7 的可启动的 kernel 和 initrd 映像文件从 DVD 挂载位置拷贝到 centos7 文件夹。

  1. # mkdir /var/lib/tftpboot/centos7
  2. # cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7
  3. # cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7

RHEL/CentOS 7 中配置 PXE 网络启动服务器

拷贝 CentOS 可启动文件

使用该方法的原因在于,今后你可能会在 /var/lib/tftpboot 路径中创建新的独立的目录,并添加其它 Linux 发行版到 PXE 菜单中,你就不会将整个目录结构弄得一团糟了。

步骤 6:创建 CentOS 7 本地镜像安装源

11. 虽然你可以通过多种协议设置 安装源镜像 ,如 HTTP、HTTPS 或 NFS,但对于本指南,我选择了使用FTP 协议。因为通过vsftpd,你可以很便捷地配置,而且它也很稳定。

接下里,安装 vsftpd 进程,然后复制所有 DVD 挂载目录中的内容到 vsftpd 默认服务器路径下(/var/ftp/pub)——这会花费一些时间,这取决于你的系统资源。然后为该路径设置可读权限,命令如下。

  1. # yum install vsftpd
  2. # cp -r /mnt/* /var/ftp/pub/
  3. # chmod -R 755 /var/ftp/pub

RHEL/CentOS 7 中配置 PXE 网络启动服务器

安装 Vsftpd 服务器

RHEL/CentOS 7 中配置 PXE 网络启动服务器

拷贝 Files 到 FTP 路径

RHEL/CentOS 7 中配置 PXE 网络启动服务器

设置 FTP 路径的权限

步骤 7:在系统范围内启动并启用进程

12. 既然 PXE 服务器配置已经完成,那么就来启动 DNSMASQVSFTPD服务器吧。验证它们的状况并在系统上启用,以便让这些服务在每次系统重启后都能随系统启动,命令如下。

# systemctl start dnsmasq
# systemctl status dnsmasq
# systemctl start vsftpd
# systemctl status vsftpd
# systemctl enable dnsmasq
# systemctl enable vsftpd

RHEL/CentOS 7 中配置 PXE 网络启动服务器

启动 Dnsmasq 服务

RHEL/CentOS 7 中配置 PXE 网络启动服务器

启动 Vsftpd 服务

步骤 8:打开防火墙并测试 FTP 安装源

13. 要获取需要在防火墙打开的端口列表,以便让客户机可访问并从 PXE 服务器启动,请运行 netstat 命令并根据 dnsmasq 和 vsftpd 监听列表添加 CentOS 7 防火墙规则。

  1. # netstat -tulpn
  2. # firewall-cmd –add-service=ftp –permanent ## Port 21
  3. # firewall-cmd –add-service=dns –permanent ## Port 53
  4. # firewall-cmd –add-service=dhcp –permanent ## Port 67
  5. # firewall-cmd –add-port=69/udp –permanent ## Port for TFTP
  6. # firewall-cmd –add-port=4011/udp –permanent ## Port for ProxyDHCP
  7. # firewall-cmd –reload ## Apply rules

RHEL/CentOS 7 中配置 PXE 网络启动服务器

检查监听端口

RHEL/CentOS 7 中配置 PXE 网络启动服务器

在防火墙上开启端口

14. 要测试 FTP 安装源网络路径,请在本地或另外一台计算机上打开浏览器(lynx就可以做此事),然后输入你架设有 FTP 服务的 PXE 服务器的 IP 地址,并在填入的 URL 后面加上 /pub 网络位置,结果应该和截图中看到的一样。

  1. ftp://192.168.1.20/pub

RHEL/CentOS 7 中配置 PXE 网络启动服务器

通过浏览器访问 FTP 文件

15. 要解决 PXE 服务器最终的配置或其它信息产生的问题,请在 live 模式下诊断,命令如下:

  1. # tailf /var/log/messages

RHEL/CentOS 7 中配置 PXE 网络启动服务器

检查 PXE 日志错误

16. 最后,最终所需的步骤就是卸载 CentOS 7 DVD,并移除物理介质。

  1. # umount /mnt

PXE 服务器——预启动执行环境——指示客户端计算机直接从网络接口启动、运行或安装操作系统,而不需要烧录 CD/DVD 或使用某个物理介质,它可以减轻你网络中多台机器同时安装 Linux 发行版的工作。

RHEL/CentOS 7 中配置 PXE 网络启动服务器

在 RHEL/CentOS 7 中设置 PXE 网络启动

前置阅读

  • CentOS 7 最小化安装步骤
  • RHEL 7 最小化安装步骤
  • 在 RHEL/CentOS 7 中配置静态 IP 地址
  • 移除 RHEL/CentOS 7 中不要的服务
  • 安装 NTP 服务器以设置 RHEL/CentOS 7 的正确时间

本文将介绍如何在配置有本地镜像安装仓库的 RHEL/CentOS 7 64 位上安装并配置一台PXE 服务器,仓库源由 CentOS 7 DVD 的 ISO 镜像提供,并由DNSMASQ 服务器提供解析。

该机器提供了 DNSDHCP服务,用于网络启动引导的 Syslinux 包,TFTP-Server——提供了可通过网络使用 小文件传输协议 下载的可启动镜像,以及提供本地挂载 DVD 镜像的 VSFTPD 服务器——它将扮演官方 RHEL/CentOS 7 镜像安装仓库的角色,安装器将从这里提取所需的包。

步骤 1:安装并配置 DNSMASQ 服务器

1. 不需要提醒你来确定你的网络接口卡吧,除非你的服务器上有多个网络接口卡,该网卡必须配置有静态 IP 地址,该 IP 地址必须处于你要提供 PXE 服务的网段中。

那么,在你配置好静态 IP 地址后,更新你的系统并进行其它初始设置。请使用以下命令来安装 DNSMASQ 进程。

  1. # yum install dnsmasq

RHEL/CentOS 7 中配置 PXE 网络启动服务器

安装 dnsmasq 包

2. DNSMASQ 的默认的主配置文件位于 /etc 目录中,虽然不需要任何说明就能看懂,但编辑起来确实相当困难的,即使有很详细的说明性注释。

首先,确保你备份了该文件,以便你需要在以后对它进行恢复。然后使用你爱用的文本编辑器创建一个新的空配置文件,命令如下。

  1. # mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
  2. # nano /etc/dnsmasq.conf

3. 现在,复制并粘贴以下配置到 dnsmasq.conf 文件中,并确保根据如下说明进行相应修改,以适应你的网络设置。

  1. interface=eno16777736,lo
  2. #bind-interfaces
  3. domain=centos7.lan
  4. # DHCP range-leases
  5. dhcprange= eno16777736,192.168.1.3,192.168.1.253,255.255.255.0,1h
  6. # PXE
  7. dhcpboot=pxelinux.0,pxeserver,192.168.1.20
  8. # Gateway
  9. dhcpoption=3,192.168.1.1
  10. # DNS
  11. dhcpoption=6,92.168.1.1,8.8.8.8
  12. server=8.8.4.4
  13. # Broadcast Address
  14. dhcpoption=28,10.0.0.255
  15. # NTP Server
  16. dhcpoption=42,0.0.0.0
  17.  
  18. pxeprompt=“Press F8 for menu.”,60
  19. pxeservice=x86PC,“Install CentOS 7 from network server 192.168.1.20”, pxelinux
  20. enabletftp
  21. tftproot=/var/lib/tftpboot

RHEL/CentOS 7 中配置 PXE 网络启动服务器

Dnsmasq 配置

你需要修改的声明有以下这些:

  • interface – 服务器需要监听并提供服务的网络接口。
  • bind-interfaces – 取消注释来绑定到该网络接口
  • domain – 替换为你的域名。
  • dhcp-range – 替换为你的网络掩码定义的网段。
  • dhcp-boot – 替换该 IP 地址为你的网络接口 IP 地址。
  • dhcp-option=3,192.168.1.1 – 替换该 IP 地址为你的网段的网关。
  • dhcp-option=6,92.168.1.1 – 替换该 IP 地址为你的 DNS 服务器 IP——可以定义多个 IP 地址。
  • server=8.8.4.4 – 这里放置 DNS 转发服务器 IP 地址。
  • dhcp-option=28,10.0.0.255 – 替换该 IP 地址为网络广播地址——可选项。
  • dhcp-option=42,0.0.0.0 – 这里放置网络时钟服务器——可选项(0.0.0.0 地址表示参考自身)。
  • pxe-prompt – 保持默认——按 F8 进入菜单,60 秒等待时间。
  • pxe=service – 使用 x86PC 作为 32 为 /64 位架构,并在字符串引述中输入菜单描述提示。其它类型值可以是:PC98,IAEFI,Alpha,Arcx86,IntelLeanClient,IA32EFI,BCEFI,XscaleEFI 和 X86-64EFI。
  • enable-tftp – 启用内建 TFTP 服务器。
  • tftp-root – 使用 /var/lib/tftpboot——所有网络启动文件所在位置。

其它和配置文件相关的高级选项,请参阅 dnsmasq 手册。

步骤 2:安装 SYSLINUX 启动加载器

4. 在编辑并保存 DNSMASQ 主配置文件后,我们将继续安装Syslinux PXE 启动加载器,命令如下。

  1. # yum install syslinux

RHEL/CentOS 7 中配置 PXE 网络启动服务器

安装 Syslinux 启动加载器

5. PXE 启动加载器文件位于 /usr/share/syslinux 系统绝对路径下,你可以通过列出该路径下的内容来查看。该步骤不是必须的,但你可能需要知道该路径,因为在下一步中,我们将拷贝该路径下的所有内容到 TFTP 服务器 路径下。

  1. # ls /usr/share/syslinux

RHEL/CentOS 7 中配置 PXE 网络启动服务器

Syslinux 文件

步骤 3:安装 TFTP-Server 并加入 SYSLINUX 加载启动器

6. 现在,让我们进入下一步,安装 TFTP-Server。然后,拷贝上述位置中 Syslinux 包提供所有启动加载器文件到/var/lib/tftpboot 路径中,命令如下。

  1. # yum install tftp-server
  2. # cp -r /usr/share/syslinux/* /var/lib/tftpboot

RHEL/CentOS 7 中配置 PXE 网络启动服务器

安装 TFTP 服务器

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-02/113587p2.htm

步骤 9:配置客户端从网络启动

17. 现在,你的客户端可以通过它们的系统 BIOS 或在 BIOS 开机自检 时按指定键来配置网络启动作为 首选启动设备,具体方法见主板说明手册。

为了选择网络启动,在第一次 PXE 提示符出现时,请按下 F8 键进入到 PXE 安装界面,然后敲 回车 键继续进入 PXE 菜单。

RHEL/CentOS 7 中配置 PXE 网络启动服务器

PXE 网络启动

RHEL/CentOS 7 中配置 PXE 网络启动服务器

PXE 网络 OS 启动

18. 一旦你进入 PXE 菜单,请选择你的 CentOS 7 安装类型,敲 回车 键继续安装过程,就像你使用本地启动介质安装一样。

请记住这一点,使用菜单中的变体 2 需要激活目标客户端上的互联网连接。在下面的屏幕截图中,你可以通过 VNC 看到远程安装的实例。

RHEL/CentOS 7 中配置 PXE 网络启动服务器

PXE 菜单

RHEL/CentOS 7 中配置 PXE 网络启动服务器

通过 VNC 远程安装 Linux

RHEL/CentOS 7 中配置 PXE 网络启动服务器

远程安装 CentOS

以上是 CentOS 7 上配置最小化 PXE 服务器 的所有内容。在我的本系列下一篇文章中,我将讨论其它 PXE 服务器配置过程中的其它问题,如怎样使用 Kickstart 文件来配置自动化安装 CentOS 7,以及添加其它 Linux 发行版到 PXE 菜单——Ubuntu ServerDebian 7

更多 CentOS 相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计9107字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中