网络服务器配置与管理教辅书 Help

10-1 PXE批量安装

(todo 把tftp提前面)

介绍

回顾第一章,当VMware中安装虚拟机时,如果没有在虚拟光驱中加载镜像、或映像路径错误,那么启动电源后bios找不到启动盘,屏幕上显示有"PXE"字样, 这是bios通过局域网在寻找上位母机寻求其它安装方式,此功能见于服务器主板。

10 1vmware

场景: 一个机房有几百台服务器,每台单独安装操作系统显然耗时,需要批量安装。

10 1

PXE 简介: PXE, (Preboot Execution Environment),中文通常译为预启动执行环境 ,是一种网络协议,它允许计算机通过网络来启动操作系统。 服务器通过网线连接在一个局域网内,可以通过类似DHCP协议的方式让客户机们自动发现母机,母机提供dhcp、下发镜像。

PXE 的工作原理:

  1. DHCP服务: 发现: 客户端(电脑)向网络发送一个 DHCP 发现消息,寻找 DHCP 服务器。

  2. DHCP 提供: DHCP 服务器收到请求后,会给客户端提供一个 IP 地址、子网掩码、默认网关以及 TFTP 服务器的地址。

  3. DHCP 请求: 客户端收到 DHCP 服务器的回复后,会发送一个 DHCP 请求,确认接受这个配置。

  4. TFTP 启动: 客户端会向 TFTP 服务器发送请求,下载一个启动镜像(比如 GRUB 或 PXEboot)。

  5. 操作系统启动: 下载的启动镜像被执行,从而加载操作系统。

10 1pxe

PXE 的关键组件:
网卡:客户端的网卡需要支持PXE功能。
DHCP 服务器: 为客户端提供网络配置信息,下发最初的预启动系统。
TFTP 简单文件传输服务: 比FTP更加简单,运行在udp69端口,下发启动文件和操作系统镜像。
syslinux:制作启动盘菜单。

实验设计

母机CentOS系统: - 安装DHCP服务,配置客户端地址范围,配置下发启动菜单 - 安装TFTP服务,准备要下发的linux启动基础文件,准备要下发的TinyCoreLinux系统镜像 - 安装syslinux,上传其中的必要文件至TFTP服务根目录 - 下载TinyCoreLinux系统镜像,上传至TFTP服务根目录下的tinycore目录

客户机:VMware新建无启动映像的虚拟机,与母机在同一网段内。开机后观察是否能通过PXE启动。

母机(上位机)准备

  1. ⚠️CentOS虚拟机选用NAT网络(因为桥接网络下一个局域网下存在多台母机)。 物理机Windows网卡适配器,禁止Virtualbox网卡,启用VMnet8网卡。

  2. (可选)母机设置IP192.168.140.100 ,后面写配置比较好记。

  3. 换源

    sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.cloud.tencent.com|g" /etc/yum.repos.d/CentOS-* yum update
  4. 关闭防火墙

    systemctl stop firewalld setenforce 0

DHCP安装与配置

  1. 安装

    yum install dhcp-server
  2. 配置

    nano /etc/dhcp/dhcpd.conf

    增加配置内容如下,⚠️注意根据实际情况替换网段和IP地址。教室的VMware NAT网卡网段为192.168.140.0。

    # # DHCP Server Configuration file. # see /usr/share/doc/dhcp-server/dhcpd.conf.example # see dhcpd.conf(5) man page # # allow booting为了老主板与dhcp服务器能正常交互。PXE功能需要。 # ⚠️IP网段根据实际情况替换,我这里的网段为192.168.156.0,IP地址为192.168.156.143。 # filename pxelinux.0 下发一个pxe功能相关的初使启动文件。 # next-server 告诉客户机PXE启动的机器IP,这里PXE母机和DHCP服务器都是CentOS虚拟机 allow booting; allow bootp; subnet 192.168.156.0 netmask 255.255.255.0 { option routers 192.168.156.2; option subnet-mask 255.255.255.0; option domain-name-servers 114.114.114.114, 8.8.8.8; filename "pxelinux.0"; next-server 192.168.156.143; range dynamic-bootp 192.168.156.10 192.168.156.20; }
    10 1dhcp
  3. 启动服务

    # 检查配置。返回一些说明,但没有说option error参数错误、没有expected { 少括号错误,就是正确。 dhcpd -t # 启动服务 systemctl start dhcpd # 检查服务状态 systemctl status dhcpd

syslinux安装

syslinux安装完后会在 /usr/share/syslinux目录下提供linux系统引导文件。

  1. 安装

    yum install syslinux
  2. 验证,能看到一些文件,备用。

    ls /usr/share/syslinux/

准备客户机(下位机)操作系统镜像TinyCoreLinux

