PXE批量装机

批量装机环境

网络装机的优势

Ø 规模化:同时装配多台主机

Ø 自动化:系统、置各种服务

Ø 远程实现:不需要光盘、U盘等物理安装介质

PXEPre-boot execution Environment

Ø 预启动执行环境,在操作系统之前运行

Ø 可用于远程安装

工作模式

Ø PXE client集成在网卡的启动芯片中

Ø 当计算机引导时,从网卡芯片中把PXE client调入内存执行,获取PXE server配置、显示菜单,根据用户选择将远程引导程序下载到本机运行

PXE组件及过程分析

• 需要哪些服务?

Ø DHCP服务,分配IP地址、定位引导程序

Ø TFTP服务,提供引导程序下载

Ø FTP服务(或HTTP/NFS),提供yum安装源

• 客户机应具备的条件

Ø 网卡ROM必须支持PXE协议

Ø 主板支持网络启动

 

这三个功能可以集中到一个服务器,也可以分开到不同服务器

技术要点回顾:

基本概念:DHCP、TFTP、PXE;pxelinux.0、vmlinuz、initrd.img

PXE引导配置:/TFTP目录/pxelinux.cfg/default;背景图片、多系统支持

Kickstart自动应答:软件源指定、%POST安装后脚本;system-config-kickstart工具

#####################################################

PXE网络装机的整体思路

装机条件准备:1.准备RHEL7安装源(HTTP方式YUM库)

  2.启动DHCP服务

PXE引导配置:3.启用TFTP服务,提供装机用的内核、初始化文件

  4.提供PXE引导程序、配置启动菜单

提供软件安装源:为客户机提供软件源(可使用CentOS真机提供)

   利用RHEL7光盘数据构建YUM源

   通过httpd服务对外发布

DHCP概述及原理

• DHCPDynamic Host Configuration Protocol,动态主机配置协议)

由 IETF(Internet 网络工程师任务小组)组织制定,用来简化主机地址分配管理

• 主要分配以下入网参数

– IP地址/子网掩码/广播地址

– 默认网关地址、DNS服务器地址

– PXE引导设置(TFTP服务器地址、引导文件名)

• DHCP地址分配的四次会话DISCOVERY(客户机)请求   广播

 -->  OFFER (服务器)提供

 -->  REQUEST (客户机)选择

 -->  ACK (服务器)确认

• 服务端基本概念

– 租期:允许客户机租用IP地址的时间期限,单位为秒

– 作用域:分配给客户机的IP地址所在的网段

– 地址池:用来动态分配的IP地址的范围

系统服务dhcpd

DHCP服务端:软件包dhcp

DHCP客户端:dhclient

DHCP服务端配置文件:/etc/dhcp/dhcpd.conf

default-lease-time  默认租期;

max-lease-time  最大租期;

subnet  网络地址  netmask  子网掩码 {

range  起始IP  结束IP;

option  routers  默认网关IP地址;

option  domain-name-servers  DNS1,DNS2;

next-server  TFTP服务器的IP地址;

filename  "网卡启动文件的名称";

}

语法检查:service  dhcpd  configtest

传输协议及端口:UDP 67(服务器)、UDP 68(客户端)

临时配置/测试

格式:dhclient -d [网络接口] ,选项-d调试模式debug , ctrl+c退出测试

 

 

 

部署DHCP服务

PXE批量、全自动装配——安装系统、配置系统

一.安装素材(YUM源)的准备——PXE基础装机环境

1.服务端(仓库),提供软件包

1)快速构建httpd服务器   # yum  -y  install  httpd          //装包

2)准备挂载点 # mkdir /var/www/html/cos7dvd

# mkdir /var/www/html/rh7dvd

3)挂载镜像资源 # vim /etc/fstab

/ISO/rhel-server-7.2-x86_64-dvd.iso /var/www/html/rh7dvd iso9660 defaults 0 0

/ISO/CentOS-7-x86_64-Everything-1511.iso /var/www/html/cetos_dvd iso9660 loop,ro 0 0

