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

相关文章

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

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

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

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

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Spring使用@Retryable实现自动重试机制

《Spring使用@Retryable实现自动重试机制》在微服务架构中,服务之间的调用可能会因为一些暂时性的错误而失败,例如网络波动、数据库连接超时或第三方服务不可用等,在本文中,我们将介绍如何在Sp... 目录引言1. 什么是 @Retryable?2. 如何在 Spring 中使用 @Retryable

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心