PXE高效批量网络装机

目录

一、系统装机

1、系统装机的方式

         2、系统装机的三种引导方式

3、 系统安装过程

4、 Linux安装光盘的相关文件

二、pxe(preboot execute environment )

1、什么是pxe

2、pxe实现的硬件条件

3、pxe实现过程详解

三、网络装机过程

1、搭建PXE远程安装服务器

2、client裸机通过pxe远程安装服务器装机步骤

四、kickstart工具

1、kickstart概念

2、Kickstart无人值守安装的基本流程

3、Kickstart无人值守安装的具体步骤

3.1 下载安装图形化工具

3.2 开启Kickstart工具,生成应答文件

3.3 修改/var/lib/tftpboot/pxelinux.cfg/default文件

3.4 client裸机实现无人值守的自动安装

四、Cobbler工具

1、Cobbler概念

2、Cobbler的工作过程详解

3、使用Cobbler工具装机

3.1 安装cobbler工具与dhcp

 3.2 修改配置文件

3.3 修改cobbler的dhcp的配置文件

 3.4 下载安装文件

 3.5 client裸机安装验证


一、系统装机

1、系统装机的方式

  • 光盘安装:将操作系统的安装文件刻录到光盘中,然后通过光盘启动计算机进行安装
  • USB安装:将操作系统的安装文件制作成启动U盘,然后通过U盘启动计算机进行安装
  • 网络安装:通过网络从服务器上下载安装文件,然后进行安装
  • 硬盘镜像安装:将操作系统的安装文件制作成硬盘镜像,然后通过软件将镜像文件写入计算机硬盘,最后进行安装

2、系统装机的三种引导方式

  • BIOS引导:基本输入/输出系统(BIOS)是一种旧式的引导方式,它在计算机启动时首先运行。BIOS引导是在计算机启动时检测硬件并加载操作系统的一种方式。它使用主引导记录(MBR)来引导操作系统
  • UEFI引导:统一可扩展固件接口(UEFI)是一种更现代的引导方式,逐渐取代了传统的BIOS引导。UEFI提供了更多的功能和安全性,并支持更大的硬盘容量。UEFI引导使用GUID分区表(GPT)来引导操作系统
  • 网络引导:网络引导是一种通过网络加载操作系统的方式,而不是从本地硬盘或光盘加载。它通常用于大型企业环境中,可以通过网络从中央服务器或网络引导服务器加载操作系统镜像。

3、 系统安装过程

  • 引导加载程序(Bootloader):在计算机启动时,引导加载程序(如GRUB或Windows Boot Manager)负责加载操作系统。它位于引导扇区(通常是硬盘的第一个扇区)中,并负责引导操作系统的加载过程
  • 加载启动安装菜单:引导加载程序会显示一个启动菜单,提供不同的选项供用户选择。这些选项可能包括安装操作系统、修复系统、进入救援模式等
  • 选择安装选项:用户选择安装操作系统的选项后,引导加载程序会根据选项加载相应的内核和initrd(Initial RAM Disk)
  • 加载内核和initrd系统:引导加载程序将操作系统的内核和initrd系统加载到内存中。initrd是一个临时的文件系统,包含了用于启动和加载实际根文件系统所需的驱动程序、工具和配置文件
  • 内核初始化和启动:加载内核后,引导加载程序将控制权转移到内核代码。内核开始初始化硬件、建立内存管理、设置中断处理程序等
  • 加载根文件系统:内核初始化后,它会尝试加载实际的根文件系统,该文件系统通常位于硬盘的某个分区上。内核会使用存储在initrd中的驱动程序和工具来识别和加载根文件系统
  • 运行anaconda的安装向导:一旦根文件系统成功加载,引导加载程序会将控制权转移到anaconda安装程序。anaconda是一种常用的安装程序,用于许多Linux发行版的安装。它提供了一个图形化的安装向导,引导用户完成系统安装的各个步骤
  • 安装向导步骤:anaconda安装向导会引导用户进行一系列的配置和选择,例如选择安装位置、分区设置、网络配置、语言和时区设置、用户账户设置等。用户需要根据自己的需求和偏好进行相应的选择
  • 安装过程:anaconda会根据用户的选择和配置,将操作系统的文件复制到指定的安装位置,并进行必要的系统配置。这可能包括安装软件包、设置系统服务、配置引导加载程序等

  • 安装完成:安装过程完成后,anaconda会提示用户安装完成,并要求重新启动计算机