# mount -a //挂载ISO镜像文件

# ls  /var/www/html/rh7dvd/         //确认部署位置

4)启动Web服务 # systemctl  restart  httpd         //启动服务

# systemctl  enable  httpd          //设置开机自启

# firefox http://192.168.4.254/rh7dvd

# firefox http://192.168.4.254/cos7dvd

2.客户端(yum),使用软件包:

# rm -rf /etc/yum.repos.d/*.repo

# yum-config-manager --add http://192.168.4.254/cos7dvd

# vim /etc/yum.conf 

gpgcheck=0

# yum repolist

二.配置DHCP服务端(分配IP地址相关参数,告知客户机TFTP服务器的地址、引导文件信息)

1.安装软件包dhcp # yum  -y  install  dhcp

2.修改配置文件 /etc/dhcp/dhcpd.conf

# vim  /etc/dhcp/dhcpd.conf

  :r  /usr/share/doc/dhcp*/dhcpd.conf.example

    subnet 192.168.4.0 netmask 255.255.255.0 {   //声明网段

         range  192.168.4.10 192.168.4.200;      //IP范围

         next-server  192.168.4.7;              //指定PXE服务器

         filename  "pxelinux.0";                //引导文件名

}    

3.启动系统服务dhcpd,并设置开机自启 # systemctl  restart  dhcpd

# systemctl  enable  dhcpd 

4.确认dhcpd服务状态 # netstat -antpu |grep dhcpd          //确认结果,查看端口

                     # netstat -antpu |grep :67

如果有冲突服务dnsmasq: # pkill -9 dnsmasq

三.在客户端 pc207上测试      

# nmcli connection modify eth0 ipv4.method auto

# nmcli connection up eth0 

# ifconfig | head -2    # route -n   # cat /etc/resolv.conf

1.使用dhclient命令测试,观察获取IP地址的过程

# dhclient -d eth0   //通过eth0进行广播

2.若因操作异常导致IP故障,可恢复客户机原有IP配置

# pkill  -9  dhclient                      //杀死dhclient进程

# nmcli  connection  up  eth0              //激活原配置###############################################################################

 TFTP(Trivial File Transfer Protocol,简单的文件传输协议)

Ø UDP 69端口

Ø 主要用来传送小文件,不支持认证和复杂FTP操作

Ø 默认资源目录:/var/lib/tftpboot

Ø 服务端软件: tftp-server    客户端软件: tftp

Ø 利用netstat -anptu | grep :69  查看端口监听

配置PXE安装RHEL7系统时需要在TFTP资源目录提供哪些文件?

Ø 网卡启动文件:pxelinux.0

Ø 网卡启动文件的配置文件:pxelinux.cfg/default

Ø 引导安装的系统内核:vmlinuz

Ø 运行安装内核的初始化镜像:initrd.img

PXE引导配置

一.快速构建TFTP服务器

1)安装tftp-server(服务端)   # yum -y install tftp-server 

2)启动系统服务tftp,并设置开机自启:  # systemctl restart tftp

                                  # systemctl  enable  tftp

                     【TFTP资源目录】  # ls /var/lib/tftpboot     //空目录

二.部署启动文件——用来启动客户机的引导文件(pxelinux.0、内核和初始镜像)

提供PXE启动程序——部署pxelinux.0启动程序

Ø 网卡启动程序pxelinux.0由软件包syslinux提供

Ø 网卡PXE启动完毕,主机引导权会交给此程序

1)在软件包syslinux提供的目录下找到pxelinux.0程序

# yum -y install syslinux

在软件包syslinux提供的目录下找到pxelinux.0程序

# rpm -ql syslinux | grep pxelinux.0   #查询安装清单

   另一种查询方法:# yum provides */pxelinux.0    //查询仓库那个包提供的该文件

拷贝pxelinux.0程序到/var/lib/tftpboot/目录下,部署到TFTP目录,确认部署结果:

# cp /usr/share/syslinux/pxelinux.0   /var/lib/tftpboot/

# ls /var/lib/tftpboot

