首页 > 其他分享 >PXE结合dhcp批量安装OS

PXE结合dhcp批量安装OS

时间:2024-11-19 20:57:46浏览次数:1  
标签:-- 192.168 服务器 DHCP dhcp OS PXE 客户端

PXE技术 - 网络引导

PXE(Preboot eXecution Environment)是一种通过网络引导操作系统的技术,允许计算机通过网络启动操作系统,而不需要本地硬盘驱动器。

一、硬件要求

  1. 网卡需要有启动芯片
    PXE功能需要网卡支持启动功能,通常现代网卡都支持此功能。

  2. BIOS中开启网络引导功能PXE
    在BIOS设置中,开启网络引导(PXE boot)功能,允许计算机从网络中启动。

二、软件要求

  1. DHCP服务器
    用于为客户端分配IP地址以及其他网络配置。

  2. TFTP服务器
    用于提供网络引导程序(如pxelinux.0)和其他所需的启动文件。


DHCP概述

DHCP服务器工作原理

  1. DHCPDISCOVER 发现(广播)
    客户端通过广播发送 DHCPDISCOVER 报文,询问网络上是否有 DHCP 服务器提供服务。
    目标地址255.255.255.255

  2. DHCPOFFER 回应客户端
    DHCP 服务器收到 DHCPDISCOVER 请求后,向客户端发送 DHCPOFFER 报文,提供一个可用的 IP 地址以及其他网络配置信息。

  3. DHCPREQUEST 请求DHCP服务器分配IP地址
    客户端从收到的多个 DHCPOFFER 中选择一个并发送 DHCPREQUEST 报文,表示接受某个服务器的 IP 地址。

  4. DHCPACK 确认 分配IP地址
    DHCP 服务器收到 DHCPREQUEST 后,发送 DHCPACK 报文确认客户端分配的 IP 地址,并提供其他配置信息(如 DNS、网关等)。

DHCP Server监听

  • DHCP服务器监听
    • UDP端口 67(服务器端)
    • UDP端口 68(客户端端)

DHCPRELAY DHCP中继

  • DHCP中继允许客户端通过网络中继与DHCP服务器进行通信,适用于多子网环境。

DHCP配置

客户端可以通过DHCP服务器获取到以下信息:

  • IP 地址
  • 子网掩码
  • 默认网关
  • DNS服务器
  • DNS搜索域名

PXE安装OS步骤

1. 搭建DHCP服务器

# 安装DHCP服务端
yum install -y dhcp-server.x86_64

配置DHCP服务

  1. 编辑DHCP配置文件 /etc/dhcp/dhcpd.conf
 全局配置
option domain-name "example.org";      # 设置 DHCP 客户端接收到的域名
option domain-name-servers 192.168.91.128;  # 设置 DNS 服务器的 IP 地址
default-lease-time 600;                # 设置 DHCP 客户端租用 IP 地址的默认时间(秒)
max-lease-time 7200;                   # 设置 DHCP 客户端 IP 地址租用的最大时间

# 子网配置
subnet 192.168.91.0 netmask 255.255.255.0 {
  range 192.168.91.200 192.168.91.230;    # 设置动态分配的IP地址范围
  option domain-name-servers 192.168.91.128;  # 子网中的DNS服务器
  option domain-name "internal.example.org";
  option routers 192.168.91.254;          # 默认网关 IP 地址
  option broadcast-address 192.168.91.255;  # 广播地址
  default-lease-time 600;
  max-lease-time 7200;
}
  1. 启动DHCP服务并检查是否监听:
systemctl start dhcpd.service
netstat -upln | grep dhcp
  1. 查看日志,确认分配成功:
tail -f /var/log/messages

日志示例:

Nov 13 21:17:11 localhost dhcpd[34437]: DHCPDISCOVER from 00:0c:29:b6:48:77 via ens160
Nov 13 21:17:12 localhost dhcpd[34437]: DHCPOFFER on 192.168.91.200 to 00:0c:29:b6:48:77 via ens160
Nov 13 21:17:12 localhost dhcpd[34437]: DHCPREQUEST for 192.168.91.200 (192.168.91.128) from 00:0c:29:b6:48:77 via ens160
Nov 13 21:17:12 localhost dhcpd[34437]: DHCPACK on 192.168.91.200 to 00:0c:29:b6:48:77 via ens160

2. 安装TFTP服务器

# 安装TFTP服务端
yum install -y tftp-server.x86_64
  1. 启动TFTP服务并检查:
systemctl enable tftp.service --now
netstat -tulnp | grep :69
  1. 配置TFTP根目录存放引导文件:

