欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Centos7如何实现PXE网络批量无人值守安装

Centos7如何实现PXE网络批量无人值守安装

2025/7/3 11:18:37 来源:https://blog.csdn.net/gsdgdg00/article/details/143472985  浏览:    关键词:Centos7如何实现PXE网络批量无人值守安装

在这里插入图片描述

PXE网络无人值守详细版

原理

客户端开机后会通过网络向DHCP服务器请求IP地址,并在获取IP地址的同时得到引导服务器的地址和tftp服务器地址。它会通过tftp服务向引导服务器发出请求,获取引导文件、菜单文件、内核驱动等文件并通过网络下载至本地内存展开成一个临时的装机系统,在装机时,会利用http共享的软件仓库并通过装机脚本来自动安装操作系统,将数据写入硬盘。在装机完成后,系统会自动重启。

在这里插入图片描述

1. 环境组成

操作系统:CentOS Linux release 7.6.1810

服务器端需要

dhcp:配置网络参数,tftp服务器地址,引导文件名称
TFTP:引导文件,菜单文件,内核和驱动文件系统
fttpd:系统镜像放到软件仓库中,和装机模块(装机脚本)kickstart
客户端需要 2个g以上的内存

2. 防护关闭

#关闭SELinux和Firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld.service
systemctl disable firewalld.service

3. 软件安装

安装软件:httpd、dhcp、tftp-server、syslinux、system-config-kickstart(图形界面安装需要)

 yum -y install httpd dhcp tftp-server syslinux system-config-kickstart

4. 客户端问题总结和详细步骤

1. DHCP服务配置

客户端找不到dhcp

在这里插入图片描述

到dhcp主配置文件中
将next-server IP 下一步到这个主机中 IP为本机IP或需要到那个主机上获取的
filename “pxelinux.0” 获取文件到的引导文件

cp -a /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.confsubnet 192.168.00.0 netmask 255.255.255.0 {range 192.168.00.00 192.168.00.00;option domain-name-servers 8.8.8.8;option routers 192.168.00.2;default-lease-time 600;max-lease-time 7200;next-server 192.168.00.00;   #填写tftp服务器IP地址filename "pxelinux.0";    #填写引导文件名称}
systemctl start dhcpdsystemctl enable --now dhcpd  #开启开机自启动
2. http服务配置(利用http实现光盘共享)

在http的网页共享目录下创建新目录,并将光盘挂载到此目录,实现光盘内容共享,主要目的是操作系统安装的最后一个步骤需要安装软件。


mkdir /var/www/html/centos7
mount /dev/sr0 /var/www/html/centos7/
#启动httpd服务,并设置开启自启动
systemctl enable --now httpd
3. tftp服务配置

客户端显示
PXE-E32: TFTP open timeout
为没有服务器端没有TFTP
在这里插入图片描述

yum -y install tftp-server      ##安装tftp#配置xinetd服务下的tftp服务vim /etc/xinetd.d/tftp      ##在7版本中虽然将管理权限交还给了systemd但是配置文件还是在这里{socket_type             = dgramprotocol                = udpwait                    = yesuser                    = rootserver                  = /usr/sbin/in.tftpdserver_args             = -s /var/lib/tftpboot  这里为共享目录位置disable                 = no        ##设置为no时可以开机自启动per_source              = 11cps                     = 100 2fiags                   = IPV4
}
systemctl start tftp.socket
systemctl enable --now tftp.socket  #开启开机自启动  这里tftp.socket会去启动tftp.service
4. 编写引导安装相关文件,放到指定位置

找不到引导文件 PXE-E53: No hoot filename received
![[1730277886619.jpg]]

找不到菜单文件 导入必要文件到指定位置(内核文件、引导菜单文件)

![[1730277886621.jpg]]

找不到启动图形化菜单文件
![[1730277886623.jpg]]

4.1 tftp需要共享的文件
  • 引导文件 - pxelinux.0
  • 引导菜单 - default{isolinux.cfg} – 开机后选择启动项的菜单文{该文件存放在一个叫:pxelinux.cfg的目录下}
  • 内核文件 - vmlinuz initrd.img
