1.PXE环境概述

作为一名运维人员,在一些中小公司经常会遇到一些机械式的重复工作,比如:批量一次大批量的进行操作系统的安装等等。为了实现自动化运维,减少人员负担我们可以部署以下服务:Kickstart(PXE+DHCP+TFTP+HTTP)或Cobbler

2.批量装机软件介绍

Redhat系通主要有两种方式:Kickstart和Cobbler。

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便会弹出对话框让安装者手工填写。所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载ks.cfg文件。等安装完毕,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装。

Cobbler集中和简化了通过网络安装操作系统需要使用到的DHCP、TFTP和DNS服务的配置。Cobbler不仅有一个命令行界面,还提供了一个Web界面,大大降低了使用者的入门水平。Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成。

3.什么是PXE?

PXE,全名Pre-boot Execution Environment,预启动执行环境;简单的说,Cobbler是对kickstart的封装,简化安装步骤、使用流程,并降低使用者的门槛。而kickstart实现方式依赖于PXE环境,通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;它是由Intel和Systemsoft公司于1999年9月20日公布的技术,运行在Client/Server的工作模式;PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)。

4.PXE工作流程及相关介绍

PXE client是需要安装Linux的计算机;

TFTP Server、DHCP Server及HTTPD Server都是部署在PXE Server端的服务;Bootstrap文件、配置文件以及Linux根文件系统都需要放置在Linux Server的TFTP服务器根目录下;

ks.cfg 及系统内核文件都需要放置在在HTTPD server目录。

4.1 PXE必要条件

4.1.1.pxe client必须支持pxe用户端功能,并且开机时选择网络启动,这样系统才能以网络的方式进入pxe启动程序;

4.1.2.pxe服务器必须至少提供DHCP及TFTP的服务才行,且其中DHCP服务器必须能够除为pxe client分配ip地址外,还需告知tftp所在的位置(即pxelinux.0的文件位置);

4.1.3.TFTP服务器则为pxe client 提供bootloader 及 kernel 等重要文件下载服务;

4.1.4.使用NFS/HTTP/FTP之一的服务器提供pxe client所需程序及软件来源等通讯协议;

4.2 PXE工作流程

1.PXE Client向DHCP发送请求 PXE Client从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。

2.DHCP服务器提供信息 DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。

3.PXE客户端请求下载启动文件 客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

4.Boot Server响应客户端请求并传送文件 当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。

5.请求下载自动应答文件 客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

6.客户端安装操作系统 将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。 OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。

4.3 PXE服务中重要目录介绍

TFTP根目录

/var/lib/tftpboot/

该目录用于存放客户端的配置文件(比如菜单选项、安装源等等配置)

/var/lib/tftpboot/pxelinux.cfg

pxelinux.0:引导文件

pxelinux.cfg/default:开机时的选项菜单,pxelinux.cfg是启动菜单目录

vesamenu.c32:是光盘启动后的安装图形界面,也属于SYSLINUX项目,

menu.c32版本是纯文本的菜单

Memtest:内存检测,这是一个独立的程序

splash.jgp:光盘启动界面的背景图

vmlinuz:是内核映像

initrd.img:是ramfs (先cpio,再gzip压缩)

ks.cfg :是Kickstart自动应答配置文件,默认是没有的

5.PXE环境部署

5.1安装DHCP

yum install dhcp #安装dhcp server

rpm –ql dhcp   #查看dhcpd配置文件安装路径

vim /etc/dhcp/dhcpd.conf #修改dhcp配置文件,用于PXE只要改这几个

subnet 192.168.1.0 netmask 255.255.255.0 {  #定义子网

range 192.168.1.100 192.168.1.200; #可分配的起始IP-结束IP

default-lease-time 21600;           #设置默认的IP租用期限

next-server 192.168.4.150;  #添加tftp服务器地址

filename="pxelinux.0"; #告知客户端从TFTP根目录下载pxelinux.0这个启动引导文件

}

systemctl start dhcpd.service    #启动DHCP服务

systemctl status dhcpd.service   #查看DHCP服务状态

systemctl enable dhcpd.service   #设置开机自动启动DHCP服务

netstat -lntup |grep dhcpd       #查看DHCP服务端口的侦听状态

tailf /var/log/messages          #查看DHCP日志状态

5.2安装TFTP

yum install tftp-server –y #安装tftp服务器

vim /etc/xinetd.d/tftp      #把disable参数改成no,启用tftp服务;

systemctl start tftp.socket   #启用tftp服务

systemctl status tftp.socket

systemctl enable tftp.socket

5.3使用 syslinux 提供的bootstart

[root@PXE ~]# yum install syslinux

[root@PXE ~]# rpm -ql syslinux /usr/share/syslinux # pxelinux.0 文件存储目录

