PXE+Kickstart自动化安装操作系统

news2024/11/25 10:27:37

文章目录

    • PXE+Kickstart 完美自动化部署系统
      • 理论知识:
        • 1、PXE
        • 2、DHCP
      • 实践实验:
        • 1、DHCP服务器配置
        • 2、TFTP服务器配置
        • 3、HTTP服务器安装
        • 4、PXE配置
        • 5、Kickstart实践配置

PXE+Kickstart 完美自动化部署系统

理论知识:

无人值守原理:Kickstart通过网络安装系统,会记录安装系统时交互式操作 将其写成一个ks.cfg配置文件 执行安装会读取这个配置文件进行安装。

1、PXE

预启动执行环境(Preboot eXecution Environment,PXE),通过网络接口启动计算机,不依赖于本地存储设备,如:U盘、硬盘、光盘等!

PXE依赖于:IP、UDP、DHCP、TFTP协议

PXE工作过程:

  1. PXE客户端向DHCP服务器发送UDP广播请求索要IP地址
  2. DHCP服务器响应PXE客户端并提供IP地址
  3. PXE客户端请求下载启动文件,包括pxelinux.0、pxelinux.cfg/default、vmliunz、initrd.img 等文件
  4. Boot Server响应PXE客户端,通过TFTP协议下载请求的这些文件
  5. PXE请求自动应答文件ks.cfg
  6. 通过ks.cfg找到OS Server位置后 PXE客户端安装操作系统

2、DHCP

动态主机配置协议(Dynamic Host Configuration Protocol)用于自动获取IP地址、管理IP地址、防止IP冲突。

DHCP工作过程:

实践实验:

服务器初始化操作

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

systemctl stop firewalld --now
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sed -i 's/SELINUX=[e|p].*/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

1、DHCP服务器配置

1、安装DHCP服务

yum -y install dhcp
rpm -q dhcp

2、配置DHCP服务

cat >> /etc/dhcp/dhcpd.conf << EOF

subnet 10.10.14.0 netmask 255.255.255.0 {  # 网段 子网掩码等信息
range 10.10.14.150 10.10.14.200;           # 地址获取范围
option routers 10.10.14.254;               # 网关
option domain-name-servers 1.2.4.8;        # DNS
default-lease-time 21600;                  # 租期过期时间
max-lease-time 43200;                      # 最大租期过期时间
next-server 10.10.14.100;                  # 指定TFTP服务器IP地址
filename "/pxelinux.0";                    # 指定引文文件位置,放在TFTP服务器上面
}

EOF


systemctl start dhcpd

3、验证DHCP

systemctl is-active dhcpd
netstat -anpu|grep 67
systemctl enable dhcpd

2、TFTP服务器配置

1、安装TFTP服务

xinetd是用来管理tftp的,默认路径在 /var/lib/tftpboot 位置

yum -y install tftp-server tftp xinetd
rpm -q tftp-server tftp xinetd

2、编辑配置文件

[root@localhost ~]# cat /etc/xinetd.d/tftp 
service tftp
{
	socket_type		= dgram
	protocol		= udp
	wait			= yes
	user			= root
	server			= /usr/sbin/in.tftpd
	server_args		= -s /var/lib/tftpboot
	disable			= no         # 改为no
	per_source		= 11
	cps			    = 100 2
	flags			= IPv4
}

3、启动xinetd服务

systemctl start xinetd.service 
systemctl is-active xinetd.service
netstat -anput |grep 69

4、测试连接tftp

tftp 10.10.14.100

3、HTTP服务器安装

1、安装Apache服务

yum -y install httpd 
rpm -q httpd

2、修改配置并启动

sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf
systemctl restart httpd

3、创建目录并挂载镜像

mkdir /var/www/html/CentOS-7   # 用于提供iso下载目录

mount CentOS-7-x86_64-DVD-2003.iso /var/www/html/CentOS-7/
df -hT /var/www/html/CentOS-7/
curl -I 10.10.14.100/CentOS-7/

4、PXE配置

syslinux是一个功能强大的引导加载程序,并且兼容各自介质

下载 syslinux就可以获取 pxelinux.0 引导文件

1、下载syslinux

yum -y install syslinux