2)拷贝引导装机的内核、初始镜像,部署到TFTP目录

提供装机内核及初始化文件——部署操作系统引导文件

Ø 可以从RHEL7光盘目录/images/pxeboot/下载

Ø 包括调整过的Linux内核、初始镜像文件

当文件较多时,可以在TFTP目录下创建子目录:# mkdir  /var/lib/tftpboot/rhel7

通过光盘目录找到PXE版内核vmlinuz、初始镜像initrd.img,将其拷贝到上述子目录:

# cd  /var/lib/tftpboot/rhel7/

# wget  http://192.168.4.254/rh7dvd/isolinux/vmlinuz

# wget http://192.168.4.254/rh7dvd/isolinux/initrd.img    //下载内核、初始化文件

确认部署结果:# ls  -R  /var/lib/tftpboot/

三.配置引导菜单(default、图形支持文件--模块+背景图)

拷贝模板文件——为pxelinux.0启动程序提供配置

Ø 可以从RHEL7光盘软件源下载

Ø 配置路径:/var/lib/tftpboot/pxelinux.cfg/default

PXE启动配置菜单文件的相关资料可参考RHEL7的光盘目录/isolinux/

  /mnt/isolinux/vmlinuz       #启动内核

  /mnt/isolinux/initrd.img    #启动时所需的驱动程序

  /mnt/isolinux/vesamenu.c32   #支持图形的模块

 /mnt/isolinux/splash.png     #图形桌面背景

菜单配置文件isolinux.cfg(使用时改名为default)。

default配置文件调整——修改菜单文字、启动参数

Ø 为每个系统安装设好label及内容

Ø 确定Linux内核和初始镜像文件的路径正确

1)创建配置目录 # mkdir  /var/lib/tftpboot/pxelinux.cfg

2)以光盘中的isolinux目录为模板,拷贝必要的文件

# cd  /var/lib/tftpboot/

# wget http://192.168.4.254/rh7dvd/isolinux/isolinux.cfg -O pxelinux.cfg/default   //建立菜单配置

# ls -l /var/lib/tftpboot/pxelinux.cfg/default

# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default      //修改权限,方便修改内容

# ls -l /var/lib/tftpboot/pxelinux.cfg/default

 

# wget  http://192.168.4.254/rh7dvd/isolinux/vesamenu.c32      //提供图形支持

# wget  http://192.168.4.254/rh7dvd/isolinux/splash.png       //准备背景图片

# ls  -R  /var/lib/tftpboot/          //确认部署结果

 

3)调整启动参数# vim  /var/lib/tftpboot/pxelinux.cfg/default

    default vesamenu.c32                              //默认交给图形模块处理

    timeout 600                                //选择限时为60秒(单位1/10秒)

.. ..

menu background splash.png                    //背景图片

第11行menu title  PXE  Installation  Server             //启动菜单标题信息

    .. ..

    label  linux                                  //菜单项标签

        menu  label  ^Install Red Hat Enterprise Linux 7.2

第63行kernel  rhel7/vmlinuz                      //内核的位置

第64行append initrd=rhel7/initrd.img inst.stage2=http://192.168.4.254/rh7dvd quiet          //初始镜像、安装源位置

    label rescue

        menu label ^Rescue a Red Hat Enterprise Linux system

第95行kernel rhel7/vmlinuz

第96行append initrd=rhel7/initrd.img inst.stage2=http://192.168.4.254/rh7dvd rescue

第109行label local                                     //从硬盘启动

第110行menu  default                              //默认启动方式

第111行menu label Boot from ^local drive          #从本地硬盘启动

四.检查TFTP服务是否可用——使用tftp命令访问测试

Ø 客户端工具tftp由同名软件包提供

Ø 用法:tftp 服务器地址 -c get 文件名

1)在pc207上安装tftp命令工具 # yum  -y  install  tftp

2)在pc207上访问svr7上的TFTP服务端,下载文件测试

# tftp  192.168.4.7  -c  get pxelinux.0

# ls  -lh  pxelinux.0                      //检查下载结果

