PXE+kickstart自动装机

2023-11-26 10:10
文章标签 自动 装机 kickstart pxe

本文主要是介绍PXE+kickstart自动装机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网络装机的概述:

1. 网络装机的优势:

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

  • 自动化:装系统、配置各种服务
  • 远程实现:不需要光盘、U盘等物理安装介质

在这里插入图片描述

2. 什么是PXE网络

  • PXE,Pre-boot eXecution Environment
  1. 预启动执行环境,在操作系统之前运行
  2. 可用于远程安装
  • 工作模式
  1. PXE client集成在网卡的启动芯片中
  2. 当计算机引导时,从网卡芯片中把PXE client调入内存执行,获取PXE server配置、显示菜单,根据用户选择将远程引导程序下载到本机运行。

3. PXE组件及过程分析

  • 需要哪些服务组件
  1. DHCP服务,分配IP地址、定位引导程序
  2. TFTP服务,提供引导程序下载
  3. HTTP服务(或FTP/NFS),提供yum安装源
  • 客户机应具备的条件
  1. 网卡芯片必须支持PXE协议
  2. 主板支持从网卡启动
    在这里插入图片描述

部署PXE网络装机:

1. 通过 HTTP 方式发布CentOS7软件源

#安装httpd软件包并启动
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd.service 
[root@localhost ~]# systemctl enable httpd.service
# 准备yum仓库,部署到Web子目录
[root@localhost ~]# mkdir  /var/www/html/dvd   --建立挂载点
[root@localhost ~]# vim /etc/fstab            ---设置开机自动挂载
........
添加以下内容
/dev/cdrom   /var/www/html/dvd  iso9660  loop,ro 0 0
[root@localhost ~]# mount -a    ---加载上面配置的配置文件立即生效挂载
[root@localhost ~]# df -hT /var/www/html/dvd/   --查看挂载信息
Filesystem     Type     Size  Used Avail Use% Mounted on
/dev/loop0     iso9660  4.3G  4.3G     0 100% /var/www/html/dvd
  • 确保yum仓库HTTP资源可用
  1. 从浏览器访问http://192.168.20.10/dvd/,可看到仓库资源。
    在这里插入图片描述注意:httpd服务器必须关闭防火墙或者设置规则运许80通过

2. 配置DHCP服务

#安装dhcp软件包
[root@localhost ~]# yum -y install dhcp.x86_64
#建立dhcpd.conf服务配置
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 
添加以下内容:
subnet 192.168.20.0 netmask 255.255.255.0 {    ----配置网段以及子网掩码range  192.168.20.100 192.168.20.200;     ---配置dhcp地址池的范围next-server  192.168.20.10;           --配置下一个服务器的IP地址filename  "pxelinux.0";               ---定义引导文件名称
}
#启动系统服务dhcpd,并设置开机自启
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
#确认dhcpd服务状态
[root@localhost ~]# netstat  -anptu  |  grep  dhcpd
udp        0      0 0.0.0.0:67              0.0.0.0:*                           24679/dhcpd

3. 构建TFTP服务器

#安装TFTP软件包
[root@localhost ~]# yum -y install tftp-server.x86_64
#启动系统服务tftp,并设置开机自启
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl enable tftp

4. 部署启动文件

  1. 拷贝pxelinux.0程序,部署到TFTP目录,在软件包syslinux提供的目录下找到pxelinux.0程序
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# rpm  -ql  syslinux  |  grep pxelinux.0  --查看安装目录
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0#将其拷贝到/var/lib/tftpboot/目录下,确认部署结果:
[root@localhost ~]# cp  /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
[root@localhost ~]# ls  /var/lib/tftpboot/
pxelinux.0#拷贝引导装机的内核、初始镜像,部署到TFTP目录,当文件较多时,可以在TFTP目录下创建子目录:
[root@localhost ~]# mkdir  /var/lib/tftpboot/CentOS7 #通过CentOS7光盘目录找到PXE版内核vmlinuz、初始镜像initrd.img,将其拷贝到上述子目录:
下载内核、初始化文件
[root@localhost CentOS7]# cd /var/lib/tftpboot/CentOS7
[root@localhost CentOS7]# wget  http://192.168.20.10/dvd/isolinux/vmlinuz
[root@localhost CentOS7]# wget  http://192.168.20.10/dvd/isolinux/initrd.img#确认部署结果:
[root@localhost CentOS7]# cd
[root@localhost ~]# ls -R /var/lib/tftpboot/
/var/lib/tftpboot/:
CentOS7  pxelinux.0/var/lib/tftpboot/CentOS7:
initrd.img  vmlinuz

5. 配置启动菜单