4、 Linux安装光盘的相关文件

在系统光盘的isolinux目录下有和安装相关的文件

  • boot.cat: 相当于grub的第一阶段,是引导光盘中的一个关键文件,包含了引导目录的信息、引导加载程序的位置和配置、启动菜单的配置以及光盘验证信息

  • grub.conf:是GRUB引导加载程序的配置文件,用于定义引导菜单的配置、默认启动项和其他选项

  • isolinux.bin:这是一个引导加载程序,用于引导光盘的启动过程。它包含了启动光盘所需的引导代码和配置信息,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目

  • memtest:是一个独立的内存测试工具,用于检测计算机的内存是否存在问题

  • TRANS.TBL:是一个用于文件传输的索引文件,用于记录文件名和位置信息。它在文件传输过程中起着索引和参考的作用,以确保文件的完整性和准确性

  • vmlinuz:这是Linux内核的可执行文件。在引导过程中,它会被加载到内存中,并由引导加载程序启动

  • boot.msg:通常是一个用于引导菜单的消息文件。它包含了一些文本信息,用于在引导过程中向用户显示一些提示、说明或者其他相关信息

  • initrd.img:这个文件是一个初始 RAM 磁盘(Initial RAM Disk)映像,它包含了在启动过程中需要用到的文件系统、驱动程序和工具。在启动过程中,initrd会被加载到内存中,以便内核可以在没有完整文件系统支持的情况下启动并加载必要的驱动程序

  • isolinux.cfg:这是isolinux的配置文件。当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件,定义了启动菜单的外观和行为。它包含了启动选项、菜单标题、菜单项等信息

  • splash.png:这是一个启动菜单的背景图片。它用于美化启动菜单的外观,并提供视觉效果

  • vesamenu.c32:是光盘启动后的启动菜单图形界面,也属于SYSLINUX项目,menu.c32提供纯文本的菜单

二、pxe(preboot execute environment )

1、什么是pxe

PXE(Preboot eXecution Environment)是一种网络协议,它允许计算机通过网络启动和安装操作系统。使用PXE,计算机可以从网络中的服务器获取引导程序和操作系统安装文件,而不是从本地硬盘或光盘启动。这种方法对于大规模部署和远程管理计算机非常有用

PXE通常涉及以下几个组件:

  • PXE服务器:这是一个运行PXE服务的网络服务器,它负责提供引导程序和操作系统安装文件。通常,PXE服务器上会配置一个特殊的目录,其中包含了用于网络引导的文件
  • PXE客户端:这是希望通过网络引导的计算机。PXE客户端在启动时会发送PXE引导请求到网络中,以寻找可用的PXE服务器
  • PXE引导程序:这是PXE服务器上的特殊程序,它能够响应PXE客户端的引导请求,并将引导程序和操作系统安装文件发送给PXE客户端

2、pxe实现的硬件条件

  • 网络接口卡:计算机必须具有一个网络接口卡(Network Interface Card,NIC),并且该网卡必须支持PXE协议。大多数现代计算机和服务器都具备这样的网卡
  • BIOS或UEFI支持:计算机的BIOS或UEFI固件必须支持PXE引导。在BIOS或UEFI设置中,需要启用PXE引导选项
  • 网络连接:计算机必须连接到支持PXE引导的网络。通常,这意味着计算机必须连接到一个配置好PXE服务器的局域网或企业网络
  • DHCP服务器:网络上需要有一个DHCP服务器来分配IP地址和其他网络配置信息给PXE引导的计算机
  • TFTP服务器:通常,PXE引导需要一个TFTP(Trivial File Transfer Protocol)服务器,用于提供引导所需的文件,例如操作系统镜像和引导程序

