PXE+Kickstart 自动化部署系统

news2024/10/2 18:07:07

PXE 预启动执行环境是由Intel开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE技术),主要用于在无人值守安装系统中引导客户端主机安装Linux操作系统.

Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg文件,当安装过程中需要填写参数时则自动匹配Kickstart生成的文件.所以只要Kickstart文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作.

由于当前的客户端主机并没有完整的操作系统,也就不能完成FTP协议的验证了,所以需要使用TFTP协议帮助客户端获取引导及驱动文件.vsftpd服务程序用于将完整的系统安装镜像通过网络传输给客户端.当然,只要能将系统安装镜像成功传输给客户端即可,因此也可以使用httpd来替代vsftpd服务程序.

PXE的工作原理图解

配置DHCP服务程序

配置DHCP服务的目的是为了给局域网内暂时没有IP地址的机器分配一个IP地址,同时传输引导配置文件pxelinux.0,需要注意的是,应该开启DHCP的BOOTP功能,这样当用户获取到IP地址后,会主动请求获取引导驱动文件,从而进入下一步操作.

1.首先通过Yum仓库,安装DHCP服务程序.

[root@localhost ~]# yum install -y dhcp
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package 12:dhcp-4.2.5-68.el7.x86_64 already installed and latest version
Nothing to do

2.编辑DHCP主配置文件,写入以下内容,开启BOOTP功能.

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#

subnet 192.168.1.0 netmask 255.255.255.0 {          #指明分配网段
         range 192.168.1.100 192.168.1.200;         #分配的网段(100-200)
         next-server 192.168.1.10;                  #指定TFTP服务器的地址
         filename "pxelinux.0";                     #指定PXE引导程序的文件名
         default-lease-time 21600;
         max-lease-time 4320;
}

3.启动DHCP服务,并设置开机自启动

