• PXE无人值守安装CentOS


    1. 环境

    1.1 操作系统

    本文中PXE服务器操作系统为CentOS7最小化安装

    # cat /etc/os-release
    NAME="CentOS Linux"
    VERSION="7 (Core)"

    # cat /etc/redhat-release
    CentOS Linux release 7.7.1908 (Core)

    1.2 节点

    本例中共涉及到两台服务器

    1. PXE服务器,IP:10.10.105.205
    2. PXE客户机,IP:无

    2 PXE装机流程介绍

    1. 通过BIOS设置PXE客户机从网络启动
    2. PXE客户机从网络启动时,会从0.0.0.0到255.255.255.255进行全网广播,查找DHCP服务
    3. 找到dhcp服务后, PXE客户机会从DHCP服务请求一个IP地址
    4. dhcp服器查询一个空闲的未被使用的IP地址返回给PXE客户机,并告诉下一跳的位置
    5. PXE客户机设置好IP地址,并根据下一跳信息到tftp服务请求bootstrap引导文件(pxelinux.0)和bootstrap配置文件(pxelinux.cfg)
    6. PXE客户机加载bootstrap引导,并根据bootstrap配置加载启动菜单
    7. 手动/超时自动选择启动菜单后,PXE客户机根据bootstrap配置到tftp服务请求内核文件(vmlinuz)和虚拟文件系统(initrd.img)
    8. PXE客户机加载内核和虚拟文件系统,并根据bootstrap配置到http服务下载kickstart文件
    9. PXE客户机根据kickstart文件自动安装操作系统,安装过程中需要其他文件也会到http服务下载获取

    从上面的描述中,我们可以看到,PXE服务器需要安装dhcp、tftp、http

    3 部署PXE服务器

    3.0 准备

    避免麻烦,直接关闭防火墙systemctl stop firewalld && systemctl disable firewalld

    3.1 安装dhcp、tftp、http

    yum install -y dhcp tftp-server httpd

    3.2 配置dhcp

    vi /etc/dhcp/dhcpd.conf

    subnet 10.10.105.0 netmask 255.255.255.0 {
      range 10.10.105.240 10.10.105.249;
      default-lease-time 3600;
      filename "pxelinux.0";
      next-server 10.10.105.205;
    }

    注意:上面的内容直接复制粘贴可能会导致导致dhcpd服务启动失败,也许是由于空格格式导致

    • 第一行:配置DHCP子网
    • 第二行:配置可用DHCP分配的IP范围
    • 第三行:默认租期1小时
    • 第四行:下一跳--文件名
    • 第五行:下一跳--IP地址

    根据第四行和第五行的配置,PXE客户机拿到IP地址后会访问10.10.105.205上的tftp服务下载pxelinux.0这个文件

    3.3 配置tftp

    3.3.1 开启tftp服务

    vi /etc/xinetd.d/tftp,将disable改成no,否则无法开启tftp服务。另外,仔细查看该文件可以看到这一行server_args = -s /var/lib/tftpboot,说明可供tftp下载的文件的默认存放位置在/var/lib/tftpboot目录

    3.3.2 为tftp提供待下载的文件

    在装机流程介绍中,我们知道tftp服务需要提供pxelinux.0pxelinux.cfginitrd.imgvmlinuz的下载,那么这些文件从哪来呢?

    pxelinux.0和menu.c32

    yum install -y syslinux
    cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
    cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot

    menu.c32我们会在pxelinux.cfg中用到

    initrd.img和vmlinuz
    1. 将一个CentOS的ISO文件上传到PXE服务器,本文:/iso/CentOS-7.5-x86_64-Everything-1804.iso
    2. 挂载这个 ISO文件:mount /iso/CentOS-7.5-x86_64-Everything-1804.iso /mnt
    3. 将initrd.img和vmlinuz拷贝到tftp服务:cp /mnt/images/pxeboot/initrd.img /var/lib/tftpbootcp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot
    4. 取消挂载:umount /mnt
    pxelinux.cfg

    mkdir /var/lib/tftpboot/pxelinux.cfg
    vi /var/lib/tftpboot/pxelinux.cfg/default

    default menu.c32
    timeout 300
    prompt 0

    label 1
    menu label ^1) Install CentOS7.5
    menu default
    kernel vmlinuz
    append initrd=initrd.img method=http://10.10.105.205/CentOS7.5/ ks=http://10.10.105.205/ks.cfg

    • 第一行:使用的菜单模块
    • 第二行:菜单选择超时时间,如果在规定时间内没有手动做出选择则按默认的菜单执行安装
    • 第三行:固定写法
    • 第四行:空行
    • 第五行:开式定义一个菜单
    • 第六行:设置菜单显示内容
    • 第七行:设置当前菜单为默认选项
    • 第八行:设置系统内核文件
    • 第九行:设置文件系统文件并设置相关参数,method和ks参数配置的地址来源于http服务

    3.4 配置http

    3.4.1 挂载 ISO文件到http

    httpd的可供下载的文件默认存放在/var/www/html,所以:

    1. 创建目录mkdir /var/www/html/CentOS7.5
    2. 挂载 ISO:mount /iso/CentOS-7.5-x86_64-Everything-1804.iso /var/www/html/CentOS7.5

    3.4.2 准备kickstart

    当我们创建虚拟机并安装完CentOS操作系统后,默认存在一个文件/root/anaconda-ks.cfg文件,

    1. 将这个文件拷贝到/var/www/html/目录下:cp /root/anaconda-ks.cfg /var/www/html/ks.cfg
    2. 编辑这个文件vi /var/www/html/ks.cfg
      • 找到# Use CDROM installation media修改cdromurl --url http://10.10.105.205/CentOS7.5/
      • 找到# Partition clearing information修改clearpart --none --initlabelclearpart --all --initlabel
      • 文件最后增加一行,内容reboot
    3. 授权:chmod 644 /var/www/html/ks.cfg

    3.5 重启所有服务使我们的配置生效

    systemctl restart dhcpd && systemctl enable dhcpd
    systemctl restart tftp && systemctl enable tftp
    systemctl restart httpd && systemctl enable httpd

    然后测试下http服务器能否正常访问

    curl http://10.10.105.205/CentOS7.5/
    curl http://10.10.105.205/ks.cfg

    4 测试PXE服务器的部署结果

    将PXE重启,通过BIOS设置为网络启动

    相关资料

  • 相关阅读:
    算法导论9.33
    第6章 堆排序
    算法导论9.36算法导论9.36 .
    算法导论83排序不同长度的数据项
    算法导论76对区间的模糊排序
    第8章 线性时间排序
    在bochs上运行的第一个操作系统
    算法导论6.58堆排序K路合并
    js中的preventDefault与stopPropagation详解(转)
    JS基础RegExp
  • 原文地址:https://www.cnblogs.com/LOVE0612/p/16200914.html
Copyright © 2020-2023  润新知