3、pxe实现过程详解

①设备网卡需要查找相关的dhcp服务器(获取地址时间)

②找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址还提供给客户机TFTP server地址(dhcp本身不提供tftp服务)

③网卡使用tftp客户端把引导程序加载到内存中来

④bios执行引导程序

⑤引导程序会去TFTP server去查找配置文件

⑥根据配置文件去引导安装系统

⑦系统安装过程

PXE高效批量网络装机_第1张图片

三、网络装机过程

PXE远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能够向客户机裸机发送 PXE引导程序、Linux 内核、启动菜单等数据,以及提供安装文件

前提:关闭防火墙和临时防护

systemctl   stop  firewalld      #关闭防火墙
setenforce  0                    #关闭临时防护

基本流程:

①配置dhcp服务器(需要手写dhcp配置文件)给同一局域网内新加机器分配ip地址

②tftp服务端开启udp配置默认关闭

③安装vsftpd服务,通过光驱挂载获取软件安装源

④安装syslinux获取得 pxelinux.0 文件

⑤将四大文件拷入 (/var/lib/tftpboot )

  • initrd.img (从光驱挂载到本地获取)

  • pxelinux.0  (类似grub)

  • pxelinux.cfg/default (需要手写配置软件安装源的来源) 

  • vmlinuz(从光驱挂载到本地获取)

⑥开启tftp和vsftpd服务

具体操作步骤:

1、搭建PXE远程安装服务器

#安装所需软件
[root@localhost ~]#yum install tftp-server   vsftpd   syslinux  dhcp   -y

#将dhcp配置文件模板复制到dhcp目录下,在此基础上修改,来给同一局域网内新加机器分配ip地址
[root@localhost ~]#cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@localhost ~]#vim /etc/dhcp/dhcpd.conf
subnet 172.16.12.0 netmask 255.255.255.0 {
  range 172.16.12.20 172.16.12.50;
  option routers 172.16.12.2;
  next-server 172.16.12.10;      #指定tftp的服务器地址
  filename "pxelinux.0";         #指定启动文件
}
[root@localhost ~]#systemctl start dhcpd

#将tftp服务端开启udp配置默认关闭
[root@localhost ~]#rpm -ql tftp-server
[root@localhost isolinux]#vim /etc/xinetd.d/tftp 
#第14行将默认disable=yes改成no
disable                 = no

#获取四大文件:initrd.img、pxelinux.0、pxelinux.cfg/default、vmlinuz
[root@localhost ~]#cd /var/lib/tftpboot/
#进入TFTP服务器的根目录,拷贝PXE引导所需的四大文件   
[root@localhost tftpboot]#mount /dev/sr0 /mnt    
#挂载光驱到/mnt,来获取PXE引导所需文件
[root@localhost tftpboot]#cp /mnt/isolinux/initrd.img .  
#拷贝PXE引导所需的initrd.img到当前目录
[root@localhost tftpboot]#cp /mnt/isolinux/vmlinuz .
#拷贝PXE引导所需的vmlinuz到当前目录
[root@localhost tftpboot]#ls
initrd.img  vmlinuz     #现在TFTP服务器的根目录下已有两大文件,现在还需要两个文件
[root@localhost tftpboot]#rpm -ql syslinux | grep pxelinux.0   
#查找syslinux软件里的pxelinux.0文件
[root@localhost tftpboot]#cp /usr/share/syslinux/pxelinux.0 .   
#将pxelinux.0文件拷贝到当前目录
[root@localhost tftpboot]#mkdir pxelinux.cfg
#创建PXE引导所需的pxelinux.cfg/default文件并写入配置
[root@localhost tftpboot]#vim pxelinux.cfg/default
default linux
timeout 600

