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

news/2024/10/30 13:25:25/

文章目录

    • 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.reposystemctl 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 << EOFsubnet 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服务器上面
}EOFsystemctl 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		= dgramprotocol		= udpwait			= yesuser			= rootserver			= /usr/sbin/in.tftpdserver_args		= -s /var/lib/tftpbootdisable			= no         # 改为noper_source		= 11cps			    = 100 2flags			= 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/default1.修改第一行内容
default linux2.修改安装寻找镜像位置
label linuxmenu label ^Install CentOS 7kernel vmlinuz# append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quietappend 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 httpdnetstat -anput |grep dhcp       
netstat -anput |grep xinetdmount 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 localmenu label Boot from ^local drivelocalboot 0xffff# 启动ks配置文件设备
MENU SEPARATOR
label linuxmenu label ^Install Centos7 system for ks.
# 默认为ksmenu defaultkernel vmlinuzappend initrd=initrd.img ks=http://10.10.14.100/ks_config/ks.cfg# 安装基本驱动
MENU SEPARATOR
label vesamenu label Install system ^basic video driverkernel vmlinuzappend 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.ppmy.cn/news/47330.html

相关文章

大厂对ChatGPT的开发利用和评估案例收录

ChatGPT已经进入各行各业&#xff0c;但是实际在工作中的有哪些应用呢&#xff1f;这里分享互联网一线大厂分享的一些实际使用案例&#xff0c;所有文章收录到 大厂对ChatGPT的开发利用和评估案例收录http://​www.webhub123.com/#/home/detail?projectHashid67792343&own…

初学SSM时做的-IKUN图书管理系统

项目介绍 项目工具:IntelliJ IDEA 2021.2.2 图书后台管理系统&#xff0c;采用SpringBootMybatiusThymeleaf&#xff0c;页面使用Element框架&#xff0c;使用RESTful API风格编写接口。 数据库使用mysql 已实现功能 基本增删改查,联表查询 拦截器登录验证 项目技术栈 Sp…

外卖小程序10

目录 Apache ECharts介绍入门案例实现步骤代码 总结需求1Service层思路代码实现Controller层ReportController Service层ReportServiceReportServiceImpl Mapper层OrderMapperOrderMapper.xml 需求2Service层思路代码实现Controller层ReportController Service层ReportServiceR…

技术分析内核并发消杀器(KCSAN)一文解决!

一、KCSAN介绍 KCSAN(Kernel Concurrency Sanitizer)是一种动态竞态检测器&#xff0c;它依赖于编译时插装&#xff0c;并使用基于观察点的采样方法来检测竞态&#xff0c;其主要目的是检测数据竞争。 KCSAN是一种检测LKMM(Linux内核内存一致性模型)定义的数据竞争(data race…

电路原理-反激式电路

1、1反激式电路是小功率电源(150W以下)当中&#xff0c;最常用的电路&#xff0c;它的工作原理如下。 1、2如图1&#xff0c;变压器T1&#xff0c;标记红点的端&#xff0c;12、3、A为同名端&#xff0c;10、1、B为异名端。 当MOS管导通的时候&#xff0c;初级绕组N1、…

ROS学习第九节——服务通信

1.基本介绍 服务通信较之于话题通信更简单些&#xff0c;理论模型如下图所示&#xff0c;该模型中涉及到三个角色: ROS master(管理者)Server(服务端)Client(客户端) ROS Master 负责保管 Server 和 Client 注册的信息&#xff0c;并匹配话题相同的 Server 与 Client &#…

Scrum of Scrums规模化敏捷开发管理全流程

Scrum of Scrums是轻量化的规模化敏捷管理模式&#xff0c;Leangoo领歌可以完美支持Scrum of Scrums多团队敏捷管理。 Scrum of Scrums的场景 Scrum of Scrums是指多个敏捷团队共同开发一个大型产品、项目或解决方案。Leangoo提供了多团队场景下的产品路线图规划、需求管理、…

函数式编程、Stream流操作复习

Lambda表达式 使用 当一个接口中只含有一个抽象方法时&#xff0c;这个接口就叫做函数式接口 一般使用FunctionalInterface注解来标识这个接口是一个函数式接口。 但不论有没有标识这个注解&#xff0c;只要接口中只有一个抽象方法&#xff0c;那么这个接口就是函数式接口 …