PXE-kickstart无人值守安装操作系统

PXE的概念:

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于C/S的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动的过程中,终端要求服务器分配IP地址,再用TFTP或者MTFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件的设置,从而引导预先安装在服务器中的终端操作系统。

严格来说,PXE并不是一种安装方式,而是一种引导方式。进行PXE安装的必要条件是在要安装的计算机中必须包含一个PXE支持的网卡(NIC),即网卡中必须要有PXE Client。PXE协议可以通使计算机通过网络启动。此协议分为Client端和Server端,而PXE Client则在网卡的ROM中。当计算机引导时,BIOS把PXE Client调入内存中执行,然后由PXE Client将放置在远端的文件通过网络下载到本地运行。运行PXE协议需要设置DHCP服务器和TFTP服务器。DHCP服务器会给PXE Client分配一个IP地址,由于是给PXE Client分配IP地址,所以在配置DHCP服务器时需要增加相应的PXE设置。此外,在PXE Client的ROM中,已经存在了TFTP Client,那么它就可以通过TFTP协议到TFTP Server上下载所需要的文件了。

PXE的工作流程:

1、PXE Client从自己的PXE网卡启动,向本网络的DHCP服务器索取IP;

2、DHCP服务器返回分配给客户端IP以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上。)

3、PXE Client向本网络中的TFTP服务器索取pxelinux.0文件。

4、PXE Client取得pxelinux.0文件后执行该文件。

5、根据pxelinux.0的执行结果,通过TFTP服务器加载内核和文件系统。

6、进入安装画面,此时可以通过选择HTTP、FTP和NFS方式之一进行安装。

什么是Kickstart

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg文件。如果在安装的过程中出现要填写的数据的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取得ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序就根据ks.cfg的设置重启系统,并结束安装。

PXE+Kickstart无人值守安装操作系统完整过程如下:

 PXE Client 开机启动->DHCP(pxelinux.0; next-server: tftp-server)

TFTP:

syslinux: 引导linux启动的安装程序

vmlinuz:内核的启动镜像

initrd.img:加载系统时的驱动程序

ks.cfg:  kickstart配置文件

系统环境:

1、关闭防火墙和SELinux:

systemctl stop firewalld
systemctl disable firewalld

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

2、环境准备:

需要配置双网卡,一个作用是dhcp,一个使用网络源安装环境包。

dhcp自动分配IP的网卡得是net1仅主机模式。

然后我们检查网卡信息:

cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens36

[root@vm1 network-scripts]# cat ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.182.100
NETMASK=255.255.255.0
DNS1=114.114.114.114

说明:

1)特别要注意的一点是不要配置GATEWAY,网络配置文件,在一台服务器上只能有一个网络接口的配置文件有GATEWAY,如果有多个,网络就无法访问外网。

2)UUID要删除,不然相同的UUID会发生冲突;

3)当然,配置文件中的NAME和DEVICE的名称都是要进行修改的。

在改之前,我们需要查看一下net1网卡得网段。

 说明:“在使用本地DHCP服务器IP地址分配给虚拟机”这项不要勾选。

配置完后,重新启动网卡。

systemctl restart network

3、安装和配置DHCP服务器:

yum install -y dhcp

然后进入到主配置文件:

cat /etc/dhcp/dhcpd.conf

根据文件里的信息,我们可以复制一个模板文件。

cp -p /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcp.conf

-p:  连带文件属性一起拷贝

然后我们编辑dhcpd.conf主配置文件。

说明:禁止动态更新。

 说明:

range:地址池

option routers:网关

dns:dns地址

next-server:  指定tftp服务器地址

filename:指定pxe引导程序的文件名

配置完毕,重新启动dhcp服务,并设置开机自启动。

systemctl start dhcp
systemctl enable dhcp

 另外,我们也可以参考下这段配置:

4、安装和配置TFTP服务程序:

tftp是一个小而且容易实现的文件传输协议,tftp是基于UDP数据报,需要有自己的差错纠正机制。

tftp只支持文件传输,不支持交互,没有庞大的命令集。安全性低,不支持身份验证。

yum install -y tftp-server xinetd

tftp的运行和关闭是由xinet网络守护进程服务来管理的。xinet服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来相应用户的请求。

vim /etc/xinetd.d/tftp

 说明:需要将disable的yes改成no。表示开启tftp服务。

另外,我们也要注意下目录:/var/lib/tftpboot。指定tftp的根目录(引导文件的存储路径)-c是允许上传。

然后是挂载镜像文件:

