PXE实现批量主机开机自动安装

news2024/9/27 0:58:40

华子目录

  • 前言
  • PXE装机的基本工作原理
  • PXE组件
  • 实验前的准备工作
    • 1.`VM`进入`虚拟网络编辑器`关闭`dhcp`功能
    • 2.从`RHEL7母机`上`克隆`一个`server`端和`client`端
    • 3.配置`server`端
    • 4.关闭`firewalld`和`selinux`
    • 5.`mobaxterm`使用`ssh -X`连接到server端
    • 6.`anaconda-ks.cfg`介绍
      • 6.1文件概述
      • 6.2文件内容
      • 6.3文件使用
  • 实验步骤
    • 1.`server`端安装`kickstart`
      • 1.1启动`kickstart`工具,制作`ks.cfg`脚本
      • 1.2`kickstart`配置
    • 2.`server`端安装`httpd`
      • 2.1将`ks.cfg`复制到`/var/www/html`中
      • 2.2在`/var/www/html`中创建一个名为`guangpan`的软链接文件,指向`/guangpan`
      • 2.3重启`httpd`服务,进行简单测试
    • 3.`server`端安装`dhcp`
      • 3.1修改`dhcpd.conf`配置文件
    • 4.安装`syslinux`
    • 5.安装`tftp-server`
    • 6.将`/guangpan/isolinux/`下的`所有文件`复制到`/var/lib/tftpboot/`目录下
    • 7.将`/usr/share/syslinux/pxelinux.0`文件复制到`/var/lib/tftpboot/`目录下
    • 8.在`/var/lib/tftpboot/`目录下创建`pxelinux.cfg`目录
    • 9.将`/var/lib/tftpboot/isolinux.cfg`文件复制到`/var/lib/tftpboot/pxelinux.cfg/`目录下并起名为`default`
    • 10.修改`/var/lib/tftpboot/pxelinux.cfg/default`文件内容
    • 11.重启`httpd,dhcpd,tftp`服务并设置开机自启动
    • 12.关闭`client`端的光盘启动
    • 13.在`VM`中的`client`端`打开电源时进入固件`设置`BIOS`为网卡启动
  • 测试
  • 总结
    • `syslinux`在`PXE`中的作用
    • `syslinux`与`PXE`环境的集成

前言

  • PXEPreboot Execution Environment)装机是一种通过网络引导安装操作系统的方法。它允许计算机在没有本地存储设备(如硬盘或光盘驱动器)的情况下,通过网络远程服务器网络共享加载操作系统安装文件实现自动化安装
  • PXE装机通常用于大规模部署和远程管理计算机,特别适用于服务器和客户机环境。它可以大大简化操作系统的安装和配置过程,提高部署效率和一致性,并减少人工操作的需求