[root@PXE ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ # 复制pxelinux.0到 /var/lib/tftpboot 目录

[root@PXE boot]# mount /dev/cdrom /media/ # 挂载光盘 mount: block device /dev/sr0 is write-protected, mounting read-only

5.4配置pxelinux.cfg 文件

[root@PXE  ~]# mkdir /var/lib/tftpboot/pxelinux.cfg  # 创建pxelinux.cfg 文件夹

[root@PXE ~]# cp isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

# 把isolinux.cfg引导文件拷贝到tftpd存储目录下的pxelinux.cfg文件中,并命名为default

[root@PXE ~]# vi /var/lib/tftpboot/pxelinux.cfg/default #修改linux内核引导文件

default vesamenu.c32    # 默认启动界面,该文件需要拷贝到tftp存储目录中。

#prompt 1

timeout 600    # 倒计时 600就是60 秒,改数字为秒数的10倍

display boot.msg  # 将额外信息写入到boot.msg文件中,该文件需要拷贝到tftp存储目录中。

menu background splash.jpg   # 菜单背景图,该文件需要拷贝到tftp存储目录中。

menu title Welcome to CentOS 7!   # 菜单主标题

label linux

menu label ^Install or upgrade an PXE system    #菜单項目

menu default            # 预设项目

kernel vmlinuz          # 内核 vmlinuz,该文件需要拷贝到tftp存储目录中。

append initrd=initrd.img  ks=http://服务器ip地址/ks.cfg

# 核心参数,指定initrd 核心文件,该文件需要拷贝到tftp存储目录中。另指定ks文件目录,这儿使用的http协议

把内核及根文件拷贝到tftpd存储目录 :参照上菜单配置信息,包括 vesamenu.c32,boot.msg,splash.jpg,vmlinuz,initrd.img 文件做拷贝

[root@PXE ~]# cp /media/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/

[root@PXE ~]# cp /media/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/

5.5 配置HTTP服务

yum install httpd –y

systemctl start httpd.service

systemctl status httpd.service

systemctl enable httpd.service

rpm -ql httpd

/etc/httpd/conf/httpd.conf   # httpd 配置文件

/var/www/html     # httpd 默认存储目录

netstat -nltup |grep 80

mkdir -p /var/www/html/CentOS7  #创建CentOS7目录用于存放光盘中的文件

mount /dev/cdrom /var/www/html/CentOS7 #这里采用挂载光盘的方式等等

#挂载或者拷贝完成之后打开浏览器查看网页是否正常显示

http://web服务器的地址/CentOS7/

curl http://web服务器的地址/CentOS7/    #命令行检查

5.6 配置无人值守文件ks.cfg

[root@PXE ~]# cp /root/anaconda-ks.cfg /var/www/html/ks.cfg    # 拷贝模板到/var/www/html 目录,并重命名为ks.cfg

[root@PXE ~]# chmod o+r /var/www/html/ks.cfg #分配权限为pxe client引导安装使用

[root@PXE ~]# vi /var/www/html/ks.cfg     # 调整配置文件

# Kickstart file automatically generated by anaconda.

#version=DEVEL

install                                           # 命令段  ,安装

url --url=http://192.168.4.150/centos/os/        # 指定网络url安装目录

lang en_US.UTF-8                                 # 默认字体

keyboard us                                      # 键盘类型

network --onboot yes --device eth0 --bootproto dhcp  --noipv6

# 指定开机自启,网络接口eth0 ,dhcp获取网络地址,ipv6 禁用

rootpw  --iscrypted $6$ZOGP2tA0PI/6SI/X$MlC5bJyXfP9TBN5/0vwoc6dqAqIijOQthEbAZUnIXft85Tj9n4sKWB2PfxrsVfkZ2ibqX63apu8ElmdEvBo9o/

# root 加密密码,使用grub-crypt 生成的字符串替代

reboot         # 配置完毕后,重启内核

firewall --disabled    # 防火墙禁用

authconfig --enableshadow --passalgo=sha512  # 登录身份使用 sha1 的 512bits 加密算法

selinux --disabled     # selinux 功能禁用

timezone Asia/Shanghai # 定义上海时区

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"

# 定义bootloader,grub安装mbr ,安装在sda磁盘

# The following is the partition information you requested

# Note that any partitions you deleted are not expressed

# here so unless you clear all partitions first, this is

# not guaranteed to work

clearpart --all         # 清除磁盘分区表

text                     # 纯文本格式安装显示

zerombr                  # 对磁盘进行初始化

part /boot --fstype=ext4 --asprimary --size=2000  # 分区信息 ,定义boot分区 ,格式为ext4 ,大小为2G

part swap --size=4096          # 分区信息 ,定义swap分区 ,大小为4G

part pv.008003  --size=80000  # 分区信息 ,定义lv分区 pv.008003,大小为80G

volgroup vg0 --pesize=8192 pv.008003   # 分区信息 ,在lv分区pv.008003定义vg0卷组 ,pe大小为8M

logvol / --fstype=ext4 --name=root --vgname=vg0 --size=15000

logvol /usr --fstype=ext4 --name=/usr --vgname=vg0 --size=30000

logvol /var --fstype=ext4 --name=/var --vgname=vg0 --size=20000

logvol /home --fstype=ext4 --name=/home --vgname=vg0 --size=12000

repo --name="CentOS-6.6"  --baseurl=http://192.168.4.150/centos/os/  --cost=100

# 定义yum仓库 ,类别为bashurl ,名称为CentOS-6.6

%packages             # 包组段,安装包组及程序包

@core

@server-policy

@workstation-policy

%end

[root@PXE ~]# yum -y install pykickstart  #安装ksvalidator 软件

[root@PXE ~]# ksvalidator /var/www/html/ks.cfg    # ksvalidator验证ks.cfg语法是否正确

至此,PXE服务器环境部署完成,可以打开客户端安装系统试一试,如出现问题,一般需要查看系统日志,如:/var/log/messages, 通过日志报错信息进行解决 。

Centos7部署PXE+Kickstart 实现批量安装操作系统的更多相关文章

  1. 【Linux】使用 PXE+Kickstart 无人值守批量安装系统

    一.PXE背景知识 通过 PXE+DHCP+TFTP+VSftpd+Kickstart 服务程序搭建出无人值守安装系统,从而批量部署客户机系统. PXE(Preboot eXecute Environ ...

  2. pxe+kickstart自动化批量安装系统详解-技术流ken

    前言 pxe+kickstart是一款可以实现自动化批量安装系统的服务,比较经典,下面将详细介绍此服务的安装和使用. 系统环境准备 系统版本:CentOS release 6.7 (Final) 内网 ...

  3. pxe+kickstart无人值守批量安装linux

    一.原理和概念: 1.PXE:         PXE 并不是一种安装方式,而是一种引导的方式.进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 ...

  4. kickstart 实现批量安装centos7.x系统

    1.1 安装系统的方法 l  光盘(ISO文件,光盘的镜像文件)===>>每一台物理机都得给一个光驱,如果用外置光驱的话,是不是每台机器都需要插一下 l  U盘:ISO镜像刻录到U盘==& ...

  5. kvm cobbler无人值守批量安装操作系统

    kvm cobbler无人值守批量安装操作系统 cobbler:一个自动网络安装系统的工具,集成PEX.dhcp.dns.tftpd.sync等服务.可以供大家管理安装操作系统 kvm:Linux系统 ...

  6. CentOS7 PXE安装批量安装操作系统

    1.安装相关软件 yum -y install tftp-server httpd dhcp syslinux 2.配置DHCP cp /usr/share/doc/dhcp-4.2.5/dhcpd. ...

  7. 使用cobbler批量安装操作系统(基于Centos7.x )

    1.1 cobbler简介 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理DHCP,DNS等. Cobbler可以使 ...

  8. Cobbler 批量安装操作系统

    文章目录 环境准备 部署cobbler cobbler语法检查以及排错 问题1 问题2 问题3 问题4 问题5 问题6 问题7 问题8 修改dhcp模板 重启服务,再次检查 镜像配置 镜像导入 kic ...

  9. PXE实现无人值守批量安装服务器

    今天我们使用PXE+Kickstart+TFTP+DHCP+FTP实现无人值守安装服务器. 一.无人值守所需服务介绍: 1)PXE PXE,远程引导技术 功能:使计算机通过网络启动 硬件要求:客户端的 ...

  10. 批量安装操作系统之cobbler

    Cobbler 部署文档 服务端配置 操作系统:Centos6.4 关闭防火墙及 selinux 安装cobbler软件 添加yum源 rpm -Uvh https://dl.fedoraprojec ...

随机推荐

  1. js函数参数默认值

    以前的写法,利用短路原则来写: function haosy(name,age){ name=name||'小郝'; age=age||21; alert('读者你好,我是作者'+name+',芳龄' ...

  2. Linux 扩容 / 根分区(LVM+非LVM)

    目录: 1,概述 2,CentOS7,LVM根分区扩容步骤 3,CentOS7,非LVM根分区扩容步骤: 一.背景,概述 MBR(Master Boot Record)(主引导记录)和GPT(GUID ...

  3. git log 的常用用法

    1.最基本的 git log 2.简化版本 git log --oneline 3. 作者筛选 4.时间筛选 git log --since="2022.05.26" --unti ...

  4. python处理word、ppt、excel

    介绍采用python_docx模块处理word文档的基本技巧,特别是图片如何提取和写入. python_docx模块只能处理docx,不支持doc,如需使用,要进行转换.代码入下: from win3 ...

  5. 真实世界的算法_pdf

    链接:https://pan.baidu.com/s/1OZiDnd2My3FvGIuwO91E7Q 提取码:t88i

  6. 1.java 开始

    WelloWorld 随便新建一个文件夹,存放代码 新建一个java文件 编写代码 编译javac java文件,生成一个class文件 运行class文件,java class 可能遇到的情况 每个 ...

  7. layui 关闭/打开新标签

    setTimeout(function () { //关闭当前页面并跳转到课程列表 var topLayui = parent === self ? layui : top.layui; parent ...

  8. call bind的实现以及数组常用方法

    1.call 实现(apply 类似) Function.prototype.call= function(context){    context = context || window;     ...

  9. vue项目运行出现warnings potentially fixable with the `--fix` option的报错问题

    vue-cil3 运行报错 warnings potentially fixable with the `--fix` option. 解决办法:"lint": "vue ...

  10. tp insertAll与saveAll

    在批量插入数据时 insertAll是Db类的,而saveAll是基于模型的