#创建配置目录
[root@localhost ~]# mkdir  /var/lib/tftpboot/pxelinux.cfg#以光盘中的isolinux目录为模板,拷贝必要的文件
[root@localhost ~]# cd  /var/lib/tftpboot/
[root@localhost tftpboot]# wget  http://192.168.20.10/dvd/isolinux/vesamenu.c32  ---提供图形支持
[root@localhost tftpboot]# wget  http://192.168.20.10/dvd/isolinux/splash.png  ---准备背景图片
[root@localhost tftpboot]# wget  -O  pxelinux.cfg/default  http://192.168.20.10/dvd/isolinux/isolinux.cfg  ---建立菜单配置#确认部署结果:
[root@localhost tftpboot]# ls  -R  /var/lib/tftpboot/  
/var/lib/tftpboot/:
CentOS7  pxelinux.0  pxelinux.cfg  splash.png  vesamenu.c32/var/lib/tftpboot/CentOS7:
initrd.img  vmlinuz/var/lib/tftpboot/pxelinux.cfg:
default#修改菜单文件内容
[root@localhost tftpboot]# vim  /var/lib/tftpboot/pxelinux.cfg/default
修改以下内容:
末行模式输入  :set nu   ---开启行号功能
1 default vesamenu.c32    ---默认加载图形模块
2 timeout 600             ----读秒时间,1/10秒
10 menu background splash.png  ---背景图片
11 menu title PXE CentOS 7!       ---菜单界面显示标题61 label linux62  menu label  ^Install CentOS 7   ---菜单项标签63   menu  default                  ---默认启动方式,这个指令必须放在 menu label  ^Install CentOS 7后面64   kernel  CentOS7/vmlinuz       ----指定内核路径65   append initrd=CentOS7/initrd.img inst.stage2=http://192.168.20.10/dvd     ---初始镜像,安装源位置66 label rescue67     menu label ^ CentOS7 system68     kernel CentOS7/vmlinuz69     append initrd=CentOS7/initrd.img inst.stage2=http://192.168.20.10/dvd rescue70 menu  end
#70行后面的内容可以删除掉

6. 验证PXE网络装机

6.1. 新建一台虚拟机:

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

6.2. 启动新建的虚拟机,验证PXE网络安装过程

  1. 确认启动界面
  • 客户机通过PXE引导以后,可以获得服务端提供的配置界面,如图所示
    在这里插入图片描述
  1. 选择第一个菜单项开始安装CentOS7操作系统
  • 成功出现CentOS7安装程序的欢迎界面,根据提示选择中文(如图所示)后继续
    在这里插入图片描述
    3.下一步需手动选择安装源

  • 指定位于http://192.168.20.10/dvd的软件仓库,软件选择、安装位置等设置根据需要指定,确认后继续。

  • 后续过程与正常的光盘安装类似,不再赘述。

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

PXE+kickstart自动装机

1. 准备应答文件

  • 使用图形配置工具system-config-kickstart来生成应答文件

1.1. 安装system-config-kickstart软件包

[root@localhost ~]# yum -y install system-config-kickstart

1.2. 调整yum仓库设置

  • 清理掉无关的yum源,只保留为客户机安装CentOS7系统所必要的yum源,并且将源的ID修改为development。
[root@localhost ~]# vim  /etc/yum.repos.d/dvd.repo
[development]
name = CentOS Linux 7
baseurl = http://192.168.20.10/dvd
gpgcheck = 0

1.3. 运行system-config-kickstart工具,创建应答文件

[root@localhost ~]# system-config-kickstart
Could not open display because no X server is running.
Try running 'system-config-kickstart --help' for a list of options.
-----这里报错:说没有运行x服务
解决如下:
yum -y install xorg-x11-xauth
安装完毕后 重新连接即可
  • 在支持图形程序的环境运行system-config-kickstart,即可打开该配置工具(如图所示)
  • 配置语言、时区、密码等
    在这里插入图片描述
  • 在安装方法部分,选择“执行新安装”,并正确设置HTTP安装源的访问地址信息(如图所示)

在这里插入图片描述

  • 引导装载程序选项
    在这里插入图片描述

  • 在分区信息部分,选择清除主引导记录、删除所有现存分区、初始化磁盘标签,并手动添加/boot 200MB、SWAP分区 2000MB、/分区 所有剩余空间(如图所示)
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

  • 在网络配置部分,确认已添加第一块网卡,设为DHCP自动获取(如图所示)

在这里插入图片描述

  • 在防火墙配置部分,禁用SELinux、禁用防火墙(如图所示)
    在这里插入图片描述
  • 在软件包选择部分,根据客户机的实际需要定制(如图所示)
    在这里插入图片描述在这里插入图片描述
  • 在安装后脚本部分,添加经验证的正确可执行语句,使客户机装好系统后能够自动配好YUM源(如图所示)
    在这里插入图片描述确认上述调整后,通过“文件”菜单将其保存为/root/ks.cfg

2. 部署应答文件

2.1. 查看应答文件的生成

[root@localhost ~]# ls /root/
anaconda-ks.cfg  ks.cfg

2.2. 利用web服务器共享应答文件

[root@localhost ~]# cp ks.cfg /var/www/html/
[root@localhost ~]# ls /var/www/html/
dvd  ks.cfg

2.3. 修改菜单文件

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
.......
#找到相应的label启动项,在append后添加ks=应答文件地址,去掉原有的inst.stage2参数设置
label linuxmenu label  ^Install CentOS 7menu  defaultkernel  CentOS7/vmlinuzappend initrd=CentOS7/initrd.img ks=http://192.168.20.10/ks.cfg......

3. 验证PXE+kickstart自动应答

  • 新建一台虚拟机裸机,确认支持PXE网卡启动,
  • 启动虚拟机裸机,验证PXE网络安装过程
  • 正常PXE引导,选择第一个启动项回车确认即快速进入全自动安装,后续过程基本无需人工干预(如图所示)
    在这里插入图片描述

这篇关于PXE+kickstart自动装机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/425497

相关文章

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

Python Excel实现自动添加编号

《PythonExcel实现自动添加编号》这篇文章主要为大家详细介绍了如何使用Python在Excel中实现自动添加编号效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍简单的说,就是在Excel中有一列h=会有重复

Springboot的自动配置是什么及注意事项

《Springboot的自动配置是什么及注意事项》SpringBoot的自动配置(Auto-configuration)是指框架根据项目的依赖和应用程序的环境自动配置Spring应用上下文中的Bean... 目录核心概念:自动配置的关键特点:自动配置工作原理:示例:需要注意的点1.默认配置可能不适合所有场景

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型