• PXE+Kickstart原理


    PXE+Kickstart 主要用于在公司内网批量安装新服务器系统,这极大地简化了用光盘重复安装Linux操作系统的过程,再加上分布式自动化运维工具puppet进行批量部署,达到了自动化运维的目的,避免了重复性劳动,极大的提高了工作效率。

    1. PXE

    严格来说,PXE 并不是一种安装方式,而是一种引导方式。

    PXE 安装的两个必要条件:

    ① 要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。
    PXE (Pre-boot Execution Environment)协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。

    ② PXE服务器必须要提供至少含有DHCP以及TFTP的服务。

    •  DHCP服务必须要能够提供客户端的网络参数,还要告知客户端TFTP所在的位置;
    •  TFTP则提供客户端的boot loader及kernel file下载路径。

    还要加上NFS/FTP/HTTP(选择一样即可)等提供安装文件(安装镜像的解压文件),才算是比较完整的PXE服务器。一般TFTP和DHCP服务都由同一台服务器提供,且大多数时候还提供NFS/FTP/HTTP服务,所以PXE服务器一般是提供3合一的服务

    2. PXE的工作过程

    图片来源于网络。

    • (1)Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将pxe环境下的Boot loader文件pxelinux.0的位置信息传送给Client。
    • (2)Client向PXE Server上的TFTP请求pxelinux.0,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。
    • (3)Client执行接收到的pxelinux.0文件
    • (4)Client向TFTP请求pxelinux.cfg文件(其实它是目录,里面放置的是是启动菜单,即grub的配置文件),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。
    • (5)Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client。
    • (6)Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统。
    • (7)Client加载Linux内核(启动参数已经在4中的配置文件中设置好了)。
    • (8)Client通过nfs/ftp/http下载系统安装文件进行安装。如果在(4)中的配置文件指定了kickstart路径,则会根据此文件自动应答安装系统 

    2. Kickstart

    Kickstart是一种无人值守的安装方式。

    工作原理:
    在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为 ks.cfg的文件。
    如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找 Kickstart生成的文件

    • 如果找到合适的参数,就采用所找到的参数;
    • 如果没有找到合适的参数,便需要安装者手工干预了。

    所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。

     

     创建Kickstart文件有三种方式:

      • 完全手动创建Kickstart。
      • 使用图形化工具system-config-kickstart创建Kickstart。
      • 通过标准化安装程序Anaconda安装系统,Anaconda会生成一个当前系统的Kickstart文件,以此来创建Kickstart文件。
  • 相关阅读:
    java 中类的加载顺序
    jdbc 连接数据库、批量操作、事务(oracle、mysql)
    一个空格引发的血案啊!
    Servlet 的生命周期与线程安全
    Java 方法的重写与重载
    java 序列化
    equals()与hashcode()的理解
    成功安装cadence SPB16.0
    stack implement C++
    windows 7 设置环境变量的方法
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12256850.html
Copyright © 2020-2023  润新知