[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# systemctl enable dhcpd

配置TFTP服务程序

TFTP作为一种基于UDP协议的简单文件传输协议,不需要用户认证即可获取到用户所需的文件资源,因此接下来配置TFTP服务程序,为客户主机提供引导及驱动文件,当客户端有了基本的驱动程序之后,在通过VSFTP服务程序将完整的光盘镜像文件传输过去.

1.首先通过Yum仓库,安装TFTP服务程序.

[root@localhost ~]# yum install -y tftp tftp-server xinetd
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package tftp-5.2-22.el7.x86_64 already installed and latest version
Package tftp-server-5.2-22.el7.x86_64 already installed and latest version
Nothing to do

2.TFTP是由xinetd服务守护的,所以要开启TFTP只需要修改xinetd服务的几个参数即可

[root@localhost ~]# vim /etc/xinetd.d/tftp 
[root@localhost ~]# cat /etc/xinetd.d/tftp 
# default: off
# description: The tftp server serves files using the trivial file transfer \
#	protocol.  The tftp protocol is often used to boot diskless \
#	workstations, download configuration files to network-aware printers, \
#	and to start the installation process for some operating systems.
service tftp
{
	socket_type		= dgram
	protocol		= udp
	wait			= yes
	user			= root
	server			= /usr/sbin/in.tftpd
	server_args		= -s /var/lib/tftpboot   #设置默认工作目录
	disable			= no                     #设置ftp开机自启动
	per_source		= 11
	cps			= 100 2
	flags			= IPv4
}

3.重启xinetd服务,并设置为开机自启动

[root@localhost ~]# systemctl restart xinetd
[root@localhost ~]# systemctl enable xinetd

配置SYSLinux服务程序

SYSLinux是一个用于提供引导加载的服务程序,与其说SYSLinux是一个服务程序,不如说我们更需要里面的引导文件,在安装SYSLinux服务程序软件包后/usr/share/syslinux目录下回出现很多引导文件.

1.首先通过Yum仓库,安装SYSLinux服务程序.

[root@localhost ~]# yum install -y syslinux mtools
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package syslinux-4.05-13.el7.x86_64 already installed and latest version
Package mtools-4.0.18-5.el7.x86_64 already installed and latest version
Nothing to do

2.然后拷贝pxelinux.0引导文件到/var/lib/tftpboot目录下

[root@localhost ~]# cp -a /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@localhost ~]# ls -l /var/lib/tftpboot/
total 28
-rw-r--r--. 1 root root 26826 May 10  2016 pxelinux.0

3.挂载RHEL光盘,并拷贝Linux的系统菜单和微内核

[root@localhost ~]# mount /dev/sr0 /mnt
mount: /dev/sr0 is write-protected, mounting read-only

[root@localhost ~]# cp -a /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
[root@localhost ~]# cp -a /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/

[root@localhost ~]# cp -a /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/
[root@localhost ~]# cp -a /mnt/isolinux/boot.msg /var/lib/tftpboot/

4.然后再TFTP目录中新建pxelinux.cfg目录,并将开机选项菜单复制到TFTP目录中,重命名为default.

[root@localhost ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# cp -a /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/
[root@localhost ~]# mv /var/lib/tftpboot/pxelinux.cfg/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

5.编辑这个default文件,修改以下内容

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

 59 menu separator # insert an empty line
 60 
 61 label linux
 62   menu label ^Install Red Hat Enterprise Linux 7.5
 63   menu default                                                      #添加默认选择菜单
 64   kernel vmlinuz
 65   append initrd=initrd.img ks=ftp://192.168.1.10/pub/ks.cfg         #指定主服务器IP地址
 66 
 67 label check
 68   menu label Test this ^media & install Red Hat Enterprise Linux 7.5
 69 #  menu default                                                     #注释掉,不用测试功能
 70   kernel vmlinuz
 71   append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.5\x20Server.x86_64 rd.live.check quiet
 72 
 73 menu separator # insert an empty line

配置VSFTP服务程序

前面的微内核传输完毕后,加载了开机菜单,下面我们就要使用VSFTP完整的传输RHEL镜像到远程主机了,当然你也可以使用Web网站替代VSFTP的功能,不过还是推荐使用VSFTP.

1.首先通过Yum仓库,安装VSFTP服务程序.

[root@localhost ~]# yum install -y vsftpd
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager.
Package vsftpd-3.0.2-22.el7.x86_64 already installed and latest version
Nothing to do

2.拷贝RHEL光盘文件到/var/ftp/pub目录下,并赋予相应的权限.

[root@localhost ~]# mkdir -r /var/ftp/pub
[root@localhost ~]# cp -r /mnt/* /var/ftp/pub

[root@localhost ~]# chmod 777 -R /var/ftp/pub
[root@localhost ~]# chown ftp.ftp -R /var/ftp/pub

3.开启VSFTP匿名访问模式,并设置开机自启动

[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# systemctl enable vsftpd

创建KickStart应答文件

KickStart其实准确的说,并不是一个服务程序,而是一个应答文件,其中包含了系统安装过程中所需要的配置参数选项等,在我们安装完系统后,root的家目录里会有一个anaconda-ks.cfg文件,其实这就是安装完本系统的剧本,我们也可以多次利用.

1.这里我们直接复制下面的应答文件,改个名字即可使用啦.

#此处应配置生成装机文件	本步骤跳过(以下是测试脚本)
#-------------------------------------------------------------------
[root@localhost ~]# vim ks.cfg

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation#
url --url="ftp://192.168.1.10/pub/"						#此处修改为服务器IP
# Root password
rootpw --iscrypted $1$K4WAmqxk$ccusVq9PIk6f1uMqJ48fI1
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# Installation logging level
logging --level=info

# System timezone
timezone  Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all  
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --size=500
part swap --fstype="swap" --size=2000
part / --fstype="ext4" --grow --size=1
clearpart --all --initlabel

%packages
@base

%end
#-------------------------------------------------------------------

[root@localhost ~]# cp -a ks.cfg /var/ftp/pub			#拷贝生成的脚本到指定目录下

如果您觉得以上脚本不能满足生产需求,您可以安装system-config-kickstart软件包,这是一款图形界面工具,可以方便的配置生成系统安装脚本.到此位置我们的PXE环境配置完成,另开一台机器,测试效果即可.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/127758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷粒商城之高级篇(2)

2.6 购物车服务 2.6.1 环境搭建 ①域名配置 ②创建 微服务 暂时需要的插件 此外&#xff0c;导入 公共包的依赖 <dependency><groupId>com.atguigu.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT…

50. 残差网络(ResNet)代码实现

1. 残差块 ResNet沿用了VGG完整的 33 卷积层设计。 残差块里首先有2个有相同输出通道数的 33 卷积层。 每个卷积层后接一个批量规范化层和ReLU激活函数。 然后我们通过跨层数据通路&#xff0c;跳过这2个卷积运算&#xff0c;将输入直接加在最后的ReLU激活函数前。 这样的设计…

PDF在线转Word?方便快捷易上手的方法

PDF和Word都是我们日常生活中经常看到的文件格式&#xff0c;如果你也是一个工作党&#xff0c;那小编相信你肯定会遇到关于这两种文件的转换问题。其实&#xff0c;PDF格式是十分方便我们进行文件传输和差阅读&#xff0c;不仅兼容性较强&#xff0c;而且文件内容相对来说是固…

罗克韦尔AB PLC安装Studio 5000 V35的具体步骤演示

罗克韦尔AB PLC安装Studio 5000 V35的具体步骤演示 具体安装步骤可参考如下内容: 解压下载的安装包,找到安装包中的Setup.exe, 如下图所示,右击Setup.exe,选择“以管理员身份运行”, 如下图所示,安装程序正在准备中, 如下图所示,此时安装程序报错:未安装Microsoft…

ARM64内存虚拟化分析(6)向KVM注册内存更新

1 KVM memory listener的注册 在KVM初始化kvm_init()中会通过函数km_memory_listener_regiter()注册KVM所对应的memory listener&#xff0c;其中设置KVM region_add回调&#xff0c;KVM region_del回调以及KVM log_start/log_stop的回调。 2 region_add回调 当添加内存区域时&…

Wireshark抓到的H264帧

H264文件解析 NALU size, NALU start code size, NALU type 0, 0 0 UNSPECIFIED NALU size, NALU start code size, NALU type 26, 4 7 SPS NALU size, NALU start code size, NALU type 4, 4 8 PPS NALU size, NALU start code…

浅谈数据孤岛和数据分析的发展

大数据时代&#xff0c;企业对数据的重视力度逐步增强&#xff0c;数据分析、数据治理、数据管理、数据资产&#xff0c;已经被人们熟知&#xff0c;在数据的统计汇总和挖掘分析下&#xff0c;管理者的决策有了强有力的支撑和依据&#xff0c;同时也产生了新的问题&#xff0c;…

CSS 奇技淫巧Box-shadow实现圆环进度条

CSS 奇技淫巧Box-shadow实现圆环进度条 文章目录CSS 奇技淫巧Box-shadow实现圆环进度条一、Box-shadow圆环进度条二、效果预览三、原理刨析四、实际应用五、总结六、参考资料&#x1f498;七、推荐博文&#x1f357;一、Box-shadow圆环进度条 实现圆环进度条的方法用很多种&am…

figma和sketch应该选择哪个?

设计行业的工具层出不穷&#xff0c;在我看来sketch它在一定程度上被颠覆了PS&#xff0c;如今sketch已经成为许多设计团队的设计工具。 那么Figma相对于Sketch自身优势是什么&#xff1f;有什么不便&#xff1f;让我们从几个方面来了解。 两个软件都很适合创建UI和组件库。Sk…

图形查看器丨IrfanView功能简介

IrfanView 是一款快速、紧凑和创新的图形查看器&#xff0c;适用于Windows XP、Vista、7、8、10和11。 IrfanView寻求创建独特、新颖和有趣的功能&#xff0c;与其他一些图形查看器不同&#xff0c;它们的全部“创造力”是基于功能克隆、窃取想法和来自ACDSee和/或IrfanView的整…

mac vscode安装dart

1.安装Dart 1.安装下载Dart的工具 官网&#xff1a;https://brew.sh/ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"如果遇到 zsh: command not found: brew /bin/zsh -c "$(curl -fsSL https://gite…

Vue.js

文章目录1、vue核心基础1.1、安装1.2、Hello Vue1.3、模板语法1.4、数据绑定1.5、el与data的两种写法1.6、理解MVVM模型1.7、Object.defineProperty方法1.8、数据代理1.9、事件处理2.0、事件修饰符2.1、键盘事件2.2、计算属性2.3、监视属性2.4、绑定样式2.5、条件渲染2.6、列表…

《计算机网络》——第五章知识点

可靠 保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。 确认重传不分家&#xff0c;TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。 流量控制:让发送方慢点&#xff0c;要让接收方来得及接收。 TCP利用滑动窗口机制实现流量控制。 …

PCB电磁兼容设计1

PCB电磁兼容设计 20221229 关键元件 无源器件 模拟、逻辑器件 磁性元件 开关元件 连接器元件 多数情况&#xff0c;电路基本元件满足EMC程度将决定设备满足EMC的程度。 实际元件不是“理想”的&#xff0c;本身可能是干扰源或敏感设备。 选择合适的电子元件的主要准则包…

try/catch捕获不到的异常

try/catch捕获不到的异常捕获不到的异常这种情况finally块会执行吗&#xff1f;spring中的Transactional事务还会会滚吗&#xff1f;该如何捕获这种异常&#xff1f;Throwable可以看做是异常世界中的Object&#xff0c;在Java中所有异常都有一个共同的祖先&#xff1a;Throwabl…

Python 并行加速技巧分享

文章目录一、 使用joblib进行并行计算二、使用Parallel与delayed进行并行加速一、 使用joblib进行并行计算 作为一个被广泛使用的第三方Python库&#xff08;譬如scikit-learn项框架中就大量使用joblib进行众多机器学习算法的并行加速&#xff09;&#xff0c;我们可以使用pip…

【十天成为红帽工程师】第八天 学习编写playbook

目录 一、playbook编写要素 二、playbook编写前的准备 三、实验要求操作 一、playbook编写要素 &#xff08;一&#xff09;playbook位置可这样写&#xff1a;/ansible/chap1/play1.yml 文件后缀为.yml&#xff0c;以yaml格式编写的文本文件 文档开头标记--- 文档结束标…

加解密与HTTPS(2)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 近些天由于完全放开&#xff0c;我也从“杨过”变成了“杨康”&#xff0c;加之家中亲人故去&#xff0c;所以长久未能更新&#xff0c;特此致歉&#xff5e; 上…

利用python实现热力学地图(保姆式讲解)

一、首先展示最终的效果 对二手房房源的分析,将分析后的结果用热力图显示: 显示效果如下所示&#xff1a; heatMap参考代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <!DOCTYPE html> <head><meta http-equiv&q…

一起看跨年烟花(流行背景音乐+雪花)---- 系列

2023年快要到来啦&#xff0c;很高兴这次我们又能一起度过~ 目录 一、前言 二、跨年烟花 三、效果展示 四、详细介绍 五、编码实现 index.html js 六、获取代码 需要源码&#xff0c;可以私信我(⊙o⊙)&#xff1f;关注我&#xff1f; 一、前言 时光荏苒&#xff0c;白…