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

文章目录

    • 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


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

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

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

相关文章

思科实验 EIGRP

1.1.1 实验目的 通过对 CCNA 课程中的 EIGRP 实验部分进行回顾&#xff0c;从而更加准确掌握 EIGRP 路由协议的 配置方法&#xff0c;以及对 network 命令的正确理解。并且学会对 EIGRP 路由协议查看排错的相关命 令。 1.1.2 实验拓扑 拓扑说明&#xff1a;本实验由两台思科路…

第七章 法律行为与法律意识

目录 第一节 法律行为 一、 法律行为的含义与特征二、 法律行为的结构 &#xff08;一&#xff09;法律行为的内在方面 动机目的认知能力 &#xff08;二&#xff09;法律行为的外在方面 行动&#xff08;行为&#xff09;手段结果 三、法律行为的分类 第二节 法律意识 一、法…

Qt Quick - PageIndicator

Q 理论使用总结 一、概述二、简单使用例子1. SwipeView 和 PageIndicator2. StackLayout 和 PageIndicator 三、常用属性四、定制化 一、概述 PageIndicator用于指示含有多个页面的容器中&#xff0c;当前处理活动的页。记住&#xff0c;这个只是指示当前的活动页&#xff0c;…

4个Python库来美化你的Matplotlib图表

Matplotlib是一个被广泛使用的Python数据可视化库&#xff0c;相信很多人都使用过。 但是有时候总会觉得&#xff0c;Matplotlib做出来的图表不是很好看、不美观。 今天就给大家分享四个美化Matplotlib图表的Python库&#xff0c;它们可以轻松让你的Matplotlib图表变得好看&…

【进阶C语言】有关动态内存管理的经典笔试题(详细图文讲解)

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于C语言进阶系列&#xff0c;本专栏主要内容为数据的存储、指针的进阶、字符串和内存函数…

ActiveMQ使用

一、什么是消息中间件 消息中间件顾名思义实现的就是在两个系统或两个客户端之间进行消息传送 二、什么是ActiveMQ ActiveMQ是一种开源的基于JMS&#xff08;Java Message Servie&#xff09;规范的一种消息中间件的实现&#xff0c;ActiveMQ的设计目标是提供标准的&#xff0c…

4.23、TCP状态转换(为什么四次挥手)

4.23、TCP状态转换 1.TCP状态转换图2.为什么需要四次挥手&#xff0c;状态转换 1.TCP状态转换图 2.为什么需要四次挥手&#xff0c;状态转换 2MSL&#xff08;Maximum Segment Lifetime&#xff09; 主动断开连接的一方, 最后进入一个 TIME_WAIT状态, 这个状态会持续: 2msl ms…

ABAP:自定义搜索帮助:可参考标准函数F4IF_SHLP_EXIT_EXAMPLE

当我们在自定义选择屏幕中&#xff0c; 需要写入我们自定义的搜索帮助的时候&#xff0c;可以通过预定义函数来实现&#xff1a; 实例说明&#xff1a; 第一步&#xff1a;创建搜索帮助SE11分销渠道(Z_VTWEG) 1.选择基本索引帮助&#xff1a; 2.选择参考表&#xff0c;因为这…

今天面了个腾讯拿 38K 出来的,让我见识到了基础的天花板

今天上班开早会就是新人见面仪式&#xff0c;听说来了个很厉害的大佬&#xff0c;年纪还不大&#xff0c;是上家公司离职过来的&#xff0c;薪资已经达到中高等水平&#xff0c;很多人都好奇不已&#xff0c;能拿到这个薪资应该人不简单&#xff0c;果然&#xff0c;自我介绍的…

【数据结构】堆的应用(堆排序的实现 + (向上/向下)建堆时间复杂度证明 + TopK问题(笔记总结))

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;数据结构 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&…

Android---性能优化之图片压缩

质量压缩 质量压缩会用到 Bitmap.compress()。 public boolean compress(Bitmap.CompressFormat format, int quality, OutputStream stream); 这个方法有三个参数&#xff1a; Bitmap.CompressFormat format&#xff1a;图像的压缩格式&#xff08;jpeg ,png, webp&#xf…

PS封装格式:GB28181协议RTP传输

在安防行业&#xff0c;有个协议是无论如何都要适配的&#xff0c;因为公安监控网络用的就是它&#xff0c;它就是&#xff1a;GB28181。而这份协议主要由海康制定&#xff0c;所以除了海康其他厂商想要适配都会少许有点儿麻烦。 1. GB28181要求的RTP流格式     首先&…

C++ 类之间的纵向关系-继承

目录 继承的基本概念 定义 使用方法 内存空间 继承下构造析构执行的顺序 构造函数 析构函数 继承的优点 继承方式 public protected private 隐藏 回顾函数重载 隐藏 父类指针指向子类对象 优点 出现的问题 类成员函数指针 普通的函数指针 类成员函数指针 类…

RK3568平台开发系列讲解(调试篇)debugfs 分析手段

🚀返回专栏总目录 文章目录 一、enable debugfs二、debugfs API三、使用示例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Linux 上有一些典型的问题分析手段,从这些基本的分析方法入手,你可以一步步判断出问题根因。这些分析手段,可以简单地归纳为下图: 从这…

6、索引的数据结构

3.3 常见的索引概念 索引按照物理实现方式&#xff0c;索引可以分为 2 种&#xff1a;聚簇和非聚簇索引 1、聚簇索引 5、索引的代价 空间上的代价 每建立一个索引都要为它建立一棵B树&#xff0c;每一棵B树的每一个节点都是一个数据页&#xff0c;一个页默认会占用 16KB 的存…

(排序11)排序的时间复杂度,空间复杂度,稳定性总结

图片总结 内排序时间复杂度总结 内部排序&#xff1a;数据元素全部放在内存中的排序。. 在内排序当中比较快的有希尔排序&#xff0c;堆排序&#xff0c;快速排序&#xff0c;归并排序&#xff0c;这四个排序的时间复杂度都是O(n*logn)。其中希尔排序的时间复杂度更加准确的来…

62. 不同路径

一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&#xff1f; 示例 1…

微电网两阶段鲁棒优化经济调度方法(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【网络编程】TCP

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; 目 录 &#x1f52e;一. TCP流套接字编程&#x1f4bf;二. TCP中的长短连接&#x1f4c0;三. 写一个 TCP 版本的 回显服务器-客户端 &#x1f52e;一. TCP流套接字编程 ServerSock…

网络视频监控如何入门?如何安装和配置、设备选择和实时监控?

网络视频监控是一种先进的安全技术&#xff0c;它可以通过互联网连接到远程视频服务器&#xff0c;使用户可以随时随地监控所关注的地点。本文将介绍网络视频监控的基础入门知识&#xff0c;包括安装和配置、设备选择和实时监控等方面。 一、安装和配置 在进行网络视频监控前&…