当前位置: 首页 > article >正文

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.conf

subnet 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 dhcpd

systemctl 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             = 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
    fiags                   = 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 300

display boot.msg
menu background splash.png  

label linux
  menu label install CentOS 7 by Kickstart
  menu 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.Or8HENDSPkCrfnCgUlnVdxNWR0iK20GZF70
 
firewall --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
%end

reboot

脚本文件解释


#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                                          ##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        声明解释器
需要执行的脚本
%end
  
reboot
批量安装效果验证
  • 客户端会自动装机
    在这里插入图片描述
需求二:在安装后,能不能顺便执行脚本配置某些参数{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)))'

http://www.kler.cn/a/378353.html

相关文章:

  • Navicat 17 功能简介 | 转储SQL文件
  • 堆heap的讨论、习题与代码
  • 【案例】旗帜飘动
  • ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力
  • 富格林:拆穿欺诈套路平稳出金
  • RestTemplate 常用方法(提供了多种方法来发送 HTTP 请求)
  • 4499元起!苹果发布新款Mac mini:升级M4/M4 Pro 仅手掌大小
  • Centos7搭建k8s集群
  • 光学基础知识(3)光的干涉
  • [FE] React 初窥门径(四):React 组件的加载过程(render 阶段)
  • 命令解释符--shell
  • Linux - grep的正则用法
  • 新视野大学英语读写教程1第四版PDF+答案+听力音频
  • react使用Fullcalendar
  • 在 openEuler 22.03 服务器上搭建 web 服务教程
  • 2024年11月3日练习(滑动窗口算法)
  • AlDente Pro - MacBook 电池健康管理工具
  • JAVA 插入 JSON 对象到 PostgreSQL
  • 推荐一款用来快速开发3D建筑模型软件:Allplan
  • 【刷题14】哈希表专题
  • OpenAI 的 Whisper:盛名之下,其实难副?
  • ROS2入门学习——ROS在机器人中的运行
  • C++:哈希表
  • 浅谈路由器
  • 前端路由如何从0开始配置?vue-router 的使用
  • 力扣算法笔记 —— 等差数列