PXE高效批量网络装机

一,部署PXE远程安装服务

1:搭建PXE远程安装服务器

1.准备CentOS7安装源

  • 下载ISO : 访问CentOS官方网站(https://www.centos.org/),下载CentOS 7的ISO镜像文件。

  • 挂载ISO : 假设ISO文件位于/root/CentOS-7-x86_64-DVD.iso,可以使用以下命令挂载:

    复制代码
    mkdir /mnt/centos
    mount -o loop /root/CentOS-7-x86_64-DVD.iso /mnt/centos
  • 复制安装源 : 将必要的安装文件复制到TFTP服务器的指定目录,例如/var/lib/tftpboot/centos7:

    复制代码
    cp -r /mnt/centos/Packages /var/lib/tftpboot/centos7
    cp -r /mnt/centos/images/pxeboot/* /var/lib/tftpboot/centos7/pxeboot/

2.安装并启用TFTP服务

  • 安装软件: 使用以下命令安装TFTP服务和xinetd:

    复制代码
    yum install tftp-server xinetd -y
  • 编辑TFTP配置 : 打开/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
    }
  • 启动服务:

    复制代码
    systemctl start xinetd
    systemctl enable xinetd
    systemctl start tftp
    systemctl enable tftp

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

  • 直接从第1.1步复制的pxeboot目录中已有vmlinuzinitrd.img,无需额外操作。

4.准备PXE引导程序

  • 安装syslinux:

    复制代码
    yum install syslinux -y
  • 复制引导文件:

    复制代码
    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

5.安装并启用DHCP服务

  • 安装DHCP:

    复制代码
    yum install dhcp -y
  • 编辑DHCP配置 : 编辑/etc/dhcp/dhcpd.conf,添加如下内容(记得替换<your_tftp_server_ip>为你的TFTP服务器IP地址):

    复制代码
    subnet <your_subnet> netmask <your_netmask> {
        range <dhcp_start_ip> <dhcp_end_ip>;
        option routers <your_router_ip>;
        option domain-name-servers <dns_server_ip>;
        
        # PXE Settings
        next-server <your_tftp_server_ip>;
        filename "pxelinux.0";
    }
  • 启动DHCP服务:

    复制代码
    systemctl start dhcpd
    systemctl enable dhcpd

6.配置启动菜单文件

  • 创建菜单文件 : 在/var/lib/tftpboot/pxelinux.cfg目录下创建default文件,内容如下:

    复制代码
    default centos7
    prompt 0
    timeout 60
    
    label centos7
        kernel centos7/pxeboot/vmlinuz
        append initrd=centos7/pxeboot/initrd.img inst.stage2=http://<your_http_server_ip>/centos7 images/pxeboot/ks.cfg

其中,http://<your_http_server_ip>/centos7应指向包含CentOS安装包的HTTP服务器目录,ks.cfg是Kickstart文件,用于自动化安装过程。

2:验证PXE网络安装

  • 客户端设置: 确保客户端计算机的BIOS或UEFI设置中,网络启动(PXE Boot)被设置为优先启动项。
  • 测试安装: 重新启动客户端计算机,它应该会自动从网络启动并显示安装菜单。按照菜单提示进行,即可开始安装过程。

以上步骤完成后,你就可以通过PXE网络安装CentOS 7了。注意,实际操作时可能需要根据具体的网络环境和需求进行适当调整。

二,实现Kickstart无人值守安装

1:准备安装应答文件

在 CentOS7系统中安装 system-config-kickstart 工具之后,即可通过图形化向导工具来配置安装应答文件。如果用户对自动应答文件的配置比较熟悉,也可以直接编辑 CentOS7 安装后自动创建的应答文件(rootanaconda-ks.cfg),根据需要适当修订后使用。

1.配置安装应答参数

  • 编写Kickstart文件: Kickstart文件是一个文本文件,包含了安装过程中需要的所有交互式输入信息。以下是基本结构示例,你可以根据实际需求进行修改:

    复制代码
    #version=DEVEL
    install
    url --url=http://<your_http_server_ip>/centos7
    lang en_US.UTF-8
    keyboard us
    timezone America/New_York
    rootpw --iscrypted <encrypted_password>
    network --bootproto dhcp --device eth0
    firewall --disabled
    selinux --disabled
    reboot
    text
    autopart
    bootloader --location=mbr
    %packages
    @base
    %end
    %post
    # Custom post-installation scripting here, if needed
    %end
  • install: 表明这是一个安装任务。

  • url: 指定安装源的URL。

  • lang, keyboard, timezone: 分别设定语言、键盘布局和时区。

  • rootpw: 设置root用户的密码,--iscrypted表示密码已经加密。

  • network: 配置网络设置,这里假设使用DHCP。

  • firewall, selinux: 关闭防火墙和SELinux。

  • autopart: 自动分区。

  • %packages: 指定要安装的软件包组或单个包。

  • %post: 定义安装后执行的脚本。

2.保存自动答应文件

  • 将上述内容保存为一个文本文件,通常命名为ks.cfg,并上传到HTTP服务器的某个目录下(例如之前提到的/centos7目录)。

2:实现批量自动装机

1.启用自动答应文件

  • 在PXE菜单配置文件(如/var/lib/tftpboot/pxelinux.cfg/default)中,确保Kickstart文件的引用路径正确无误。在之前的示例中,我们已经通过以下参数指定了Kickstart文件的路径:

    复制代码
    append initrd=... inst.stage2=http://<your_http_server_ip>/centos7 images/pxeboot/ks.cfg

这里inst.stage2后面跟的是Kickstart文件的HTTP地址。

2.验证无人值守安装

  • 客户端验证: 确认客户端的BIOS设置为PXE优先启动后,重新启动客户端。系统应自动从网络启动,遵循Kickstart文件中的配置进行无人干预安装。
  • 监控日志: 在安装服务器上,可以通过系统日志(如/var/log/messages或/var/log/dhcpd.log)来监控PXE启动和安装过程中的错误信息。
  • 验证安装结果: 安装完成后,客户端应当自动重启并进入已安装好的CentOS 7系统,无需任何人工干预。登录系统检查是否所有预期的软件包、配置都已正确应用。
相关推荐
七夜zippoe2 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥2 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
会员源码网3 小时前
理财源码开发:单语言深耕还是多语言融合?看完这篇不踩坑
网络·个人开发
米羊1214 小时前
已有安全措施确认(上)
大数据·网络
Fcy6484 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满4 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠4 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
主机哥哥4 小时前
阿里云OpenClaw部署全攻略,五种方案助你快速部署!
服务器·阿里云·负载均衡
Harvey9034 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
ManThink Technology5 小时前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络