【Linux】部署PXE远程无人值守安装及实例

部署PXE远程安装

PXE(预启动执行环境,Preboot eXecution Environment)是由Intel公司开发的网络引导技术,它工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或整个操作系统。

PXE远程安装概述

定义:PXE技术允许计算机在操作系统启动之前,通过网络接口(如网卡)从远程服务器下载并运行引导程序,进而加载操作系统安装文件或进行系统配置。
优点

  1. 规模化:可以同时装配多台服务器或客户端计算机。
  2. 自动化:自动化安装系统和配置各种服务,减少人工干预。
  3. 远程实现:不需要光盘、U盘等物理安装介质,降低安装成本。

PXE远程安装条件

  1. 客户端条件:
  • 网卡支持PXE协议(集成BOOTROM芯片)。
  • 主板支持网络引导,通常需要在BIOS设置中允许从Network或LAN启动。

(一般大多数服务器主机都支持,只需在BIOS设置中允许从 Network 或 LAN 启动即可。)

  1. 网络环境:
  • 网络中需要有一台DHCP服务器,以便为客户机自动分配IP地址和指定引导文件位置。
  • 服务器上需要运行TFTP(简单文件传输协议)服务,提供引导镜像文件的下载。
  1. 服务器端配置:
  • 服务器应集成CentOS或其他Linux发行版的安装源、TFTP服务、DHCP服务以及FTP服务(可选,用于提供安装文件)。

PXE远程安装配置

搭建 PXE 远程安装服务器
PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能够向客户机裸机发送 PXE引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。

1. 安装并启用 TFTP 服务

