Linux实验记录:使用PXE+Kickstart无人值守安装服务

前言:

本文是一篇关于Linux系统初学者的实验记录。

参考书籍:《Linux就该这么学》

实验环境:

VmwareWorkStation 17——虚拟机软件

RedHatEnterpriseLinux[RHEL]8——红帽操作系统

备注:

  实际生产中安装操作系统的工作,如果使用光盘镜像来安装操作系统,效率会相当低下。通过无人值守安装服务的PXE + Kickstart服务程序,搭建出一套可批量安装Linux系统的无人值守安装系统。

需手动安装部署:PXE+TFTP+FTP+DHCP+Kickstart等程序服务

正文:

   PXE(Preboot eXecute Environment,预启动执行环境)是由Intel公司开发的技术,能够让计算机通过网络来启动操作系统(网卡需支持PXE技术),主要用于在无人值守安装系统中引导客户端主机安装Linux操作系统。

Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手动填写的参数保存成一个ks.cfg文件,当安装过程中需要填写参数时则自动匹配Kickstart生成的文件。

所以只要Kickstart文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。

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

(也可以使用httpd来代替vsftpd服务程序)

实验准备:

服务名称主要作用
dhcpd分配网卡信息及指引获取驱动文件
tftp-server提供驱动及引导文件的传输
SYSLinux提供驱动及引导文件
vsftpd提供完整系统镜像的传输
Kickstart提供安装过程中选项的问答设置

配置DHCP服务程序:

  DHCP服务程序用于为客户端主机分配可用的IP地址,而且这是服务器与客户端主机进行文件传输的基础,因此要先行配置DHCP服务程序。

主机名称操作系统IP地址
无人值守系统RHEL 8192.168.10.10
客户端未安装操作系统-

iptables -F
systemctl stop firewalld
dnf install -y dhcp-server

这里配置文件使用的配置与一般配置的区别:

允许了BOOTP引导程序协议,旨在让局域网内暂时没有操作系统的主机也能获取静态IP地址;

在配置文件的最下面加载了引导驱动文件 pxelinux.0

其目的是让客户端主机获取到IP地址后主动获取引导驱动文件。

allow booting;
allow bootp;
ddns-update-style none;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
        option subnet-mask                      255.255.255.0;
        option domain-name-servers              192.168.10.10;
        range dynamic-bootp 192.168.10.100      192.168.10.200;
        default-lease-time                      21600;
        max-lease-time                          43200;
        next-server                             192.168.10.10;
        filename                                "pxelinux.0";
}

这一步如果出错,说明没有正确配置IP地址。

查看并确认服务状态:

systemctl status dhcpd

 配置TFTP服务程序:

vsftpd允许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证。

但是当前客户机还没有安装操作系统,如何进行登录认证?

TFTP作为一种基于UDP协议的简单文件传输协议,为客户端主机提供引导及驱动文件。

当客户端主机有了基本的驱动程序之后,再通过vsftpd服务将完整的光盘镜像文件传输过去。

dnf install -y tftp-server xinetd

TFPT是一种非常精简的文件传输服务程序,它的运行和关闭是由xinetd网络守护进程服务来管理的。xinetd服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来相应用户的请求。需要开启TFTP服务程序时,只需在xinetd服务程序的配置文件中把disable参数改成no就可以了。如果配置文件不存在,需手动创建。

vim /etc/xinetd.d/tftp
service tftp
{
        socket_sype     = dgram
        protocl         = udp
        wait            = yes
        user            = root
        server          = /usr/sbin/in.tftpd
        server_args     = -s /var/lib/tftpboot
        disable         = no
        per_source      = 11
        cpd             = 100 2
        flags           = IPv4
        
}       
 

配置SYSLinux服务程序:

SYSLinux是一个用于提供引导加载的服务程序。与其说SYSLInux是一个服务程序,不如说是一个包含了很多引导文件的文件夹。在安装好SYSLinux服务程序后。

/usr/share/syslinux目录中会出现很多引导文件。

dnf install -y syslinux

首先,需要把SYSLinux提供的引导文件(pxelinux.0)复制到TFTP服务程序的默认目录中,这样客户端主机就能够顺利地获取到引导文件了。另外在RHEL 8系统光盘镜像中也有一些需要调取的引导文件。

确认光盘镜像已经被挂载到/media/cdrom后,使用复制命令将光盘镜像中自带的一些引导文件也复制到TFTP服务程序的默认目录中。

cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /media/cdrom/images/pxeboot/* .
cp /media/cdrom/isolinux/* .

(.)表示当前工作目录。上述cp命令表示将文件复制到当前工作目录(/var/lib/tftpboot)中 

 

 在TFTP服务程序的目录中新建pxelinux.cfg目录。

将系统光盘中的开机选项菜单复制到该目录中,并命名为default。

mkdir pxelinux.cfg
cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default

默认的开机菜单中有三个选项:安装系统、对安装介质进行检验、排错模式。

编辑default文件,帮助客户端自动选择。

line1:default ——linux

line 64 + :ftp://192.168.10.10 ks=ftp://192.168.10.10/pub/ks.cfg quiet

 

 配置vsftpd服务程序

dnf install -y vsftpd
vim /etc/vsftpd/vsftpd.conf

systemctl restart vsftpd
systemctl enable vsftpd
cp -r /media/cdrom/* /var/ftp
setsebool -P ftdp_connect_all_unreserved=on

创建Kickstart应答文件

  Kickstart不是一个服务程序,而是一个应答文件。

Kickstart应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取这个应答文件的内容,从而彻底实现无人值守安装系统。

在root管理员的家目录中有一个名为:anaconda-ks.cfg的文件,就是应答文件。

cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg

line1-10:表示安装硬盘的名称为sda及使用LVM技术。

line 8:软件仓库,改为由FTP服务器提供的网络途径

line 10:由CDROM改为网络安装源:

line 11-20:keyboard参数为硬盘类型,一般不需修改

line 17:网卡信息一定要处于DHCP模式

line 21-30:timezone参数定义了系统默认时区为“上海”。

line:31-44:表示要安装的软件来源。

graphical-server-environment即带有图形化界面的服务器环境,对应安装界面中的Server With GUI选项

vim /var/ftp/pub/ks.cfg
#version=RHEL8
ignoredisk --only-use=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
# Use graphical install
graphical
repo --name="AppStream" --baseurl=ftp://192.168.10.10/AppStream
# Use CDROM installation media
url --url=ftp://192.168.10.10/BaseOS
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --device=ens160 --onboot=on --ipv6=auto --activate
network  --hostname=linuxprobe.com
# Root password
rootpw --iscrypted $6$EzIFyouUyBvWRIXv$y3bW3JZ2vD4c8bwVyKt7J90gyjULALTMLrnZZmvVujA75EpCCn50rlYm64MHAInbMAXAgn2Bmlgou/pYjUZzL1
# X Window System configuration information
xconfig  --startxonboot
# Run the Setup Agent on first boot
firstboot --enable
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
user --name=linuxprobe --password=$6$a5fEjghDXGPvEoQc$HQqzvBlGVyhsJjgKFDTpiCEavS.inAwNTLZm/I5R5ALLKaMdtxZoKgb4/EaDyiPSSNNHGqrEkRnfJWap56m./. --iscrypted --gecos="linuxprobe"

%packages
@^graphical-server-environment

%end

%addon com_redhat_kdump --disable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

自动部署客户机:

  采用下面步骤建立虚拟主机时,一定要把客户端的网络模式设定成与服务端一致的“仅主机模式”
Step1:

  新建虚拟机向导——自定义——下一步——Workstation16.x

Step2:

  稍后安装操作系统——下一步

Step3:

  客户操作系统设置为Linux,版本“Red Hat Enterprise Linux 8 64”——下一步

Step4:

  对虚拟机进行命名并设置安装位置

Step5:

  设置虚拟主机的网络连接类型为“使用仅主机模式网络”,随后的SCSI控制器类型选择默认的LSI Logic 

Step6:

  设置硬盘类型并指定容量。设置“虚拟磁盘类型”为SCSI或SATA。

Step7:

  结束“新建虚拟机向导程序”后,找到自定义硬件,把网络适配器也设置为“仅主机模式”。

  现在,PXE + Kickstart 无人值守安装系统与虚拟主机都准备好了。

在生产环境中,只需将配置妥当的服务器上架,联通服务器和客户端主机之间的网线,然后启动客户端主机即可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记:利用词对比注意增强预训练汉字表征

整理了 ACL2020短文 Enhancing Pre-trained Chinese Character Representation with Word-aligned Att)论文的阅读笔记 背景模型实验 论文地址:论文 背景 近年来,以 BERT 为代表的预训练模型在 NLP 领域取得取得了非常显著的效果。但是&…

谈谈对BFC的理解

文章目录 一、是什么二、触发条件三、应用场景防止margin重叠(塌陷)清除内部浮动自适应多栏布局小结 参考文献 一、是什么 我们在页面布局的时候,经常出现以下情况: 这个元素高度怎么没了?这两栏布局怎么没法自适应&…

28-k8s集群中-StatefulSets控制器(进阶知识)

一、statefullsets控制器概述 1,举例 假如,我们有一个deployment资源,创建了3个nginx的副本,对于nginx来讲,它是不区分启动或者关闭的先后顺序的,也就是“没有特殊状态”的一个服务,也成“无状…

一次有趣的nginx Tcp4层代理转发的试验

nginx主配置文件添加配置: stream {log_format proxy $remote_addr [$time_local] $protocol status:$status bytes_sent:$bytes_sent bytes_received:$bytes_received $session_time upstream_addr:"$upstream_addr" "$upstream_bytes_sent" …

React18源码: React调度中的3种优先级类型和Lane的位运算

优先级类型 React内部对于优先级的管理,贯穿运作流程的4个阶段(从输入到输出),根据其功能的不同,可以分为3种类型: 1 )fiber优先级(LanePriority) 位于 react-reconciler包,也就是L…

基于Java SSM框架实现网络作业提交与批改系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现网络作业提交与批改系统演示 摘要 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的网络作业提交与批改系统,会使网络作业提交与批改系统工作系统化…

JavaScript字符串的常用方法(非常详细)

文章目录 一、操作方法增concat 删改trim()、trimLeft()、trimRight()repeat()padEnd() toLowerCase()、 toUpperCase()查charAt()indexOf()startWith()、includes() 二、转换方法split 三、模板匹配方法match()search()replace() 一、操作方法 我们也可将字符串常用的操作方法…

c编译器学习07:minilisp编译器改造(debug模式支持调试)

问题 原版的minilisp编译器不支持argv输入测试,不方便单步调试。 代码改造目标是既不改变原有程序的各种功能, 又能支持个人习惯的vs单步debug模式。 CMakeLists.txt变更 定义DEBUG宏 解决单步调试源码定位偏差问题 cmake_minimum_required(VERSION …

Puppeteer 使用实战:如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客(二)

文章目录 上一篇效果演示Puppeteer 修改浏览器的默认下载位置控制并发数错误重试并发控制 错误重试源码 上一篇 Puppeteer 使用实战:如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客(一) 效果演示 上一篇实现了一些基本功能,…

8.qt5使用opencv的库函数打开图片

1.配置opencv动态库的环境变量 2.在创建的qt工程中加入如下opencv代码,具体代码如下: 使用opencv库函数显示图片

Mamba详细介绍和RNN、Transformer的架构可视化对比

Transformer体系结构已经成为大型语言模型(llm)成功的主要组成部分。为了进一步改进llm,人们正在研发可能优于Transformer体系结构的新体系结构。其中一种方法是Mamba(一种状态空间模型)。 Mamba: Linear-Time Sequence Modeling with Select…

JVM面试题(1)

1.说一下jvm的主要组成部分,以及作用 类加载器(ClassLoader):将java代码转换成字节码 运行时数据区(Runtime Data Area):将字节码加载到内存中 执行引擎(Execution Engine&#x…

【Flink数据传输(一)】NetworkStack架构概述:实现tm之间的数据交换

文章目录 1. NetworkStack整体架构2. StreamTask内数据流转过程 NetworkStack提供了高效的网络I/O和反压控制 除了各个组件之间进行RPC通信之外,在Flink集群中TaskManager和TaskManager节点之间也会发生数据交换,尤其当用户提交的作业涉及Task实例运行在…

个人博客系列-环境配置-gitee(2)

注册gitee账户 地址:https://gitee.com/ 此步骤省略 新建仓库 执行以下命令 即可 拉取代码 创建目录 mkdir myCode && cd myCode 登录gitee找到项目,点击克隆,拉取代码 连接远程仓库命令 git remote add origin 仓库地址http…

PCIe 5.0 Layout Guide笔记

一、松耦合和紧耦合 松耦合优点是相同走线宽度下电介质更薄,同时对线间距的变化不敏感,提供了更好的阻抗控制;松耦合缺点是需要更大的区域进行绕线;紧耦合优点是更高的布线密度,相同阻抗下走线可以更细,同时具有更好的共模噪声抑制;紧耦合缺点是阻抗随线间距的变化大;【…

单片机02_寄存器_GPIO设置__点灯

芯片概述 C51:0口、1口、2口、3口,P00~p07、P10~P17、P20~P27、P30~P37 STM32:A口、B口、C口、D口,PA0~PA15/PA5 GPIOA.5 STM32F407ZGT6有7组GPIO端口,分别是:A B C D E F G,每组均有16个GPIO端…

Linux Android USB gadget(从设备驱动)

Linux Android USB gadget 一:Linux usb gadget 与 Android Composite Gadget二:原生方式和Android方式如何配置函数调用逻辑内核配置原生驱动android驱动三:mass_storage配置虚拟化U盘四:遍历usb设备五:adb usb判断usb设备为adb获取adb配置信息adb设备序列号发送与接收《Linux…

vue中使用echarts绘制双Y轴图表时,刻度没有对齐的两种解决方法

文章目录 1、原因2、思路3、解决方法3.1、使用alignTicks解决3.2、结合min和max属性去配置interval属性1、首先固定两边的分隔的段数。2、结合min和max属性去配置interval。 1、原因 刻度在显示时,分割段数不一样,导致左右的刻度线不一致,不…

解决Maven爆红以及解决 Idea 卡在 Resolving问题

关于 Idea 卡在 Resolving(前提是Maven的setting.xml中配置好了阿里云和仓库) 参考文章https://blog.csdn.net/jiangyu1013/article/details/95042611 解决Maven爆红参考文章https://devpress.csdn.net/beijing/656d993b76f0791b6eca7bb0.html?dp_toke…

可在线免费使用的5款ChatGPT平替网站!

可在线免费使用的5款ChatGPT平替网站! 渗透智能 ShirtAI 是一款全方位AI产品,集成问答绘画导图等功能!支持联网功能、 支持上下文对话、支持模糊匹配自定义回复消息、 支持注册配置自定义赠送额度、支持生成专属邀请码邀请用户双方共同获得额度。 https…