PXE客户机从开机到安装系统的过程(引导环节)

1)加载网卡芯片里的PXE client程序

2)由PXE Client向DHCP服务器获知IP地址、TFTP服务器地址、启动文件名

3)从TFTP服务器下载启动文件pxelinux.0

4)由pxelinux.0接管控制权

5)由pxelinux.0从TFTP服务器下载配置文件pxelinux.cfg/default

6)由pxelinux.0根据default配置,在客户机的显示一个启动菜单

7)根据用户选择(装rhel7),去下载内核vmlinuz,同时下载配套的initrd.img

8)在内存里加载initrd.img、vmlinuz

9)由内核vmlinuz接管控制权,主导安装过程

10)由内核vmlinuz根据inst.stage2=给定的地址下载rhel7的安装程序   

       !!!给定的地址/LiveOS/squashfs.img

11)把squashfs.img释放到内存里运行

12)由sqaushfs.img 提供安装向导程序(选语言、……)

13)进入正常的安装过程

 

initrd镜像的内容:

包括insmod模块管理工具,用来加载支持xfs、ext4的模块

 

案例:验证PXE网络装机

步骤一:新建一台虚拟机pxetest,注意将安装方式选择“网络引导(PXE)”。虚拟机的其他设置参考:内存1G、硬盘20G;网络类型要与PXE服务器相同,比如选用private1隔离网络。

注意:如果是生产环境中已经有系统的客户机,则需要调整BIOS设置,将网络引导作为第一启动设备。

步骤二:启动虚拟机pxetest,验证PXE网络安装过程

1)确认启动界面。 客户机通过PXE引导以后,可以获得服务端提供的配置界面。

2)选择第一个菜单项开始安装RHEL7操作系统,安装程序,根据提示选择中文后继续。

3)下一步需手动选择安装源

指定位于http://192.168.4.254/rh7dvd的软件仓库,软件选择、安装位置等设置根据需要指定,确认后继续。后续过程与正常的光盘安装类似,不再赘述。

顺利操作到这里说明PXE网络引导安装的目标已经实现了。

 

Kickstart自动应答

Kickstart技术:无人值守/自动应答

Ø 预先提供应答文件,定义好各种安装设置

Ø 免去交互过程,实现全自动化安装

Ø 添加%post脚本,可执行安装后的各种配置

应答文件从哪来?

方法一:找一台RHEL7客户机,获取应答文件模板:/root/anaconda-ks.cfg

方法二:安装system-config-kickstart工具

执行上述图形配置工具,创建新应答文件 (常用

注意:1.所用客户机、YUM库的版本应该与待安装系统一致,避免兼容性故障;

  2.修改后部署到资源服务器的/var/www/html/ks-rhel7.cfg

  3.确保客户机可成功下载http://192.168.4.254/ks-rhel7.cfg

案例:PXE+kickstart自动装机

在PXE服务器上为RHEL7客户机准备ks应答文件,完成下列任务:

    实现全自动的安装及配置    能够自动配好YUM仓库

然后在客户机上验证PXE+kickstart全自动装机过程:

    再次将测试客户机从PXE启动并安装    完成后,重启客户机并验证结果

一.准备应答文件

找一台RHEL7系统的模板虚拟机,使用配置工具生成应答文件。

1)在模板机上安装system-config-kickstart软件包

   # yum  -y  install  system-config-kickstart

  2)创建应答文件,调整模板机的yum仓库设置

清理掉无关的yum源,只保留为客户机安装RHEL7系统所必要的yum源,并且将源的ID修改为development。

   # vim  /etc/yum.repos.d/rh7dvd.repo

    [development]

    name = Red Hat Enterprise Linux 7

    baseurl = http://192.168.4.254/rh7dvd

    gpgcheck = 0

3)运行system-config-kickstart工具,创建应答文件

   # system-config-kickstart

在支持图形程序的环境运行system-config-kickstart,即可打开该配置工具。

通过“文件”菜单打开/root/anaconda-ks.cfg文件,作为应答配置模板,这样可以节省很多时间。根据需要确认默认语言、时区,设置根口令、磁盘分区规划等基本信息。

