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的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 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Shell脚本实现自动登录服务器

1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]]thenhostNum=`cat ./serverList.txt | wc -l`e

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env

以后写代码都是AI自动写了,Cursor+Claude-3.5-Sonnet,Karpathy 点赞的 AI 代码神器。如何使用详细教程

Cursor 情况简介 AI 大神 Andrej Karpathy 都被震惊了!他最近在试用 VS Code Cursor +Claude Sonnet 3.5,结果发现这玩意儿比 GitHub Copilot 还好用! Cursor 在短短时间内迅速成为程序员群体的顶流神器,其背后的原因在于其默认使用 OpenAI 投资的 Claude-3.5-Sonnet 模型,这一举动不仅改变了代码生成