[root@vm1 mnt]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@vm1 mnt]#
[root@vm1 mnt]#
[root@vm1 mnt]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        900M     0  900M   0% /dev
tmpfs           910M     0  910M   0% /dev/shm
tmpfs           910M  9.7M  900M   2% /run
tmpfs           910M     0  910M   0% /sys/fs/cgroup
/dev/sda5        16G  4.9G   11G  32% /
/dev/sda2       497M  254M  243M  52% /boot
tmpfs           182M     0  182M   0% /run/user/0
/dev/sr0        973M  973M     0 100% /mnt
[root@vm1 mnt]#

然后进入到内核文件,将内核初始化镜像文件复制到/var/lib/tftpboot

cd /mnt/images/pxeboot
cp initrd.img vmlinuz /var/lib/tftpboot # 复制内核初始化文件

vmlinuz:是可引导的,压缩的内核

initrd.img : 系统初始化文件

systemctl restart xinetd
systemctl enable xinetd
systemctl start tftp
systemctl enable tftp

以上就是为了将镜像中的内核文件+系统的初始化文件,丢到tftp的默认共享目录中,以便客户端来下载使用。   

准备PXE引导镜像文件pxelinux.0

SYSLinux是一个用于 提供引导加载的服务程序。不如说它是一个包含了很多引导文件的文件夹。

yum install -y syslinux
yum provides /pxelinux.0

yum install -y syslinux

rpm -ql syslinux | grep pxelinux.0

查找pxe引导程序的位置。

然后拷贝系统引导文件pxelinux.0到tftp的根目录下面。

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

注,只有安装了syslinux软件包,才会有/usr/share/syslinux/目录及目录中的文

然后在tftp服务程序的目录中新建pxelinux.cfg目录。虽然这个目录的名字带有后缀,但是依然是个目录,不是文件。将系统光盘中的开机选项菜单复制到该目中,并命名为default。这个default文件就是开机时的选项菜单。

mkdir pexlinux.cfg
cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default

然后我们编辑这个default文件:

说明:只要修改者两个地方。

1)default linux是选择下面label linux的这个位置。

2)prompt 0,表示没有不等待用户控制,1表示等待用户控制,设置是否等待用户选择。如果按回车则选择linux模式。

安装ftp服务,准备centos安装源:

yum install -y vsftpd
mount /dev/cdrom /mnt