label linux
        kernel vmlinuz
        append initrd=initrd.img method=ftp://172.16.12.10/centos7  
#指定系统装机所需的软件安装源获取于PXE远程安装服务器的ftp根目录的centos7目录下
[root@localhost tftpboot]#mkdir /var/ftp/centos7
[root@localhost tftpboot]#mount /dev/sr0 /var/ftp/centos7/  
#将光驱挂载到ftp根目录的centos7下,获取相关软件安装源
[root@localhost tftpboot]#systemctl start tftp.socket    #启动服务
[root@localhost tftpboot]#systemctl start vsftpd

2、client裸机通过pxe远程安装服务器装机步骤

PXE高效批量网络装机_第2张图片

PXE高效批量网络装机_第3张图片

PXE高效批量网络装机_第4张图片

四、kickstart工具

1、kickstart概念

Kickstart是一种用于Linux系统自动化安装的工具,它允许用户通过一个预先定义好的配置文件来自动化安装过程,从而实现无人值守安装

在Kickstart安装过程中,用户可以创建一个Kickstart配置文件,其中包含了安装过程中需要的各种设置和选项,比如分区信息、软件包选择、网络设置、用户账户等。一旦配置文件准备好,安装程序就可以使用这个文件来自动完成整个安装过程,而无需用户交互

2、Kickstart无人值守安装的基本流程

  • 创建Kickstart配置文件:用户需要创建一个Kickstart配置文件,通常命名为ks.cfg,其中包含了安装过程中的各种设置和选项。
  • 启动安装程序:用户在安装目标系统时,可以通过引导光盘、USB驱动器或网络引导等方式启动安装程序,并在启动参数中指定Kickstart配置文件的位置。
  • 自动化安装:安装程序在启动时会读取Kickstart配置文件,然后根据配置文件中的设置自动完成安装过程,包括磁盘分区、软件包安装、网络设置等

3、Kickstart无人值守安装的具体步骤

3.1 下载安装图形化工具

#CentOS 8,7,6 不同版本的kickstart文件格式不尽相同,不可混用
#本次Kickstart无人值守安装是基于centos 7
[root@localhost ~]#yum install system-config-kickstart -y

3.2 开启Kickstart工具,生成应答文件

①安装完图形化工具后,登入PXE远程安装服务器,开启Kickstart工具

PXE高效批量网络装机_第5张图片

②基本配置

PXE高效批量网络装机_第6张图片

③安装方法

PXE高效批量网络装机_第7张图片

④引导装载程序选项 

PXE高效批量网络装机_第8张图片

⑤分区信息

PXE高效批量网络装机_第9张图片

PXE高效批量网络装机_第10张图片

PXE高效批量网络装机_第11张图片

PXE高效批量网络装机_第12张图片

⑥网络配置

PXE高效批量网络装机_第13张图片

⑦防火墙配置

PXE高效批量网络装机_第14张图片

⑧显示配置

PXE高效批量网络装机_第15张图片

⑨安装后脚本

PXE高效批量网络装机_第16张图片

 ⑩保存ks.cfg应答文件到服务器的/var/ftp/目录下

PXE高效批量网络装机_第17张图片

PXE高效批量网络装机_第18张图片

3.3 修改/var/lib/tftpboot/pxelinux.cfg/default文件

PXE高效批量网络装机_第19张图片

3.4 client裸机实现无人值守的自动安装

client裸机以网络方式启动,等待其自动安装,接下会进入下图这样的界面,就可以正常使用了

PXE高效批量网络装机_第20张图片

四、Cobbler工具

1、Cobbler概念

Cobbler是一个开源的Linux系统部署和管理工具,它旨在简化大规模Linux系统的自动化安装和配置管理