TinyCoreLinux:一些教程中采用CentOS作为下发操作系统,完整版带rpm的镜像13G,母机CentOS虚拟机硬盘20Gb,上传大镜像到tftp服务目录很可能失败且费时。这里找到了一个极小的linux发行版,才30MB大小,甚至包含GUI桌面。
TinyCore官网下载 目前下载的是16.2版本。

  1. 熟悉下这个操作系统。 新建一台虚拟机,熟悉后删除虚拟机。

    10 1tiny core linux

  2. 镜像复制到虚拟机。重命名文件。 自己Windows宿主机下载或老师下发至学生机。从宿主机复制 TinyCoreLinux-16.2.iso (文件名也可能是TinyCore-current.iso) 到服务器虚拟机桌面, 重命名为 TinyCore.iso

  3. 文件块方式挂载。 iso常用于光盘文件,iso格式本质上是打包格式,类似.tar或.zip,所以会发现解压软件可以解开iso文件。除了解包方式,利用mount命令loop参数回环挂载,挂载后访问挂载路径即访问iso文件中内容。

    # 创建挂载点 mkdir -p /mnt/tinycore # 回环挂载。⚠️iso镜像文件名根据实际情况调整。 mount -o loop ~/TinyCore.iso /mnt/tinycore
  4. 挂载后能看到iso文件中内容,备用。

    ls /mnt/tinycore

    能看到一些文件。备用。

    10 1tiny core linux iso

TFTP安装

  1. 安装

    yum install tftp-server
  2. 启动服务

    systemctl start tftp systemctl status tftp
  3. 关闭防火墙。(否则在最终测试机分配到IP但tftp传输超时)

    systemctl stop firewalld setenforce 0

文件放入共享文件夹

TFTP服务的默认文件分享目录是 /var/lib/tftpboot/ ,和tinycore客户机镜像下的操作系统引导区文件放进去。

  1. 放入syslinux提供的pxe预启动文件、图形化引导工具。

    # PXE预启动文件,dhcp配置文件中已经配置下发给客户机 cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # 一个引导后续安装的菜单工具。在一些windows装机工具中见过类似界面。 cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/ cp /usr/share/syslinux/libcom32.c32 /var/lib/tftpboot/ cp /usr/share/syslinux/libutil.c32 /var/lib/tftpboot/ cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/ cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/
  2. 放入客户机操作系统TinyCoreLinux的引导区文件。(不同操作系统,同操作系统不同大版本,引导区文件不同,搜索相关教程和试验确定所需文件)。

    # tftp服务目录下创建一个存放tinycorelinux系统的文件夹 mkdir -p /var/lib/tftpboot/tinycore # 不同操作系统,同操作系统不同版本,启动文件文件名都不同,需要查资料和尝试 cp /mnt/tinycore/boot/core.gz /var/lib/tftpboot/tinycore/core.gz cp /mnt/tinycore/boot/vmlinuz /var/lib/tftpboot/tinycore/vmlinuz

pxe菜单配置文件

  1. 创建文件和空配置文件

    # pxelinux.cfg是一个文件夹 mkdir -p /var/lib/tftpboot/pxelinux.cfg # 创建配置文件 touch /var/lib/tftpboot/pxelinux.cfg/default # 打开配置文件 nano /var/lib/tftpboot/pxelinux.cfg/default
  2. 添加菜单配置文件内容

    default vesamenu.c32 timeout 600 menu title ##### PXE Boot Menu ###### label 1)TinyCoreLinux Install kernel tinycore/vmlinuz initrd tinycore/core.gz append debug label 2)Local Boot menu default localboot 0 menu end

以下为客户机器

客户机测试

  1. VMware新建一台客户机器,要求:

    1. 没有安装镜像。这样客户机启动时在尝试过虚拟光驱和硬盘后会尝试PXE启动。

    2. 与母机同一网段,都使用NAT网卡。这样会通过dhcp协议找到母机并开始PXE交互。

      10 1
      10 1 2

  2. 客户机分配到IP,接收到pxelinux.0文件,通过tftp服务接收到vasemenu.c32文件,看到图形化安装菜单,基本成功。🎉

    10 1 ip

  3. ⬆⬇方向键选择 "1)TinyCoreLinux Install" 选项,回车确认。开始下载操作系统引导区文件。

    10 1

    10 1

  4. 成功启动客户机系统。进入的是命令行版的TinyCoreLinux系统,因为core.gz文件中不包含桌面依赖,是正常现象。🎉🎉。

    10 1

(课外)拓展

免虚拟化嵌套,有条件的在两台以上物理机上实验。

后续替代技术:

  • iPXE

  • UEFI

12 十二月 2025