cp -r /mnt/* /var/ftp

 然后再开启ftp服务:

systemctl start vsftpd
systemctl enable vsftpd

下面是配置kickstart无人值守安装:

yum install -y system-config-kickstart

然后打开这个软件:

 我这边也没使用这个工具来生成ks.cfg文件。

我是直接从网上找到一个centos7最小化安装的ks.cfg文件。

内容如下:

[root@vm1 pub]# cat ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --plaintext 123456
# System language
lang en_US
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled


# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="ftp://192.168.182.100"
# System bootloader configuration
bootloader --append="net.ifnames=0" --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part biosboot --fstype="biosboot" --ondisk=sda --size=2
part swap --fstype="swap" --ondisk=sda --size=4096
part /boot --fstype="xfs" --ondisk=sda --size=500
part / --fstype="xfs" --ondisk=sda --size=15880


%packages
@^minimal
@core
kexec-tools

%end

%addon com_redhat_kdump --enable --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

注意这个文件是放到/var/ftp/pub中。

然后我们再看下这个default文件里的内容:

那我们知道这个pub路径的由来了吧。

那到这里就配置完成了。

然后我们在vmware中新创建一台机器,然后就可以实现自动安装。

操作步骤,可以参考《linuxprobe.pdf》这本书。

我们看到其中的IP是182.151。确实是地址池中的一个IP地址。

另外,这台机器还不能上网。因为我们使用的是仅主机模式。

我们可以试着解决下上网的问题。

另外,我们还可以在ks.cfg文件中增加一些需要预先安装软件的事情,另外还有解决ssh的问题。

这些都可以解决的。

我们还要注意ks.cfg等文件的权限。切记!

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

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

相关文章

QT网络编程之TCP

QT网络编程之TCP TCP 编程需要用到俩个类: QTcpServer 和 QTcpSocket。 #------------------------------------------------- # # Project created by QtCreator 2023-08-

生产执行MES系统:提升企业灵活性和响应速度的关键利器

在竞争激烈的市场环境下,企业需要不断提高其灵活性和响应速度,以适应快速变化的需求和市场动态。生产执行MES(Manufacturing Execution System)系统作为信息技术的重要应用,为企业提供了强大的工具和平台,能…

【JavaScript】new 的原理以及实现

网道 - new 命令的原理 使用new命令时,它后面的函数依次执行下面的步骤。 创建一个空对象,作为将要返回的对象实例。将这个空对象的原型,指向构造函数的prototype属性。将这个空对象赋值给函数内部的this关键字。如果构造函数返回了一个对象…

开封Geotrust单域名https证书推荐

Geotrust作为全球领先的数字证书颁发机构之一,拥有多年的数字证书颁发经验,其数字证书被广泛应用于电子商务、在线支付、企业通讯、云计算等领域,为用户提供了安全可靠的保障。而Geotrust旗下的单域名https证书是大多数客户创建网站时的选择之…

java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展 tbms

​ 项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以…

vscode关闭绑定元素“xxx”隐式具有“any”类型这类错误

在ts的项目里面,真的经常看到any类型的报错,真的很烦的 所以为了眼不见心不乱,我决定消除这个错误提示 在tsconfig.json里面配置 "noImplicitAny": false 就可以了 {"compilerOptions": {"target": "E…

Unity-Shader-高亮Highlight

常用Shader-高亮,可动态调整高亮颜色、高亮强度范围/等级、高亮闪烁速度、高亮状态 Shader "CustomShader/Highlight" {Properties{_Color("Color", Color) (0.9044118,0.6640914,0.03325041,0)_Albedo("Albedo", 2D) "white…

如何创造千亿项目?合法合规的绿色消费增值积分,或许能冲出赛道

电商行业的竞争越来越激烈,大部分的电商平台都面临着这三大难题:如何吸引用户、如何留存用户以及如何让用户为平台带来更多的效益。为了解决这三大问题,我们提出了创造千亿项目的商业模式——绿色消费增值积分系统,帮助企业冲出赛…

golang内存对齐

为什么要内存对齐? CPU访问内存时,以CPU的位数为单位进行访问。 如果访问未对齐的内存,处理器需要做两次内存访问,对齐的内存的访问可能仅需要一次,利用内存对齐后提升读取速度。 golang结构体内存对齐规则 在代码编译…

SpringBoot05--axios网络请求

浏览器主动发送请求,服务器接收请求之后返回数据,通过vue进行数据绑定 请求成功,返回的数据会包装到response里面去(返回成response的data属性) 好的这边不太懂 在xxx.vue组件被创建和挂载(渲染&#xff09…

解决createRoot is not a function

报错: 出现的原因:在于把react18使用的vite构建,在开发中因react版本太高与其他库不兼容,而在降级的时候,出现以上dom渲染出现报错。 解决:将 src/index.j文件改成如下 import React from react; import…

LVS-DR模式集群构建过程演示

一、工作原理 LVS的工作原理 1.当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 2.PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链 3.IPVS是工作在IN…

工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计em

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff…

初出茅庐的小李博客之认识编码器

编码器是什么: 一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感器,我们可以通过编码器测量到底位移或者速度信息。编码器通常由一个旋转部分和一个固定部分组成,旋转部分随着被测量的物体进行旋转,固定部分则保持不动…

MySql(干货)

写这篇博客的目的不是为了将介绍原理,而是为了Sql中的代码操作属实太多了,在这里进行一个汇总,方便查阅!!! Sql分类 分类全称说明 DDL Data Definintion Language数据定义语言,用来定义数据库对…

wireshark入门指北

文章目录 前言安装Linux上wireshark安装 使用捕获的时候添加过滤条件抓取浏览器https内容 附录抓取非浏览器的https流量 前言 本文长期维护,记录使用wireshark的使用过程。 虽然有官方文档-Wireshark User’s Guide,但是不想去慢慢读。应用层的图形软件…

Flutter:文件上传与下载(下载后预览)

Dio dio是一个强大的Dart Http请求库,提供了丰富的功能和易于使用的API,支持文件上传和下载。 这个就不介绍了,网上有很多的封装案例。 background_downloader 简介 适用于iOS,Android,MacOS,Windows和L…

el-dialog嵌套,修改内层el-dialog样式(自定义样式)

el-dialog嵌套使用时,内层的el-dialog要添加append-to-body属性 给内层的el-dialog添加custom-class属性,添加自定义类名 <el-dialog:visible.sync"dialogVisible"append-to-bodycustom-class"tree-cesium-container"><span>这是一段信息<…

棒球和垒球的区别·棒球联盟

棒球和垒球的区别 1. 定义和起源 棒球起源于19世纪中叶的美国&#xff0c;最初被认为是一种游戏&#xff0c;而并非体育运动。那时&#xff0c;棒球常常被孩子们用来进行休闲娱乐。在20世纪初&#xff0c;它才开始被纳入体育运动的范畴。 垒球则是棒球的近亲&#xff0c;同样…

安装程序指南:FMSoft_uniGUI_Complete_Professional1.9.1567

解压和安装程序指南&#xff1a;FMSoft_uniGUI_Complete_Professional https://t00y.com/dir/1041485-3049764-93c76d?56118062 引言&#xff1a; 在开发软件的过程中&#xff0c;我们经常需要安装各种工具和框架来帮助我们实现项目的目标。本文将为您提供一个详细的指南&…
最新文章