Cobbler提供了一个集中化的管理界面,通过该界面可以轻松地进行以下操作:

  • 自动化安装:Cobbler支持使用Kickstart配置文件进行无人值守的自动化安装。它可以根据预定义的配置文件来自动化执行操作系统的安装过程,包括磁盘分区、软件包选择、网络设置等
  • 配置管理:Cobbler允许管理员集中管理和维护各种配置文件,如DHCP、DNS、TFTP等。通过Cobbler,管理员可以轻松地管理这些配置文件,确保系统的正确配置和运行
  • 镜像管理:Cobbler支持管理和维护各种操作系统镜像,包括Linux发行版和其他操作系统。管理员可以通过Cobbler上传、管理和分发这些镜像,从而简化系统部署的过程
  • 配置模板:Cobbler提供了一些配置模板,可以根据需要自定义和扩展。这些模板可以用于生成Kickstart配置文件、DHCP配置文件等,以满足不同的部署需求

Cobbler是一个功能强大的工具,可帮助管理员简化Linux系统的部署和管理工作。它提供了一套集中化的管理界面和自动化工具,使得大规模Linux系统的部署和维护变得更加高效和可靠

2、Cobbler的工作过程详解

①client裸机配置了从网络启动后,开机后会广播包请求DHCP服务器(cobbler server)发送其分配好的一个IP

②DHCP服务器(cobbler server)收到请求后发送responese,包括其ip地址

③client裸机拿到ip后再向cobbler server发送请求OS引导文件的请求

④cobbler server告诉裸机OS引导文件的名字和TFTP server的ip和port

⑤client裸机通过上面告知的TFTP server地址通信,下载引导文件

⑥client裸机执行执行该引导文件,确定加载信息,选择要安装的os,期间会再向cobbler server请求kickstart文件和os image

⑦cobbler server发送请求的kickstart和os iamge

⑧client裸机加载kickstart文件

⑩client裸机接收os image,安装该os image

PXE高效批量网络装机_第21张图片

3、使用Cobbler工具装机

3.1 安装cobbler工具与dhcp

cobbler工具光盘中是没有软件包的,需要先下载额外源,而后再下载工具

cobbler工具,并不能提供dhcp服务,所以还需要安装dhcp服务

[root@localhost ~]#yum install epel-release.noarch -y
[root@localhost ~]#yum install cobbler dhcp httpd   -y
[root@localhost ~]#systemctl enable --now cobblerd httpd tftp dhcpd

安装完相关软件后,开启cobblerd、httpd、tftp、dhcpd服务会显示失败,因为有些配置还没有完成

PXE高效批量网络装机_第22张图片

 再输入cobbler  check命令,检查Cobbler服务器的配置和运行状态

PXE高效批量网络装机_第23张图片

 分析这些配置:

1.服务器字段设置    

Cobbler需要将/etc/cobbler/settings文件中的 server字段设置为非 'localhost' 的值,应设置为PXE客户端能够访问到的实际主机名或IP地址

2.next_server字段设置    

同样在/etc/cobbler/settings 文件中,将 next_server字段设置为PXE网络上启动服务器的真实IP地址,而不是 '127.0.0.1'(本地回环地址)

3.SELinux状态    

由于系统启用了SELinux,需要按照Cobbler Wiki页面的指导来确保Cobbler在当前SELinux环境中正常工作

4.TFTP服务配置    

需要在 /etc/xinetd.d/tftp 文件中将 'disable' 参数改为 'no',以启用并允许通过xinetd启动TFTP服务

5.缺少网络引导加载器    

检查 /var/lib/cobbler/loaders 目录下是否包含所有架构所需的引导加载器文件。若仅支持x86/x86_64架构,确保已安装最新版本的syslinux包,并确认pxelinux.0、menu.c32等文件存在。

6.启动rsyncd服务 

使用systemctl工具启用并启动rsyncd.service,以便Cobbler可以管理镜像同步等相关功能

7.debmirror包未安装    

若要管理和部署Debian系统及其仓库,需安装debmirror软件包

8.默认密码安全  