TFTP(简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP,端口69
xinetd是新一代的网络守护进程服务程序,又叫超级服务器,常用来管理多种轻量级Internet服务。

  • 下载:
yum -y install tftp-server xinetd
  • 修改TFTP服务的配置文件:
vim /etc/xinetd.d/tftp
	protocol                = udp			#TFTP使用UDP协议	
    wait                    = no			#no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接
    server_args             = -s /var/lib/tftpboot		#指定TFTP根目录(文件存储路径)
    disable                 = no			#no表示开启TFTP服务
  • 开启tftp、xinetd服务:
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd
  • 注意:确保 /var/lib/tftpboot 目录存在且TFTP服务有权限访问。
  • 额外配置:你可能需要在 /etc/xinetd.d/tftp 文件中设置更严格的访问控制(如限制IP范围)或调整日志记录级别。

2. 安装并启用 DHCP 服务

  • 安装dhcp并准备进行配置:
yum -y install dhcp
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
  • 修改DHCP服务的配置文件:
vim /etc/dhcp/dhcpd.conf
ddns-update-style none;						#禁用 DNS 动态更新
next-server 192.168.80.10; 					#指定 TFTP 服务器的地址
filename "pxelinux.0";						#指定 PXE 引导程序的文件名
subnet 192.168.80.0 netmask 255.255.255.0 {			#声明要分配的网段地址
  range 192.168.80.100 192.168.80.200;				#设置地址池
  option routers 192.168.80.10;						#默认网关地址指向TFTP服务器的IP地址
}
  • 启用DHCP服务:
systemctl start dhcpd
systemctl enable dhcpd
  • 子网配置:确保子网配置与你的网络环境相匹配。
  • 地址池:确保地址池中的IP地址不会被网络中的其他设备占用。
  • 安全:考虑设置DHCP选项来防止IP地址冲突或未经授权的DHCP服务器。

3. 准备 Linux 内核、初始化镜像文件

#已事先把光盘挂载到/mnt目录中
cd /mnt/images/pxeboot
#复制 Linux系统的内核文件 到TFTP根目录下
cp vmlinuz /var/lib/tftpboot/
#复制初始化镜像文件(linux引导加载模块)到TFTP根目录下
cp initrd.img /var/lib/tftpboot/
  • 确保版本匹配:从光盘或仓库中复制的内核和initrd.img文件应与你要安装的CentOS版本完全匹配。
  • 文件完整性:验证文件是否在传输过程中未损坏。

4. 准备 PXE 引导程序

  • 安装syslinux:
yum -y install syslinux#PXE引导程序由软件包 syslinux 提供
  • 复制 PXE引导程序 到TFTP根目录下:
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
  • 安装syslinux:确保syslinux的版本与你的系统兼容。
  • 路径确认:确认 pxelinux.0 文件的路径是否正确,并且文件已成功复制到TFTP根目录。

5. 安装FTP服务,准备CentOS 7 安装源

  • 下载FTP服务:
yum -y install vsftpd
  • CentOS 7 安装源:
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7/
  • 启用FTP服务:
systemctl start vsftpd
systemctl enable vsftpd
  • 目录权限:确保 /var/ftp/centos7 目录的权限设置正确,以便TFTP服务器能够访问。
  • SELinux:如果你的系统启用了SELinux,请确保FTP服务不受SELinux策略的限制。

6. 配置启动菜单文件

默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default mkdir /var/lib/tftpboot/pxelinux.cfg
修改配置文件:

vim /var/lib/tftpboot/pxelinux.cfg/default	
default auto #指定默认入口名称
prompt 1 #设置是否等待用户选择,“1”表示等待用户控制

label auto#图形安装(默认)引导入口,label 用来定义启动项
kernel vmlinuz #kernel 和 append用来定义引导参数
append initrd=initrd.img method=ftp://192.168.80.10/centos7

label linux text#文本安装引导入口
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.80.10/centos7

label linux rescue #救援模式引导入口
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.80.10/centos7
  • append 参数:确保 method=ftp://192.168.80.10/centos7 路径正确无误,并且FTP服务已正确配置以允许匿名访问。
  • 其他参数:根据需要添加其他启动参数,如语言选择、键盘布局等。

7. 关闭防火墙,验证 PXE 网络安装

systemctl stop firewalld.service 
setenforce 0
  • 防火墙和安全组:如果你的服务器位于云环境中,确保安全组或防火墙规则允许DHCP、TFTP和FTP流量。
  • SELinux:如果SELinux处于强制模式(enforcing),请考虑将其设置为宽容模式(permissive)以进行故障排除。
  • 虚拟机配置:确保虚拟机的网络适配器设置为“桥接模式”或“NAT模式”,并且能够访问DHCP服务器提供的IP地址。

额外建议

  • 文档记录:详细记录每一步的操作和配置,以便将来参考或故障排查。
  • 备份:在进行任何重大更改之前,备份关键数据和配置文件。
  • 测试:在正式部署之前,在测试环境中彻底测试PXE服务器的功能。
  • 监控和日志:启用并配置适当的监控和日志记录,以便跟踪PXE服务器的性能和任何潜在问题。

实现Kickstart无人值守安装

1. 准备安装应答文件

(1)安装system-config-kickstart工具

sudo yum install -y system-config-kickstart

(2)打开“Kickstart 配置程序”窗口

  • 通过桌面菜单:“应用程序” --> “系统工具” --> “Kickstart” 打开
  • 或执行命令:system-config-kickstart

(3)配置kickstart选项

  • 基本配置

    • 默认语言:中文(简体)
    • 时区:Asia/Shanghai
    • 设置root密码
    • 高级配置中勾选“安装后重启”
  • 安装方法

    • 选择FTP
    • FTP服务器:ftp://192.168.80.10
    • FTP目录:centos7
  • 引导装载程序选项

    • 安装类型:安装新引导装载程序
    • 安装选项:在主引导记录(MBR)中安装引导装载程序
  • 分区信息

    • 主引导记录:清除主引导记录
    • 分区:删除所有现存分区
    • 磁盘标签:初始化磁盘标签
    • 布局:添加分区
      • /boot:xfs,固定大小:500M
      • swap:固定大小:4096M
      • /home:xfs,固定大小:4096M
      • /:xfs,使用磁盘上全部未使用空间
  • 网络配置

    • 添加网络设备“ens33”
    • 网络类型设为“DHCP”
  • 防火墙配置

    • 禁用SELinux
    • 禁用防火墙
  • 安装后脚本

    • 勾选“使用解释程序”:/bin/bash
    • 脚本内容:
      rm -rf /etc/yum.repos.d/*
      echo '[local]
      name=local
      baseurl=ftp://192.168.80.10/centos7
      enabled=1
      gpgcheck=0' > /etc/yum.repos.d/local.repo
      

(4)保存自动应答文件

  • 选择“文件” --> “保存”,保存到/root/ks.cfg
  • 复制文件到FTP目录:cp /root/ks.cfg /var/ftp/ks.cfg

(5)配置需要安装的软件包

  • 编辑ks.cfg文件,添加软件包安装部分:
    %packages
    @^minimal
    %end
    

(6)编辑引导菜单文件 default

  • 编辑/var/lib/tftpboot/pxelinux.cfg/default文件:
    default auto
    prompt 0
    
    label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.80.10/centos7 ks=ftp://192.168.80.10/ks.cfg
    

2. 验证无人值守安装

  • 当客户机通过PXE方式引导时,它将自动下载ks.cfg应答配置文件,并根据其中的设置安装CentOS 7系统。
  • 安装完成后,可以通过登录系统并检查/etc/yum.repos.d/local.repo文件来验证安装是否成功:
    cat /etc/yum.repos.d/local.repo
    

确保您的FTP服务器和TFTP服务器都已正确配置并可以访问,以便客户机能够下载必要的文件和配置文件。此外,确保网络设置(如DHCP服务器)也配置正确,以便客户机能够获取IP地址和其他网络配置信息。

你可能感兴趣的:(linux,运维,服务器)