2、拷贝所需文件 到TFTP目录

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/     # pxelinux.0文件
cp /usr/share/syslinux/reboot.c32 /var/lib/tftpboot/     # 系统自动重启文件
cp /var/www/html/CentOS-7/isolinux/* /var/lib/tftpboot/  # 系统菜单文件


cd /var/lib/tftpboot/
ll

-r--r--r-- 1 root root     2048 Jul 10 18:27 boot.cat
-rw-r--r-- 1 root root       84 Jul 10 18:27 boot.msg
-rw-r--r-- 1 root root      281 Jul 10 18:27 grub.conf
-rw-r--r-- 1 root root 55187100 Jul 10 18:27 initrd.img     # 驱动文件
-rw-r--r-- 1 root root    24576 Jul 10 18:27 isolinux.bin
-rw-r--r-- 1 root root     3032 Jul 10 18:27 isolinux.cfg
-rw-r--r-- 1 root root   190896 Jul 10 18:27 memtest
-rw-r--r-- 1 root root    26759 Jul 10 18:18 pxelinux.0     # 引导启动代码
-rw-r--r-- 1 root root      800 Jul 10 18:26 reboot.c32     # 重启系统文件
-rw-r--r-- 1 root root      186 Jul 10 18:27 splash.png
-r--r--r-- 1 root root     2215 Jul 10 18:27 TRANS.TBL
-rw-r--r-- 1 root root   153104 Jul 10 18:27 vesamenu.c32   # 界面框架 
-rwxr-xr-x 1 root root  6762688 Jul 10 18:27 vmlinuz        # 内核文件

3、创建pxelinux.cfg目录,用于存放安装客户端的配置文件

mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/CentOS-7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
chmod -R 777 /var/lib/tftpboot/

4、自定制PXE配置文件

修改 /var/lib/tftpboot/pxelinux.cfg/default 文件

vim /var/lib/tftpboot/pxelinux.cfg/default

1.修改第一行内容
default linux

2.修改安装寻找镜像位置
label linux
  menu label ^Install CentOS 7
  kernel vmlinuz
 # append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
 append initrd=initrd.img inst.repo=http://10.10.14.100/CentOS-7/ net.ifnames=0 biosdevname=0

net.ifnames=0 biosdevname=0 指定网卡名称为 eth0,不指定则为ens33

5、安装系统

注意:移除不需要的驱动、添加一块网卡,绑定VAN区段,绑定VAN区段的作用是保持和DHCP服务器在同一个网段,内存不得小于2G

可以出现以上页面 说明咱们的PXE没有问题,但是还是需要点点点的进行配置安装系统,PXE不能达到完成的自动化部署,需要怎么解决呢?这个时候就要用到Kickstart了!!!

5、Kickstart实践配置

ks.cfg这个文件是自动化装机文件,作用是,将你系统的选择编写成一个脚本,无需人为干涉,即可自动化安装操作系统。

1、检查环境状态

确保好PXE各个组件状态正常

systemctl status dhcpd
systemctl status xinetd
systemctl status httpd

netstat -anput |grep dhcp       
netstat -anput |grep xinetd

mount CentOS-7-x86_64-DVD-2003.iso /var/www/html/CentOS-7/
curl http://10.10.14.100/CentOS-7/

2、准备ks.cfg配置文件

安装系统后 会生产ks.cfg文件,默认在root家目录,可以进行参考。

mkdir /var/www/html/ks_config
chmod -R 777 /var/www/html/ks_config/
vim /var/www/html/ks_config/ks.cfg

# 直接安装操作系统
install 
# 键盘语言
keyboard --vckeymap=us --xlayouts='us'
# 系统语言
lang en_US.UTF-8
# 网络信息
# network  --bootproto=static --device=ens33 --gateway=10.10.14.154 --ip=10.10.14.100 --netmask=255.255.255.0 --ipv6=auto --activate
# network  --hostname=localhost.localdomain
network --bootproto=dhcp --device=ens33
# root密码 可以通过下面命令获取
# crypt;print(crypt.crypt("qinziteng666"))'
rootpw --iscrypted $6$psgroPSXEa47lGnQ$0L/bvbEYO3UWjzxox5etOveNv3oN3/0Bcb5z/cn4cEcKIL4dmeykc2kFI6LpfK49sMTnzIoZTsh5Bqy.txzac.
auth --enableshadow --passalgo=sha512
# 指定URL安装系统
url --url="http://10.10.14.100/CentOS-7"
# YUM仓库指定
repo --name="Red Hat Enterprise Linux" --baseurl="http://10.10.14.100/CentOS-7" --cost=100
# 安装后关闭chronyd服务
services --disabled="chronyd"
# 时区 上海
timezone Asia/Shanghai --isUtc --nontp
# 重启系统 这个最后生效
reboot

# 系统盘信息
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm

# 自动分区
clearpart --none --initlabel

# 清空分区,重新分区
#zerombr
#clearpart --all --initlabel
# 分区信息 size=MiB
#part /boot --fstype="xfs" --size=500
#part swap --fstype="swap" --size=500
#part / --fstype="xfs" --grow --size=1
# 1 表示剩余所以分区都给根目录

# 安装系统软件包
%packages
@^minimal
@compat-libraries
@core
@development
@security-tools
@smart-card
@system-admin-tools
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

获取加密密码命令:

python -c 'import crypt;print(crypt.crypt("qinziteng666"))'

3、准备新的PXE配置文件

cd /var/lib/tftpboot/pxelinux.cfg/
mv default default_old
vim default

# 使用欢迎界面
default vesamenu.c32
# 超时时间 单位毫秒
timeout 100

# 欢迎词
MENU TITLE Qin zi teng.

# 启动本地设备
label local
  menu label Boot from ^local drive
  localboot 0xffff

# 启动ks配置文件设备
MENU SEPARATOR
label linux
  menu label ^Install Centos7 system for ks.
# 默认为ks
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://10.10.14.100/ks_config/ks.cfg

# 安装基本驱动
MENU SEPARATOR
label vesa
  menu label Install system ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset 
 

4、检验配置正确

curl -I http://10.10.14.100/ks_config/kf.cfg
curl -I 10.10.14.100/CentOS-7/

5、万事俱备 只欠测试

请参考 PXE配置.5安装系统

注意:移除不需要的驱动、添加一块网卡,绑定VAN区段,绑定VAN区段的作用是保持和DHCP服务器在同一个网段,内存不得小于2G


最后安装完成后 测试一下密码是否正确 就可以了

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

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

相关文章

飞行机器人专栏(十一)-- 空中机器人综合健康管理系统

目录 一. 综合健康管理系统架构 1. 系统架构&#xff1a; 2. 故障诊断算法&#xff1a; 3. 预测维护策略&#xff1a; 4. 安全与隐私&#xff1a; 5. 用户友好性&#xff1a; 6. 模块化与可扩展性&#xff1a; 7. 与其他系统集成&#xff1a; 8. 考虑环境因素&#xf…

获取文件内容方法使用说明

一、是什么&#xff1f; sikuli设备新增了一个获取文件内容的方法&#xff0c;该方法可以传入指定路径读取文件内容&#xff0c;方便后续做打印&#xff0c;对比等工作 二、怎么用&#xff1f; 1.文件绝对路径&#xff0c;例如 windows&#xff1a;F:\cn_sonic\sonic-agent…

abbyy finereader15下载安装使用及功能介绍

今天给大家分享一款一款真正的专业OCR&#xff0c;它不仅支持多国文字&#xff0c;还支持彩色文件识别、自动保留原稿插图和排版格式以及后台批处理识别功能&#xff0c;使用者再也不用在扫描软件、OCR、WORD、EXCEL之间换来换去了&#xff0c;处理文件会变的就像打开已经存档的…

RabbitMQ安装教程(Mac)

1、RabbitMQ是采用Erlang语言开发的&#xff0c;所以系统环境必须提供Erlang环境。 brew install rabbitmq前提必须是mac安装了HomeBrew&#xff08;软件包管理系统&#xff09;&#xff0c;以下都是基于mac版本的。 等大概十几分钟 brew services start rabbitmq;RabbitMQWeb…

第09章_性能分析工具的使用

第09章_性能分析工具的使用 ​ 在数据库调优过程中&#xff0c;我们的目标就是响应时间更快&#xff0c;吞吐量更大。利用宏观的监控工具和微观的日志分析可以帮我们快速找到调优思路和方式。 1. 数据库服务器的优化步骤 ​ 当我们遇到数据库调优问题的时候&#xff0c;该如…

Rabbitmq学习笔记教程-尚硅谷

Rabbitmq学习笔记 &#xff08;尚硅谷&#xff09; 尚硅谷 rabbitmq 教程 1.MQ 的概念 1.1 什么是 MQ? 存放消息的队列&#xff0c;互联网架构中常见的一种服务与服务之间通信的方式。 1.2 为什么要用 MQ? 三大好处&#xff0c;削峰&#xff0c;解耦&#xff0c;异步。…

1小时学会CSS - 中

接第一课&#xff0c; 1小时学会CSS - 上&#xff0c;大家还记得前面说的一个概念&#xff0c;CSS 层叠样式吗&#xff1f;很多小伙伴都无法理解。 这里再详细说说&#xff0c;什么是CSS 层叠样式&#xff1f;CSS 层叠样式指的是上级标签的样式会自动继承给其所有的下级标签。…

爬虫日常练习-艾图网多页面图片爬取

文章目录前言页面分析设计代码前言 欢迎回来兄弟们&#xff0c;想必各位都已经过了一遍上篇文章了吧&#xff0c;没过的兄弟们可以移步上篇文章指点一二&#xff0c;链接: 爬虫日常练习-艾图网单页面图片爬取 感谢xdm 昨天的内容想必已经挑起了大家的胃口&#xff0c;我们趁…

自动化测试(一):自动化测试理论

什么是自动化测试&#xff1a; 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常&#xff0c;在设计了测试用例并通过评审之后&#xff0c;由测试人员根据测试用例中描述的规程一步步执行测试&#xff0c;得到实际结果与期望结果的比较。在此过程中&#xf…

【前端之旅】快速上手ElementUI

一名软件工程专业学生的前端之旅,记录自己对三件套(HTML、CSS、JavaScript)、Jquery、Ajax、Axios、Bootstrap、Node.js、Vue、小程序开发(Uniapp)以及各种UI组件库、前端框架的学习。 【前端之旅】Web基础与开发工具 【前端之旅】手把手教你安装VS Code并附上超实用插件…

指针在C++中的应用及顺序表结构体中的应用

目录 一.指针的概要 指针 一级指针 二级指针 二、一个生动形象的例子 三、总结 四、顺序表结构体中的应用 一.指针的概要 指针 是一种数据类型&#xff0c;它保存着一个变量的内存地址。指针可以通过间接引用操作符 * 来访问所指向的变量。在 C 中&#xff0c;指针通常…

【AI绘画】探索艺术与技术的融合:AI绘画的新前景

AI绘画的新前景1.AI绘画是把双刃剑2.AI绘画的应用场景3.AI绘画的技术4.结语随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;AI绘画成为了艺术创作领域中备受关注的话题。传统的艺术创作方式受到了AI技术的冲击&#xff0c;为艺术家和观众带来了全新的体验和…

socket 通信(一)

一 基本示例 #include <stdio.h> #include <sys/socket.h> // socket() #include <arpa/inet.h> // inet_addr() #include <netinet/in.h> // sockaddr_in{} INADDR_ANY #include <unistd.h> // close() #include <errno.h> …

php7类型约束,严格模式

在PHP7之前&#xff0c;函数和类方法不需要声明变量类型 &#xff0c;任何数据都可以被传递和返回&#xff0c;导致几乎大部分的调用操作都要判断返回的数据类型是否合格。 为了解决这个问题&#xff0c;PHP7引入了类型声明。 目前有两类变量可以声明类型&#xff1a; 形参&a…

2023年贵州建筑八大员考试时间报名时间是什么时间呢?甘建二

2023年贵州建筑八大员考试时间报名时间是什么时候开始呢&#xff1f;贵州建筑八大员考试时间是什么时候呢&#xff1f;什么时候考试呢&#xff1f; 建筑八大员主要是用于企业资质、招投标、检查使用&#xff0c;目前很多企业急需这个证书&#xff0c;关于建筑八大员报名时间和考…

网络拥塞控制,对越远的流量越宽容

考虑下面的网络传输场景&#xff1a; ​ S1&#xff0c;S2&#xff0c;S3&#xff0c;S4 向 D 方向发送&#xff0c;R4 发生拥塞。R4 必须丢弃一些数据进行疏导反馈拥塞信号&#xff0c;否则谁也过不去。 优先丢掉离得最近的 S4 的数据&#xff0c;其次依次丢 S3&#xff0c;S2…

051:cesium加载mapbox的多种Style形式地图

第051个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载mapbox的多种Style形式地图,包括dark-v11,streets-v12,navigation-night-v1,outdoors-v12,satellite-v9,satellite-streets-v12,light-v10。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实…

如何让心情保持平静?100多条禅修心法

静的层次和阶段 静首先是不要去争&#xff0c;没有任何争的心&#xff0c;没有任何杂念心。静有几个层次阶段&#xff1a; ⒈. 自己的心情相对于自己平静&#xff0c;是平静的第一个阶段。 ⒉. 第二个平静的阶段是&#xff1a;别人觉得你很静&#xff0c;自己也很静&#xf…

ArduPilot开源飞控系统之简单介绍

ArduPilot开源飞控系统之简单介绍1. 源由2. 了解&阅读2.1 ArduPilot历史2.2 关于GPLv32.3 ArduPilot系统组成2.4 ArduPilot代码结构3. 后续4. 参考资料ArduPilot是一个可信赖的自动驾驶系统&#xff0c;为人们带来便利。为此&#xff0c;提供了一套全面的工具&#xff0c;几…

人人看得懂的AI教程

人人看得懂的AI教程&#xff0c;从0开始入门AI教程&#xff0c;一步一步AI&#xff0c;人工智能学习笔记 现在写书真的方便&#xff0c;闲来无事写了本从0开始学AI的书籍&#xff0c;哈哈 一、基础知识 1.1 人工智能概览 1.2 机器学习 1.3 深度学习 1.4 数据科学 二、编程知…