PXE装机的基本工作原理

  • 客户机待安装的计算机)通过网络启动,并发送DHCP请求以获取IP地址其他配置信息
  • DHCP服务器回应并提供一个IP地址PXE启动服务的相关配置
  • 客户机使用TFTPTrivial File Transfer Protocol)从PXE服务器下载引导程序(如pxelinux.0
  • 引导程序加载并启动,提供菜单和选项,允许用户选择所需的操作系统安装
  • 客户机选择安装选项后,引导程序PXE服务器下载适当的操作系统安装文件(如内核、初始化内存盘(initrd)和安装程序
  • 客户机使用下载的文件进行操作系统安装过程

PXE装机的配置包括设置和维护PXE服务器创建引导文件设置DHCP服务器TFTP服务器等。它通常与其他自动化工具(如Kickstart文件)结合使用,以实现自动化和批量化的操作系统部署

PXE组件

  • HTTP/FTP服务器:在某些情况下,用于传输更大的文件或提供额外服务
  • TFTP服务器:用于传输启动文件,如 PXE 引导程序和内核镜像
  • DHCP服务器:为 PXE 客户端分配 IP 地址,并提供启动文件位置信息
  • syslinux:提供pxelinux.0程序,使得客户机能够通过网络远程服务器下载引导镜像,并加载安装文件整个操作系统

实验前的准备工作

这里我们需要准备2台机子,server服务端和client客户端

1.VM进入虚拟网络编辑器关闭dhcp功能

  • 因为我们的server端会提供dhcp功能,所以我们要关闭VM虚拟机中的dhcp功能,否则会影响实验效果。

在这里插入图片描述

2.从RHEL7母机克隆一个server端和client

  • 克隆server
    在这里插入图片描述
  • 克隆client

在这里插入图片描述

3.配置server

  • 由于我的RHEL7是刚装好的机子,所以克隆出来的server端也是一样的。
  • 这里我写了一个配置静态IP,修改主机名,永久挂载光盘,配置yum本地仓库shell脚本,但仅限于RHEL7CentOS7系列的系统
[root@localhost ~]# vim /bin/vmset.sh
#!/bin/bash
#配置静态IP,修改主机名,永久挂载光盘,配置yum本地仓库
read -p "请输入主机名 IP 掩码 网关 dns(以空格分开):" name IP netmask gateway dns 
rm -rfv /etc/sysconfig/network-scripts/ifcfg-ens33 > /dev/null
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 <<quit
TYPE=Ethernet
NAME=ens33
DEVICE=ens33
BOOTPROTO=none
IPADDR=$IP
NETMASK=$netmask
GATEWAY=$gateway
DNS1=$dns
DEFROUTE=yes
PROXY_METHOD=none
ONBOOT=yes
quit

nmcli connection reload
nmcli connection up ens33 > /dev/null
echo "IP configuration successful!!!"
sleep 3

hostnamectl set-hostname $name
echo "Host name configuration successful!!!"
sleep 3


if [ -e /guangpan ]    #将本地光盘挂载在/guangpan中
then
	mount /dev/cdrom /guangpan &> /dev/null
	if [[ $(grep -i "^mount /dev/cdrom /guangpan$" /etc/rc.d/rc.local) != "mount /dev/cdrom /guangpan" ]]
        then
                echo "mount /dev/cdrom /guangpan" >> /etc/rc.d/rc.local
                chmod +x /etc/rc.d/rc.local
        fi
else
	mkdir /guangpan
	mount /dev/cdrom /guangpan &> /dev/null
	if [[ $(grep -i "^mount /dev/cdrom /guangpan$" /etc/rc.d/rc.local) != "mount /dev/cdrom /guangpan" ]]
	then
		echo "mount /dev/cdrom /guangpan" >> /etc/rc.d/rc.local
		chmod +x /etc/rc.d/rc.local
	fi
fi
echo "CD mounted successfully!!!"
sleep 3

rm -rfv /etc/yum.repos.d/* > /dev/null
cat > /etc/yum.repos.d/redhat7.repo <<quit
[base]
name=rhel7
baseurl=file:///guangpan
gpgcheck=0
quit

sleep 3
echo "Local yum repository configuration successful!!!"
bash


[root@localhost ~]# chmod +x /bin/vmset.sh 
[root@localhost ~]# ll /bin/vmset.sh 
-rwxr-xr-x. 1 root root 1496 85 20:00 /bin/vmset.sh
  • 运行脚本,检测结果
[root@localhost ~]# vmset.sh 
请输入主机名 IP 掩码 网关 dns(以空格分开):server 172.25.254.10 255.255.255.0 172.25.254.2 114.114.114.114
IP configuration successful!!!
Host name configuration successful!!!
CD mounted successfully!!!
Local yum repository configuration successful!!!



[root@server ~]# hostname -I
172.25.254.10 
[root@server ~]# hostname
server
[root@server ~]# cat /etc/yum.repos.d/redhat7.repo 
[base]
name=rhel7
baseurl=file:///guangpan
gpgcheck=0
[root@server ~]# ping www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=128 time=43.1 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=128 time=70.4 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=128 time=47.3 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=4 ttl=128 time=42.0 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=5 ttl=128 time=46.3 ms

4.关闭firewalldselinux

[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@server ~]# systemctl is-active firewalld
unknown
[root@server ~]# getenforce 
Enforcing
[root@server ~]# grubby --update-kernel ALL --args selinux=0    #关闭selinux
[root@server ~]# reboot
#重启之后
[root@server ~]# getenforce
Disabled

5.mobaxterm使用ssh -X连接到server端

  • ssh -X 命令是用于通过 SSH (Secure Shell) 协议远程登录到另一台计算机,并启用 X11 转发的一个选项。X11 转发允许你在远程计算机上运行图形界面应用程序,并将这些应用程序的图形输出重定向回你的本地计算机进行显示。
ssh root@172.25.254.10 -X
root@172.25.254.10's password:
Last login: Mon Aug  5 20:14:20 2024
[root@server ~]# 

6.anaconda-ks.cfg介绍

  • 在正式实验之前,我们有必要介绍一下/root/anaconda-ks.cfg这个文件。anaconda-ks.cfg是在系统安装好后自动生成的,这个文件记录了系统在安装过程中的所有设定。
  • anaconda-ks.cfg文件是一个存储着安装程序各种配置信息的文件,通常用于描述一个使用Kickstart安装系统时的配置文件。Kickstart是一种自动化安装Red Hat Linux和其他基于RPMLinux发行版的工具,通过提供一个文本文件,其中包含了安装期间需要回答的问题的答案,来实现无人值守安装。

6.1文件概述

  • 文件名anaconda-ks.cfg
  • 作用:记录并自动化执行系统安装过程中的配置信息
  • 生成时机:在系统安装过程中自动生成,位于/root目录下

6.2文件内容

anaconda-ks.cfg文件包含了Kickstart的配置信息,如:

  • 安装源:指定系统安装时使用的安装源,如光盘、网络等。
  • 分区布局:定义磁盘的分区方案,包括分区大小、文件系统类型等。
  • 软件包选择:列出要安装的软件包,以及是否安装额外的软件包组。
  • 用户管理:设置系统管理员账户及其密码。
  • 网络设置:配置网络接口的IP地址、子网掩码、网关等。
  • 其他配置:如防火墙设置、SELinux安全策略、系统启动参数等。

6.3文件使用

  • 编辑与修改:系统管理员可以使用文本编辑器来编写和修改anaconda-ks.cfg文件,以实现自定义的安装配置。
  • 自动化安装:在无人值守安装场景中,anaconda-ks.cfg文件可以自动执行安装过程,无需人工干预。

实验步骤

1.server端安装kickstart

  • 在安装kickstart之前,我们首先要确保我们的系统具有图形化功能
[root@server ~]# runlevel
N 5
  • 安装system-config-kickstartsystem-config-kickstart是安装图形化生成kickstart自动安装脚本的工具
[root@server ~]# yum install system-config-kickstart -y
依赖关系解决

==============================================================================================
 Package                             架构           版本                   源            大小
==============================================================================================
正在安装:
 system-config-kickstart             noarch         2.9.7-1.el7            base         348 k
为依赖而安装:
 system-config-date                  noarch         1.10.6-3.el7           base         591 k
 system-config-date-docs             noarch         1.0.11-4.el7           base         527 k
 system-config-keyboard              noarch         1.4.0-5.el7            base          33 k
 system-config-keyboard-base         noarch         1.4.0-5.el7            base         103 k
 system-config-language              noarch         1.4.0-9.el7            base         134 k

事务概要
==============================================================================================
安装  1 软件包 (+5 依赖软件包)

总下载量:1.7 M
安装大小:6.2 M
Downloading packages:
----------------------------------------------------------------------------------------------
总计                                                           58 MB/s | 1.7 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : system-config-date-1.10.6-3.el7.noarch                                    1/6
  正在安装    : system-config-date-docs-1.0.11-4.el7.noarch                               2/6
  正在安装    : system-config-language-1.4.0-9.el7.noarch                                 3/6
  正在安装    : system-config-keyboard-base-1.4.0-5.el7.noarch                            4/6
  正在安装    : system-config-keyboard-1.4.0-5.el7.noarch                                 5/6
  正在安装    : system-config-kickstart-2.9.7-1.el7.noarch                                6/6
  验证中      : system-config-keyboard-base-1.4.0-5.el7.noarch                            1/6
  验证中      : system-config-language-1.4.0-9.el7.noarch                                 2/6
  验证中      : system-config-keyboard-1.4.0-5.el7.noarch                                 3/6
  验证中      : system-config-kickstart-2.9.7-1.el7.noarch                                4/6
  验证中      : system-config-date-docs-1.0.11-4.el7.noarch                               5/6
  验证中      : system-config-date-1.10.6-3.el7.noarch                                    6/6

已安装:
  system-config-kickstart.noarch 0:2.9.7-1.el7

作为依赖被安装:
  system-config-date.noarch 0:1.10.6-3.el7
  system-config-date-docs.noarch 0:1.0.11-4.el7
  system-config-keyboard.noarch 0:1.4.0-5.el7
  system-config-keyboard-base.noarch 0:1.4.0-5.el7
  system-config-language.noarch 0:1.4.0-9.el7

完毕!

1.1启动kickstart工具,制作ks.cfg脚本

[root@server ~]# system-config-kickstart    #执行该命令后就会启用图形化工具
  • 图形化如下

在这里插入图片描述

1.2kickstart配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 分区完后的显示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 上图脚本作用为配置静态IP,永久挂载光盘,配置yum本地仓库
    在这里插入图片描述
    在这里插入图片描述
  • 保存完后叉掉即可

在这里插入图片描述

[root@server ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
  • 检查有没有语法错误
[root@server ~]# ksvalidator ks.cfg
[root@server ~]#
#没有回显说明语法正确
  • ks.cfg脚本配置完成

2.server端安装httpd

[root@server ~]# yum install httpd -y
依赖关系解决

==============================================================================================
 Package                 架构               版本                       源                大小
==============================================================================================
正在安装:
 httpd                   x86_64             2.4.6-95.el7               base             1.2 M
为依赖而安装:
 apr                     x86_64             1.4.8-7.el7                base             104 k
 apr-util                x86_64             1.5.2-6.el7                base              92 k
 httpd-tools             x86_64             2.4.6-95.el7               base              93 k
 mailcap                 noarch             2.1.41-2.el7               base              31 k

事务概要
==============================================================================================
安装  1 软件包 (+4 依赖软件包)

总下载量:1.5 M
安装大小:4.3 M
Downloading packages:
----------------------------------------------------------------------------------------------
总计                                                          223 MB/s | 1.5 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : apr-1.4.8-7.el7.x86_64                                                    1/5
  正在安装    : apr-util-1.5.2-6.el7.x86_64                                               2/5
  正在安装    : httpd-tools-2.4.6-95.el7.x86_64                                           3/5
  正在安装    : mailcap-2.1.41-2.el7.noarch                                               4/5
  正在安装    : httpd-2.4.6-95.el7.x86_64                                                 5/5
  验证中      : httpd-tools-2.4.6-95.el7.x86_64                                           1/5
  验证中      : mailcap-2.1.41-2.el7.noarch                                               2/5
  验证中      : apr-1.4.8-7.el7.x86_64                                                    3/5
  验证中      : httpd-2.4.6-95.el7.x86_64                                                 4/5
  验证中      : apr-util-1.5.2-6.el7.x86_64                                               5/5

已安装:
  httpd.x86_64 0:2.4.6-95.el7

作为依赖被安装:
  apr.x86_64 0:1.4.8-7.el7                        apr-util.x86_64 0:1.5.2-6.el7
  httpd-tools.x86_64 0:2.4.6-95.el7               mailcap.noarch 0:2.1.41-2.el7

完毕!

2.1将ks.cfg复制到/var/www/html

[root@server ~]# cp ks.cfg /var/www/html/
[root@server ~]# cd /var/www/html/
[root@server html]# ls
ks.cfg

2.2在/var/www/html中创建一个名为guangpan的软链接文件,指向/guangpan

[root@server html]# ln -s /guangpan guangpan
[root@server html]# ll
总用量 4
lrwxrwxrwx 1 root root    9 85 21:40 guangpan -> /guangpan
-rw-r--r-- 1 root root 2058 85 21:36 ks.cfg

2.3重启httpd服务,进行简单测试

[root@server html]# systemctl restart httpd
  • 测试

在这里插入图片描述
在这里插入图片描述

3.server端安装dhcp

  • 安装dhcp服务为其他服务器提供分配ip的功能
[root@server ~]# yum install dhcp -y
依赖关系解决

==============================================================================================
 Package           架构                版本                           源                 大小
==============================================================================================
正在安装:
 dhcp              x86_64              12:4.2.5-82.el7                base              515 k

事务概要
==============================================================================================
安装  1 软件包

总下载量:515 k
安装大小:1.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 12:dhcp-4.2.5-82.el7.x86_64                                               1/1
  验证中      : 12:dhcp-4.2.5-82.el7.x86_64                                               1/1

已安装:
  dhcp.x86_64 12:4.2.5-82.el7

完毕!
  • 查看dhcp的配置文件路径
[root@server ~]# rpm -qc dhcp
/etc/dhcp/dhcpd.conf       #看到这个
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
  • 查看/etc/dhcp/dhcpd.conf 文件内容
[root@server ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
  • 在上面,我们可以看到dhcp配置文件内容的配置案例的路径
  • 我们将案例文件复制到/etc/dhcp/下,并取名为dhcpd.conf
[root@server ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"yes

3.1修改dhcpd.conf配置文件

[root@server ~]# vim /etc/dhcp/dhcpd.conf
  • 修改前

在这里插入图片描述
在这里插入图片描述

  • 留下一个subnet字段即可

在这里插入图片描述

  • 修改后
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#

# option definitions common to all supported networks...
option domain-name "openlab.com";
option domain-name-servers 114.114.114.114;

default-lease-time 600;
max-lease-time 7200;

# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

subnet 172.25.254.0 netmask 255.255.255.0 {
  range 172.25.254.30 172.25.254.40;
  option routers 172.25.254.2;
  next-server 172.25.254.10;
  filename "pxelinux.0";
}

在这里插入图片描述
在这里插入图片描述

  • server端下发IP时,会让client端读取next-server主机中的pxelinux.0文件
  • 然后pxelinux.0会让client读取/var/lib/tftpboot/pxelinux.cfg/default文件

4.安装syslinux

  • 提供pxelinux.0文件
[root@server ~]# yum install syslinux -y
正在解决依赖关系
--> 正在检查事务
---> 软件包 syslinux.x86_64.0.4.05-15.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

==============================================================================================
 Package               架构                版本                       源                 大小
==============================================================================================
正在安装:
 syslinux              x86_64              4.05-15.el7                base              991 k

事务概要
==============================================================================================
安装  1 软件包

总下载量:991 k
安装大小:2.3 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : syslinux-4.05-15.el7.x86_64                                               1/1
  验证中      : syslinux-4.05-15.el7.x86_64                                               1/1

已安装:
  syslinux.x86_64 0:4.05-15.el7

完毕!

5.安装tftp-server

  • tftp服务是用来共享pxelinux.0数据文件的网络服务
[root@server ~]# yum install tftp-server -y
依赖关系解决

==============================================================================================
 Package                  架构                版本                    源                 大小
==============================================================================================
正在安装:
 tftp-server              x86_64              5.2-22.el7              base               47 k

事务概要
==============================================================================================
安装  1 软件包

总下载量:47 k
安装大小:64 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : tftp-server-5.2-22.el7.x86_64                                             1/1
  验证中      : tftp-server-5.2-22.el7.x86_64                                             1/1

已安装:
  tftp-server.x86_64 0:5.2-22.el7

完毕!

6.将/guangpan/isolinux/下的所有文件复制到/var/lib/tftpboot/目录下

[root@server ~]# cp /guangpan/isolinux/* /var/lib/tftpboot/

7.将/usr/share/syslinux/pxelinux.0文件复制到/var/lib/tftpboot/目录下

[root@server ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

8.在/var/lib/tftpboot/目录下创建pxelinux.cfg目录

[root@server ~]# cd /var/lib/tftpboot/
[root@server tftpboot]# mkdir pxelinux.cfg

9.将/var/lib/tftpboot/isolinux.cfg文件复制到/var/lib/tftpboot/pxelinux.cfg/目录下并起名为default

[root@server tftpboot]# cp isolinux.cfg pxelinux.cfg/default

10.修改/var/lib/tftpboot/pxelinux.cfg/default文件内容

[root@server ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
  • 修改前

在这里插入图片描述
在这里插入图片描述

  • 修改后

在这里插入图片描述
在这里插入图片描述

default vesamenu.c32
timeout 200

display boot.msg

# Clear the screen when exiting the menu, instead of leaving the menu displayed.
# For vesamenu, this means the graphical background is still displayed without
# the menu itself for as long as the screen remains in graphics mode.
menu clear
menu background splash.png
menu title Red Hat Enterprise Linux 7.9
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13

# Border Area
menu color border * #00000000 #00000000 none

# Selected item
menu color sel 0 #ffffffff #00000000 none

# Title bar
menu color title 0 #ff7ba3d0 #00000000 none

# Press [Tab] message
menu color tabmsg 0 #ff3a6496 #00000000 none

# Unselected menu item
menu color unsel 0 #84b8ffff #00000000 none

# Selected hotkey
menu color hotsel 0 #84b8ffff #00000000 none

# Unselected hotkey
menu color hotkey 0 #ffffffff #00000000 none

# Help text
menu color help 0 #ffffffff #00000000 none

# A scrollbar of some type? Not sure.
menu color scrollbar 0 #ffffffff #ff355594 none

# Timeout msg
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 none

# Command prompt text
menu color cmdmark 0 #84b8ffff #00000000 none
menu color cmdline 0 #ffffffff #00000000 none

# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.

menu tabmsg Press Tab for full configuration options on menu items.

menu separator # insert an empty line
menu separator # insert an empty line

label linux
  menu label ^Install Red Hat Enterprise Linux 7.9 huazi
  menu default
  kernel vmlinuz
  append initrd=initrd.img repo=http://172.25.254.10/guangpan ks=http://172.25.254.10/ks.cfg quiet

label check
  menu label Test this ^media & install Red Hat Enterprise Linux 7.9
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.9\x20Server.x86_64 rd.live.check quiet

menu separator # insert an empty line

# utilities submenu
menu begin ^Troubleshooting
  menu title Troubleshooting

label vesa
  menu indent count 5
  menu label Install Red Hat Enterprise Linux 7.9 in ^basic graphics mode
  text help
        Try this option out if you're having trouble installing
        Red Hat Enterprise Linux 7.9.
  endtext
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.9\x20Server.x86_64 xdriver=vesa nomodeset quiet

label rescue
  menu indent count 5
  menu label ^Rescue a Red Hat Enterprise Linux system
  text help
        If the system will not boot, this lets you access files
        and edit config files to try to get it booting again.
  endtext
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=RHEL-7.9\x20Server.x86_64 rescue quiet

label memtest
  menu label Run a ^memory test
  text help
        If your system is having issues, a problem with your
        system's memory may be the cause. Use this utility to
        see if the memory is working correctly.
  endtext
  kernel memtest

menu separator # insert an empty line

label local
  menu label Boot from ^local drive
  localboot 0xffff

menu separator # insert an empty line
menu separator # insert an empty line

label returntomain
  menu label Return to ^main menu
  menu exit

menu end

11.重启httpd,dhcpd,tftp服务并设置开机自启动

[root@server ~]# systemctl enable --now httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@server ~]# systemctl enable --now dhcpd   
[root@server ~]# systemctl enable --now tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.

12.关闭client端的光盘启动

在这里插入图片描述

13.在VM中的client打开电源时进入固件设置BIOS为网卡启动

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试

  • 我们可以看到我们自己设置的停留界面标志
    在这里插入图片描述
  • 之后我们什么都不用管,等待系统自己安装好就算大功告成了
  • 安装成功后,我们进入系统

在这里插入图片描述

  • 查看系统的ip地址
    在这里插入图片描述
  • 使用mobaxterm连接上去,发现有我们脚本里创建的文件,设置的静态ip,创建的本地yum仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

PXEPreboot eXecution Environment,预启动执行环境)网络中,syslinux扮演了关键角色。syslinux是一个功能强大的引导加载程序,它支持多种启动介质,包括网络、硬盘、U盘等。在PXE环境中,syslinux通过其提供的pxelinux.0程序,使得客户机能够通过网络远程服务器下载引导镜像,并加载安装文件整个操作系统

syslinuxPXE中的作用

  1. 提供引导程序

    • syslinux安装后,会生成pxelinux.0文件,这个文件是PXE启动过程中的关键引导程序。当客户机通过PXE启动时,它会从DHCP服务器获取TFTP服务器的地址,并从TFTP服务器上下载pxelinux.0文件。
  2. 配置启动选项

    • 除了pxelinux.0文件外,syslinux还允许用户配置启动菜单,即pxelinux.cfg目录下的配置文件(如default)。这些配置文件指定了客户机启动时需要加载的内核文件(vmlinuz)、系统启动镜像文件(initrd.img)等,以及启动参数。
  3. 简化安装过程

    • 通过syslinuxPXE的结合,可以实现操作系统的无人值守安装。管理员只需配置好启动菜单和相应的安装文件,客户机在启动时就会自动从网络下载这些文件,并完成操作系统的安装。

syslinuxPXE环境的集成

PXE环境中,syslinux通常与DHCP服务器TFTP服务器FTP/HTTP服务器一起工作,以实现操作系统的远程安装。以下是它们之间的基本交互流程:

  1. DHCP服务器

    • 客户机启动后,首先会查找网络中的DHCP服务器,以获取IP地址、子网掩码、默认网关等网络参数。
    • DHCP服务器还会告诉客户机TFTP服务器的地址以及需要下载的引导程序文件名(pxelinux.0)。
  2. TFTP服务器

    • 客户机根据DHCP服务器提供的信息,从TFTP服务器上下载pxelinux.0文件。
    • 接着,客户机会继续从TFTP服务器上下载pxelinux.cfg目录下的配置文件(如default),以及内核文件(vmlinuz)和系统启动镜像文件(initrd.img)。
  3. FTP/HTTP服务器

    • 对于大型的安装文件(如完整的操作系统镜像),通常会通过FTPHTTP服务器进行传输。
    • 客户机在获取到必要的引导文件和配置文件后,会从FTP/HTTP服务器上下载这些大型文件,以完成操作系统的安装。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dbeaver 导入sql 报错,ERROR 2059 (HY000)

dbeaver 导入sql 报错。 C:\Users\admin\AppData\Roaming\DBeaverData\drivers\clients\mysql\win\mysql.exe --default-character-setutf8mb4 -u root --host222.85.214.245 --port11076 res_protect Task ‘MySQL script’ started at Wed Aug 07 16:31:58 CST 2024 ERROR 2…

【c++】基础知识——快速入门c++

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C 目录 前言 一、手搓一个Hello World 二、命名空间namespace 1.命名空间的定义 2.命名空间的使用 3.命名空间补充知识 三、c中的输入和输出 四、缺省参…

哈哈哈日记

最近真的没有什么灵感更新&#xff0c;大家都在更啥呀!我就像天气一样时好时坏的&#xff0c;嘴上每天都是“好想死”&#xff0c;但是身体稍微有点不舒服立马就去看医生&#xff0c;委屈了啥都不能委屈自己&#xff0c;2块钱的矿泉水舍不得买&#xff0c;35一杯的咖啡我倒是看…

Pygame制作简单的跑酷游戏

今天我们来看看如何使用Pygame框架制作一个简单的跑酷游戏。这个游戏包含了基本的游戏元素,如玩家角色、障碍物、背景、音效等,可以作为入门Pygame游戏开发的一个不错的示例。 游戏概述 这是一个简单的横版跑酷游戏,玩家控制一个忍者角色,通过跳跃来躲避迎面而来的各种障碍物…

C++设计模式(代理模式)

1. 电话虫 在海贼中&#xff0c;有一种神奇的通信工具叫做电话虫&#xff08;Den Den Mushi&#xff09;&#xff0c;外形如蜗牛&#xff0c;身上带有斑点或条纹或通体纯色&#xff0c;壳顶上有对讲机或按键&#xff0c;不接通时会睡觉&#xff0c;接通时会惊醒&#xff0c;并发…

bpmn简单使用(制作流程图)

1、先下载依赖&#xff0c;下面是我下载的版本 "bpmn-io/properties-panel": "^3.23.0", "bpmn-js": "^17.9.1", "bpmn-js-properties-panel": "^5.6.1", "camunda-bpmn-moddle": "^7.0.1",…

【鸿蒙开发基础学习】HSP-应用程序包开发与使用

HSP - 应用程序包开发与使用 HSP HSP&#xff08;Harmony Shared Package&#xff09;是动态共享包&#xff0c;可以包含代码、C库、资源和配置文件&#xff0c;通过HSP可以实现代码和资源的共享。HSP不支持独立发布&#xff0c;而是跟随其宿主应用的APP包一起发布&#xff0…

【开端】web系统中返回状态码组织管理

一、绪论 http web系统接口返回状态码有很多中&#xff0c;包括行业内定的状态码 &#xff0c;比如200 表示成功&#xff0c;500表示服务器系统不可用&#xff0c;但是有包含很多业务上自定义的状态码。比如阿里&#xff0c;腾讯这些公司的产品会定义很多自己公司产品的状态码…

Spring全家桶(三):Spring AOP

Spring AOP面向切面编程 1.面向切面编程思维&#xff08;AOP&#xff09; 1.1.面向切面编程思想AOP AOP&#xff1a;Aspect Oriented Programming面向切面编程 AOP可以说是OOP&#xff08;Object Oriented Programming&#xff0c;面向对象编程&#xff09;的补充和完善。O…

宝塔+acme.sh 使用https请求

安装acme.sh curl https://get.acme.sh | sh -s emailmyexample.com [记得修改邮箱]安装后的路径 /root/.acme 设置别名 alias acme.sh~/.acme.sh/acme.sh 运行 source ~/.bashrc 或者打开~/.bashrc文件&#xff0c;输入要设置的alias命令&#xff0c;保存&#xff0c;然后运行…

mysql case when用法

目录 一&#xff1a;概述 二&#xff1a;使用场景 一&#xff1a;概述 CASE WHEN 是 SQL 中的一个条件表达式&#xff0c;用于在 SQL 查询中实现条件逻辑。它类似于编程语言中的 if-else 或 switch 语句。通过使用 CASE WHEN&#xff0c;你可以在执行查询时根据条件对结果进行…

全网最全的设计效率工具?设计师的最佳助手!

身为设计师的你&#xff0c;是不是下载的素材堆积如山&#xff0c;用时却得在文件夹里层层翻找。在PS&#xff0c;Figma等不同的设计软件里做好的效果样式和工程&#xff0c;想要整理和再次使用很麻烦。不过&#xff0c;现在有了千鹿设计助手&#xff0c;提供一系列适合设计师的…

系统编程-02进程间通信

目录 1、管道 2、消息队列 &#xff08;1&#xff09;ftock()--创建IPC的键值KEY &#xff08;2&#xff09;获取消息队列ID &#xff08;3&#xff09;发送和接收消息 &#xff08;4&#xff09;设置或者获取消息队列的相关属性 3、共享内存 &#xff08;1&#xff09…

14.Spring程序部署-Linux部署

文章目录 1. 打包项目2. linux中删除mariadb&#xff0c;下载mysql3. .yml配置文件4.xshell中部署项目1)首先先在Linux中创建一个新的文件夹2)进入刚创建的文件夹&#xff0c;并将刚打包好的.jar包文件拖进来3)进入Linux中的mysql&#xff0c;并建库建表4)启动程序5)Linux服务器…

使用Anaconda安装多个版本的Python并与Pycharm进行对接

1、参考链接 Anaconda安装使用教程解决多Python版本问题_anaconda安装多个python版本-CSDN博客 基于上面的一篇博客的提示&#xff0c;我做了尝试。并在Pycharm的对接上做了拓展。 2、首先安装Anaconda 这个比较简单&#xff0c;直接安装即可&#xff1a; 3、设置conda.exe的…

筑牢企业防线,打造高效员工行为管控体系!行为管控软件分享,老板的智慧之选!

商贾之道&#xff0c;在于治事有序&#xff0c;人心齐整。有言曰&#xff0c;防身立命&#xff0c;先固其本。企业之基&#xff0c;在于人心与秩序。 行为管控软件乃老板之智慧&#xff0c;企业之福音也&#xff01;本文将以安企神行为管控软件为例&#xff0c;探讨如何借助这…

人工智能在肿瘤免疫微环境领域的研究进展|顶刊速递·24-08-07

小罗碎碎念 2024-08-07 今天这期推文的主题是——人工智能在肿瘤免疫微环境领域的研究进展。 第三、五、六篇文献在06-02的推文中介绍过&#xff0c;但是考虑到知识体系的完整性&#xff0c;同时方便大家补充这一部分的临床知识&#xff0c;所以再次把这三篇文章收纳进来。 我…

进程状态(三)----- linux 中具体的进程状态(下)

目录 前言1. T && t 状态2. X 与 Z 状态3. 孤儿进程 前言 继上一篇文章 进程状态&#xff08;二&#xff09;----- linux 中具体的进程状态&#xff08;上&#xff09; 介绍了 linux 系统中具体的 R、S、D 状态&#xff0c;而这篇文章继续介绍 linux 系统中剩下的三种…

【hbz分享】-springboot启动时做了哪些事情

spring启动类启动时的流程 先调用SpringApplication完成一系列初始化操作 先把启动类保存起来&#xff0c;就是带有main函数的那个类&#xff0c;把这个保存起来保存应用类型&#xff0c;是Servlet还是Ractive通过getSpringFactoriesInstances(BootstrapRegistryInitializer.…

<数据集>战斗机识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;7903张 标注数量(xml文件个数)&#xff1a;7903 标注数量(txt文件个数)&#xff1a;7903 标注类别数&#xff1a;43 标注类别名称&#xff1a;[F16, Mig31, F35, F18, SR71, A10, A400M, AG600, J20, F4, C17, Tor…