cd /var/lib/tftpboot/
  1. 在DHCP配置中添加以下内容:
next-server 192.168.91.128  # 设置TFTP服务器地址
filename "pxelinux.0";      # 设置网络启动文件名
  1. 安装syslinux并将PXE启动文件复制到TFTP根目录:
yum install -y syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
  1. 将ISO镜像中的isolinux文件夹内容复制到TFTP目录:

cp /var/www/html/pub/isolinux/*  /var/lib/tftpboot/
  1. 创建pxelinux.cfg目录并配置默认启动文件:
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /var/lib/tftpboot/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
  1. 重启TFTP和DHCP服务:
systemctl restart tftp.service
systemctl restart dhcpd.service
[root@web01 pxelinux.cfg]# vim default #编辑default文件,配置PXE引导的具体内容
label linux #定义菜单项,设置标签为“linux”
 menu label ^AUTO Install CentOS Linux 8 #菜单中显示的文本
 menu default #表示这是默认选中的菜单项(唯一)
 kernel vmlinuz #指定引导时使用的内核文件
 append initrd=initrd.img inst.repo=http://192.168.91.128/pub inst.ks=http://192.168.91.128/ks/ks01.cfg quiet
 #指定内核引导时加载的初始内存盘(initrd)映像;指定安装源的URL;’quiet‘启动时禁用冗长的输出

3.编写kickstart脚本自动化安装

#version=RHEL8
# 使用图形化安装
graphical

# 设置AppStream仓库地址
repo --name="AppStream" --baseurl=http://192.168.91.128/pub/AppStream

%packages
# 安装图形化服务器环境
@^graphical-server-environment
# 安装kexec-tools(一个内核跳跃工具,用于快速重启)
kexec-tools
%end

# 键盘布局设置,使用美国英语布局
keyboard --xlayouts='us'

# 设置系统语言为英语
lang en_US.UTF-8

# 网络配置:使用DHCP获取IP,网络接口为ens160,启用该网络设备
network  --bootproto=dhcp --device=ens160  --activate
# 设置主机名为localhost.localdomain
network  --hostname=localhost.localdomain

# 使用HTTP源安装,指定镜像地址
url --url=http://192.168.91.128/pub

# 启用首次启动配置界面
firstboot --disable
# 忽略不需要的磁盘,仅使用sda磁盘进行安装
ignoredisk --only-use=sda

# 磁盘清理配置,清除磁盘的分区表
clearpart --none --initlabel
# 磁盘分区配置:创建/boot分区,大小476MB,文件系统类型为xfs
part /boot --fstype="xfs" --ondisk=sda --size=476
# 创建物理卷,大小40GB,文件系统类型为LVM物理卷
part pv.01 --fstype="lvmpv" --ondisk=sda --size=40960
# 创建卷组vg0,大小为40GB,物理卷为pv.01
volgroup vg0 --pesize=4096 pv.01
# 创建交换分区swap,大小2GB
logvol swap --fstype="swap" --size=2048 --name=swap --vgname=vg0
# 创建/home分区,大小5GB,文件系统为xfs
logvol /home --fstype="xfs" --size=5120 --name=home --vgname=vg0
# 创建根分区/,大小20GB,文件系统为xfs
logvol / --fstype="xfs"  --size=20480 --name=root --vgname=vg0

# 设置系统时区为上海,并使用UTC时间
timezone Asia/Shanghai --isUtc --nontp

# 设置root用户的密码(加密后的密码)
rootpw --iscrypted $6$.ANlyFMKUG1Nm37E$2Rut/R0y/iT43Dl63ReTUmkiB7BlaQq5bIqSEIPQLddQfAl1V/1qjwQTrnf7Iu0msBuTdfItFICUAD.p.62yQ/

%addon com_redhat_kdump --enable --reserve-mb='auto'
# 启用kdump并自动保留内存

%end

%anaconda
# 密码策略:root用户密码最小长度为6,密码强度要求为1(较弱)
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
# 用户密码策略:最小长度为6,密码强度要求为1
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
# LUKS加密密码策略:最小长度为6,密码强度要求为1
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
#系统安装后配置
%post
cat > /etc/yum.repos.d/dvd.repo  <<END
[BaseOS]
name=CentOS8 BaseOS
baseurl=http://192.168.8.108/pub/BaseOS
gpgcheck=0
[AppStream]
name=CentOS8 AppStream
baseurl=http://192.168.8.108/pub/AppStream
gpgcheck=0
END
%end

bootloader --append="console=ttyS0"

设置密码这里可以这样做
使用 openssl 生成 SHA-512 加密密码:
openssl passwd -6
$ openssl passwd -6
Password:
Verifying - Password:
$6$z5x2/6xN$3XTX56zMwTyv0Nq4AK9O2pF9U0nox0xkK2odC6YhI8Hio5mEKp9xPb1aX5jRHlWqQEOyFUqf/OBUyXwGkBJK0

标签:--,192.168,服务器,DHCP,dhcp,OS,PXE,客户端
From: https://www.cnblogs.com/cloudwangsa/p/18555592

相关文章

  • OSTrack:Joint Feature Learning and Relation Modeling for Tracking: A One-Stream F
    Abstract问题:传统的双流跟踪框架对目标提取的特征不够具体。特征提取和关系建模是分开进行的,导致算法在区分目标和背景方面的能力有限。两流、两阶段框架容易受到性能-速度困境的影响。解决:提出一种新的单流跟踪框架,OSTrack通过桥接具有双向信息流的模板搜索图像来统一特......
  • Closeable接口
    Closeable接口继承于AutoCloseable,主要的作用就是自动的关闭资源,其中close()方法是关闭流并且释放与其相关的任何方法,如果流已被关闭,那么调用此方法没有效果,像InputStream和OutputStream类都实现了该接口,源码如下/**Copyright(c)2003,2013,Oracleand/oritsaffiliates.......
  • 前端请求之ajax、axios、fetch
    Ajax、Axios、Fetch的详细讲解和比较本人在学习js中一直很对请求的方式不是很理解,因此也做了一篇请求的总结,希望对大家有帮助在现代Web开发中,进行HTTP网络请求的三种常见方式分别是Ajax(基于jQuery)、Axios(第三方库)和Fetch(原生API)。以下是对它们的详细分析,结合代码......
  • 接口测试之postman
    一、介绍postmanPostman是一个网页调试工具,也可以调试css、html等Postman的操作环境环境:PostmanMac、WindowsX32、WindowsX64、Linux系统、postman浏览器扩展程序、postmanchrome应用程序Postman下载:https://www.postman.com/downloads/三、postman使用1、创建集合3......
  • 论文HyperEnclave An Open and Cross-platform Trusted Execution Environment学习
    论文原文链接原文都是英文的,先翻译一遍,在翻译的过程中阅读和理解。HyperEnclave:一个开放的跨平台可信执行环境摘要学术界和工业界已经提出了许多可信执行环境(TEEs)。然而,它们中的大多数都需要特定的硬件或固件更改,并且绑定到特定的硬件供应商(如Intel、AMD、ARM和IBM)。在本文中......
  • centos9stream 新系统配置IP 设置远程登录 修改国内源
    配置IP.网关.DNS连接互联网vim/etc/NetworkManager/system-connections/ens33.nmconnection###网络配置文件[connection]id=ens33uuid=3c17691d-cccc-xxxx-zzzz-xzxzxczxcczxtype=ethernetautoconnect-priority=-999interface-name=ens33timestamp=1732001143[et......
  • CentOS7 安装rabbitmq
    参考:原文链接:https://blog.csdn.net/JingleYe/article/details/141959978  第一步、安装任何软件包之前,建议使用以下命令更新软件包和存储库yum-yupdate第二步、Erlang在默认的YUM存储库中不可用,因此您将需要安装EPEL存储库yum-yinstallepel-releaseyum-yupdat......
  • CentOS,是时候说再见了
    想当年还是通过兄弟连入门学习的CentOS,那时正直高中阶段莫名的喜欢上了IT互联网,从而一发不可收拾直到今日,Linux系统如今发展非常的不错有了许多优秀的分支,唯一遗憾的是2024年1月RedHat(红帽)公司发布公告称CentOS7将在2024年6月30日正式结束支持。所以几乎一直使......
  • vmware centos7.9虚拟机死机无法正常启动
    【问题】启动centos7.9虚拟机出现Generating"/run/initramfs/rdsosreport.txt"【原因】服务器卡死,经理强制关机重启导致【解决】1.使用命令ls/dev/mapper查询出/dev/mapper目录下的文件,查看后缀为-root的文件ls/dev/mapper2.查出centos-rootcentos-swapcontrol三个......
  • HarmonyOS开发笔记1
    现在HarmonyOS势头很猛,所以也学习下。。。学习路线主要是按着官方网站推荐的路线。视频课程HarmonyOSNEXT。开发文档开发指南示例程序Codelabs、Sample当然,对于没有开发经验的人来说,按着官方认证路线学习也是不错方案,官方提示初级、中级、高级的认证课程,完成课程和考试还可......