4.2 导入必要文件到指定位置(内核文件、引导菜单文件)
yum -y install syslinux     ##安装这个可以有pxelinux.0这个文件
cp -a /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/  #引导文件cp -a /var/www/html/centso7/isolinux/{vesamenu.c32,boot.msg,splash.png}   /var/lib/tftpboot/#用来辅助完成菜单的显示cp -a /var/www/html/centso7/images/pxeboot/{vmlinuz,initrd.img}   /var/lib/tftpboot/#用来预加载的内核和驱动文件,然后使用预加载内核进行系统安装
ls /var/lib/tftpboot/   #查看文件
4.3 复制并编写引导菜单文件
mkdir /var/lib/tftpboot/pxelinux.cfg/
find / -name "isolinux"     #查找isolinux
cp -a /var/www/html/centso7/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #引导菜单文件,复制并改名产生
vim /var/lib/tftpboot/pxelinux.cfg/default
#修改如下配置文件
default vesamenu.c32
timeout 300display boot.msg
menu background splash.png  label linuxmenu label install CentOS 7 by Kickstartmenu default              #设置默认菜单kernel vmlinuz            ##内核append initrd=initrd.img inst.repo=http://192.168.88.110/centos7 inst.ks=http://192.168.88.110/ks_config/centos7.cfg     #软件仓库地址       
menu end
4.4 创建并编写无人值守安装脚本文件

mkdir /var/www/html/ks_config
vim /var/www/html/ks_config/centos7.cfg
#装机脚本(需要修改)
#version=DEVEL
auth --enableshadow --passalgo=sha512
url --url=http://192.168.88.110/centos7/       
graphical
firstboot --enable
ignoredisk --only-use=sda
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
network  --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto --no-activate
network  --hostname=localhost.localdomain
rootpw --iscrypted   $6$LO0oxqvmJfQOFW7p$cgV.4sVUp7UgEDSwUToHSIhRCmX4ETF2S/CoRmhnf.NHkCJvS1.Or8HENDSPkCrfnCgUlnVdxNWR0iK20GZF70firewall --disabled
selinux --disabled
services --disabled="chronyd"
timezone Asia/Shanghai --isUtc --nontp
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
clearpart --none --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=1024
part swap --fstype="swap" --ondisk=sda --size=2048
part / --fstype="xfs" --ondisk=sda --grow --size=1%packages
@^web-server-environment
@base
@core
@web-server
kexec-tools
gcc
lrzsz
mariadb-server
mariadb
%endreboot
脚本文件解释
#version=DEVELauth --enableshadow --passalgo=sha512           ##加密算法
url --url=http://192.168.88.110/centos7/        ##安装使用的安装介质
graphical                                       ##图形化安装,不是安装图形化  
firstboot --enable                              ##忽略掉磁盘上的数据
ignoredisk --only-use=sda
keyboard --vckeymap=us --xlayouts='us'          ##设置键盘类型
lang en_US.UTF-8
network  --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto --no-activate                                          ##IP地址的获取方式network  --hostname=localhost.localdomain           ##主机名rootpw --iscrypted $6$LO0oxqvmJfQOFW7p$cgV.4sVUp7UgEDSwUToHSIhRCmX4ETF2S/CoRmhnf.NHkCJvS1.Or8HENDSPkCrfnCgUlnVdxNWR0iK20GZF70                   ##root用户的密码firewall --disabled                            
selinux --disabled
services --disabled="chronyd"
xconfig --startxonboot                  ##安装图形化的界面,并设置为开机自启
timezone Asia/Shanghai --isUtc --nontp          ##清理分区和引导手动分区
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda    
clearpart --none --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=1024
part swap --fstype="swap" --ondisk=sda --size=2048
part / --fstype="xfs" --ondisk=sda --grow --size=1          ##--grow --size=1为剩下所有分给根
%packages
@^web-server-environment            ##安装web相关的软件
@^gnome-desktop-environment         #添加桌面模式
@base
@core
@web-server
kexec-tools
gcc
lrzsz
mariadb-server
mariadb
@x11                    x windows的版本
@office-suite           办公软件
%end
%post --interpreter=bash        声明解释器
需要执行的脚本
%endreboot
批量安装效果验证
  • 客户端会自动装机
    在这里插入图片描述
需求二:在安装后,能不能顺便执行脚本配置某些参数{yum源案例}
vim  /var/www/html/ks_config/centos7.cfg 
%post --interpreter=bash         #post表示在服务启动之后运行
cd /etc/yum.repos.d/
mkdir bak
mv C* bak/
echo "[centos7]
name=centos7 repo for kickstart
baseurl=http://192.168.88.110/centos7
enable=1
gpgcheck=0" >> CentOS-Media.repo
%end
需求三:在安装过程中,添加一个普通用户(一般安装桌面版操作系统时需要)
vim  /var/www/html/ks_config/centos7.cfg 
user --name=hongfuedu --password=$6$08xNwgwvXHCC/W8J$Sa3I0sd832pCk/M1Dr.os.1P6qFErIb5I3Okm0G7a9P0PaeHQnYKxOHMcZ1OeumLmYshQJaAurdxNJGZdKyD90 --iscrypted --gecos="hongfuedu"  
#生成上述的密文密码可以使用以下命令:借助python命令完成
python -c 'import crypt; print(crypt.crypt("your_password", crypt.mksalt(crypt.METHOD_SHA512)))'

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com