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

相关文章

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

python利用backoff实现异常自动重试详解

《python利用backoff实现异常自动重试详解》backoff是一个用于实现重试机制的Python库,通过指数退避或其他策略自动重试失败的操作,下面小编就来和大家详细讲讲如何利用backoff实... 目录1. backoff 库简介2. on_exception 装饰器的原理2.1 核心逻辑2.2