在安装方法部分,选择“执行新安装”,并正确设置HTTP安装源的访问地址信息。

在引导装载程序选项,选择“安装新引导装载程序”。

在分区信息部分,选择清除主引导记录、删除所有现存分区、初始化磁盘标签,并手动添加/boot 200MB、SWAP分区 2000MB、/分区 所有剩余空间。

在网络配置部分,确认已添加第一块网卡,设为DHCP自动获取。

在防火墙配置部分,禁用SELinux、禁用防火墙。

在软件包选择部分,根据客户机的实际需要定制。比如若要使用图形桌面环境,建议将GNOME相关的包勾选上。

在安装后脚本部分,添加经验证的正确可执行语句,使客户机装好系统后能够自动配好YUM源。

确认上述调整后,通过“文件”菜单将其保存为/root/ks-rhel7.cfg。

4)应答文件微调整

确认应答文件:根据需要做必要的调整/修复、去掉冗余repo库(比如以repo --name开头的Server-HighAvailability、Server-ResilientStorage、autopart等行)

   # vim  /root/ks-rhel7.cfg

    install                                                  //安装基本信息设置

……url --url="http://192.168.4.254/rh7dvd"                  //安装源设置

……#autopart --type=lvm                                     //分区设置

……%post --interpreter=/bin/bash                          //安装后脚本设置

    echo  '[rhel7]

    name = Red Hat Enterprise Linux 7.2

    baseurl = http://192.168.4.254/rh7dvd

    gpgcheck = 0'  >  /etc/yum.repos.d/rhel7.repo

    %end

    %packages                                              //软件包设置

    @^graphical-server-environment                         //安装软件包组

二.部署应答文件——PXE与kickstart结合使用 

1)将应答文件部署在客户机可访问的位置

部署并确认文件(真机上):#scp  [email protected]:/root/ks-rhel7.cfg  /var/www/html/     # ls  -lh  /var/www/html/ks-rhel7.cfg          //检查部署的文件

在客户端下载应答文件,确保可访问:

# wget  http://192.168.4.254/ks-rhel7.cfg

# ls  -lh  ks-rhel7.cfg                 //检查下载的文件

2)在PXE服务器上修改default引导配置,调用应答文件

找到相应的label启动项,在append后添加ks=应答文件地址,去掉原有的inst.stage2参数设置:

   # vim  /var/lib/tftpboot/pxelinux.cfg/default

 .. ..label linux

 .. ..append initrd=rhel7/initrd.img ks=http://192.168.4.254/ks-rhel7.cfg 

三.验证PXE+kickstart自动应答——PXE启动后自动安装系统,并配置yum源

1)新建一台虚拟机裸机,确认支持PXE网卡启动

新建一台虚拟机裸机,注意以下事项:将内存设为1G、硬盘设为20G;网络类型要与pxesvr服务器的相同,比如选择private1。

2)启动虚拟机裸机,验证PXE网络安装过程

正常PXE引导,选择第一个启动项回车确认即快速进入全自动安装,后续过程基本无需人工干预。

 

PXE客户机从开机到安装系统(自动应答)的过程

1) 加载网卡芯片里的PXE client程序

2) 由PXE Client向DHCP服务器获知IP地址、TFTP服务器地址、启动文件名

3) 从TFTP服务器下载启动文件pxelinux.0

4) 由pxelinux.0接管控制权

5) 由pxelinux.0从TFTP服务器下载配置文件pxelinux.cfg/default

6) 由pxelinux.0根据default配置,在客户机的显示一个启动菜单

7) 根据用户选择(装rhel7),去下载内核vmlinuz,同时下载配套的initrd.img

8) 在内存里加载initrd.img、vmlinuz

9) 由内核vmlinuz接管控制权,主导安装过程

10) 由内核vmlinuz根据ks=给定的地址下载应答文件

11) 根据应答文件的设置完成自动化安装及配置客户机系统的过程

###############################################################################

 

 

 

你可能感兴趣的:(Linux)