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系统,无需任何人工干预。登录系统检查是否所有预期的软件包、配置都已正确应用。
相关推荐
Elastic 中国社区官方博客5 小时前
使用 Elastic Cloud Serverless 扩展批量索引
大数据·运维·数据库·elasticsearch·搜索引擎·云原生·serverless
超龄超能程序猿6 小时前
Docker GPU插件(NVIDIA Container Toolkit)安装
运维·docker·容器
岁岁种桃花儿6 小时前
Nginx 站点垂直扩容(单机性能升级)全攻略
网络·nginx·dns
Xの哲學6 小时前
Linux SMP 实现机制深度剖析
linux·服务器·网络·算法·边缘计算
2501_906150567 小时前
私有部署问卷系统操作实战记录-DWSurvey
java·运维·服务器·spring·开源
钦拆大仁7 小时前
单点登录SSO登录你了解多少
服务器·sso
岳来7 小时前
docker 从 Path 值看容器启动命令
运维·docker·容器
only火车头7 小时前
升级 ceph (16.2 -> 18.2) ceph mon 启动失败
服务器·ceph
一颗青果8 小时前
公网构建全流程与参与主体深度解析
网络
RisunJan8 小时前
Linux命令-ifconfig命令(配置和显示网络接口的信息)
linux·运维·服务器