默认的模板密码设置仍为 'cobbler',为了安全性,请更改此密码。可以使用提供的openssl命令生成一个新的加密密码,并将其替换到 /etc/cobbler/settings 文件中的 default_password_crypted 字段

9.电源管理工具缺失    

发现没有安装用于电源管理(如重启、关机)的fencing工具。如果需要使用这些可选功能,请安装cman或fence-agents相关包

 3.2 修改配置文件

上面的这些配置,不需要全部修改,只需要操作其中的几个,剩下的,只需要使用cobbler  sync命令同步一下即可

①首先先生成自己的一个加密密码并且复制,作为root用户登录密码

[root@localhost ~]#openssl passwd -1 '123456'
$1$Li5NApYR$LeA/IYaO9BQDe.75nvA.x1

② 修改cobbler配置文件

[root@centos7 ~]#vim /etc/cobbler/settings
#将101行的加密密码替换成自己生成的密码
default_password_crypted: "$1$Li5NApYR$LeA/IYaO9BQDe.75nvA.x1"
#第278行next_server字段,将回环地址设置成服务器的ip地址
next_server: 172.16.12.10
#在第390行server字段,将回环地址设置成服务器的ip地址
server:172.16.12.10
#将第242行manage_dhcp的值设置为1,表示通过cobbler工具生成dhcp.conf配置文件
manage_dhcp:1 
#将第298行的pxe_just_once的值设置为,表示,如果客户端有系统,则该工具不生效,防止重复安装系统
pxe_just_once: 1

 将101行的加密密码替换成自己生成的密码

第278行next_server字段,将回环地址设置成服务器的ip地址

第390行server字段,将回环地址设置成服务器的ip地址

第242行manage_dhcp的值设置为1,表示通过cobbler工具生成dhcp.conf配置文件

PXE高效批量网络装机_第24张图片

第298行的pxe_just_once的值设置为,表示,如果客户端有系统,则该工具不生效,防止重复安装系统

PXE高效批量网络装机_第25张图片

3.3 修改cobbler的dhcp的配置文件

[root@localhost ~]#vim /etc/cobbler/dhcp.template
subnet 172.16.12.0 netmask 255.255.255.0 {      #服务器IP地址、子网掩码
     option routers             172.16.12.2;    #网关
     option domain-name-servers 8.8.8.8;        #dns
     option subnet-mask         255.255.255.0;  #子网掩码
     range dynamic-bootp        172.16.12.20 172.16.12.50;   #client裸机自动获取ip地址范围
#自动生成dhcp配置文件并启动
[root@localhost ~]#cobbler sync     #cobbler同步
[root@localhost ~]#systemctl restart cobblerd.service   #重启服务
[root@localhost ~]#cat -n /etc/dhcp/dhcpd.conf   #查看dhcp的配置信息是否同步成功
[root@localhost ~]#tree /var/lib/tftpboot/      #查看系统启动所需的文件是否在规定目录下

 修改cobbler的dhcp的配置文件

PXE高效批量网络装机_第26张图片

同步配置信息到/etc/dhcp/dhcpd.conf

PXE高效批量网络装机_第27张图片

重启cobbler服务,并查看dhcp的配置文件和/var/lib/tftpboot文件是否同步成功

PXE高效批量网络装机_第28张图片

PXE高效批量网络装机_第29张图片

 3.4 下载安装文件

导入CentOS系统的安装文件,生成相应的YUM源

#先挂载光驱,然后将/mnt目录下的所有文件,拷到一个固定目录/var/www/cobbler/ks_mirror/,取一个名字叫做centos-7.7-x86_64
[root@localhost ~]#mount /dev/sr0 /mnt
[root@localhost ~]#cobbler import --name=centos-7-x86_64 --path=/mnt --arch=x86_64

PXE高效批量网络装机_第30张图片

 3.5 client裸机安装验证

client裸机还是选择以网络方式启动,等待之后,即可出现下图

PXE高效批量网络装机_第31张图片

PXE高效批量网络装机_第32张图片

你可能感兴趣的:(网络)