PXE网络批量装机

news2025/1/31 10:50:23

目录

一、什么是PXE?

二、PXE(Preboot Execution Environment)的主要组件

1、PXE服务器(PXE Server)

2、DHCP服务器(Dynamic Host Configuration Protocol Server)

3、TFTP服务器(Trivial File Transfer Protocol Server)

4、FTP服务器(File Transfer Protocol Server)

5、 PXE客户端(PXE Client)

三、PXE的优点

四、PXE的应用场景

五、配置PXE装机

(一)手动进行安装

1、基础环境配置

1)关闭防火墙以及开机自启

2)关闭SELinux以及开机自启

3)关闭图形化网络工具以及开机自启

4)配置静态网络 

5)重启网络

2、配置yum源

3、安装FTP

4、安装DHCP

5、安装TFTP 

6、 安装SELinux

7、创建default文件

8、进行装机测试

1)新建虚拟机                                                     2)不导入镜像,点击下一步

3)选择安装系统                                                 4)给虚拟机命名,点击下一步

5)给予内存用量大小                                          6)完成新建

7)与DHCP那台机器处于同一网段                     8)开启虚拟机即可,出现这个不用管,点是就行

9)出现这个界面点击回车                                  10)根据流程完成安装即可

(二)Kickstart无人值守+PXE装机

1、什么是Kickstart?

2、Kickstart的优点

3、Kickstart的应用场景

4、Kickstart+PXE实际应用案例

1)安装system-config-kickstart,使用图形界面配置

2)配置文件位置 

3)进入图形界面

4)更改配置文件

5)进行装机检测

总结


一、什么是PXE?

        PXE(Preboot Execution Environment)是一种远程网络安装操作系统的方法。它通过网络引导和远程控制技术,允许用户在没有本地存储介质(如硬盘或光盘)的情况下,通过网络进行引导和加载操作系统。PXE技术允许计算机在启动时通过网络请求并获取所需的引导文件和操作系统镜像,以实现远程安装和启动操作系统的功能。

        PXE技术的基本原理是,当计算机启动时,它会发送一个特殊的网络请求,称为DHCP请求,以获取IP地址和其他网络配置信息。其中包含了一个PXE相关的选项,告诉DHCP服务器计算机希望通过网络引导。DHCP服务器响应请求并提供所需的IP地址、TFTP服务器地址和其他配置信息。

        接下来,计算机通过TFTP(Trivial File Transfer Protocol)从PXE服务器上下载引导文件和配置文件。引导文件告诉计算机如何进一步加载操作系统镜像,并指示它从哪里下载镜像文件。计算机通过TFTP下载镜像文件,并在本地存储器(如内存)中加载和运行操作系统。

        PXE技术广泛用于企业、学校等需要大规模部署和管理计算机的场景。它提供了一种便捷、快速、集中和自动化的方法,远程安装和启动操作系统,减少了物理介质的使用和手动操作的成本和工作量。

二、PXE(Preboot Execution Environment)的主要组件

1、PXE服务器(PXE Server)

       PXE服务器提供了引导所需的各种服务和资源。它通常由DHCP服务器、TFTP服务器和FTP服务器组成。

2、DHCP服务器(Dynamic Host Configuration Protocol Server)

       DHCP服务器是PXE网络中的重要组件,它负责为客户端分配IP地址和其他网络配置信息,如网关、子网掩码等。通过DHCP服务器,PXE客户端可以获取到PXE启动所需的引导文件和相关信息。

3、TFTP服务器(Trivial File Transfer Protocol Server)

       TFTP服务器主要用于传输PXE启动所需的引导文件和相关配置文件。PXE客户端通过TFTP服务器下载这些文件,以进行远程安装操作系统。

4、FTP服务器(File Transfer Protocol Server)

       FTP服务器用于存储和传输安装镜像文件和其他安装资源。PXE客户端可以通过FTP服务器下载操作系统的镜像文件,以进行安装。

5、 PXE客户端(PXE Client)

       PXE客户端是远程安装操作系统的目标设备,它通过PXE网络进行引导和安装。PXE客户端需要支持PXE协议,并正确配置引导顺序,以从网络中获取引导文件和安装资源。

       综上所述,PXE的主要组件包括PXE服务器(包括DHCP服务器、TFTP服务器和FTP服务器)以及PXE客户端。它们共同协作,实现了远程网络安装操作系统的功能。

三、PXE的优点

       1、省时省力:PXE允许通过网络远程引导和安装操作系统,省去了手动制作光盘或USB等安装介质的繁琐步骤,节省了时间和人力成本。

       2、高效批量部署:PXE网络批量装机能够同时在多台计算机上进行远程操作系统安装,适用于大规模部署和管理计算机的场景,如企业、学校、实验室等。

       3、灵活性和易于更新:通过PXE,可以轻松地在网络上更新操作系统镜像和配置文件,使得操作系统的维护和更新更加灵活和方便。

       4、中心化管理:PXE服务器的设置和配置可以实现集中管理,统一控制操作系统的安装和部署,提高管理效率和一致性。

四、PXE的应用场景

       1、IT部门:企业的IT部门可以使用PXE来进行远程操作系统的部署和更新,快速批量安装和配置新的计算机,或者修复故障系统。

       2、教育机构:学校、培训机构等教育机构可以利用PXE来进行学生机房的操作系统统一部署和管理,方便教学和实验环境的建设。

       3、实验室环境:科研机构、实验室等研究单位可以使用PXE来搭建实验环境,方便远程操作系统的加载和配置,以及实验数据的收集和管理。

       4、虚拟化环境:在虚拟化环境中,PXE可以实现自动化的虚拟机部署和启动,提高资源利用效率和管理便捷性。

       除了上述应用场景外,还有很多可以用到PXE装机。

五、配置PXE装机

(一)手动进行安装

本文采用FTP的方式进行批量装机测试

1、基础环境配置

1)关闭防火墙以及开机自启

systemctl stop firewalld && systemctl disable firewalld

2)关闭SELinux以及开机自启

setenforce 0
vim /etc/selinux/config 

将SELINUX=enabled改为SELINUX=disabled

3)关闭图形化网络工具以及开机自启

systemctl stop NetworkManager && systemctl disable NetworkManager

4)配置静态网络 

vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.111.254
PREFIX=24

注: 这里配置不需要给网关以及DNS。

5)重启网络

systemctl restart network
ip a

2、配置yum源

cd /etc/yum.repos.d/
ls

 创建备份目录进行备份(我们这里使用本地源就可以)

mkdir backup
yum.repos.d]# mv CentOS-* backup/
vim local.repo 
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0

进行挂载

mount /dev/sr0 /mnt/

3、安装FTP

yum install -y vsftpd 

启动FTP

systemctl start vsftpd

拷贝系统文件

mkdir /var/ftp/centos7
cp -r /mnt/* /var/ftp/centos7/
sync

 注:这里可以先创建目录,然后将光盘文件挂载至目录下,这样无需进行拷贝 

命令解析:

       sync命令是一个Linux/Unix命令,用于强制将缓冲区中的数据写入磁盘中,以确保数据的持久性存储。

       当我们对文件进行修改时,操作系统会将修改的数据先存储在内存的缓冲区中,而不是直接写入磁盘。这样可以提高数据访问的速度。但是,在某些情况下(如系统关机、崩溃等),缓冲区中的数据可能会丢失。为了避免这种情况发生,我们可以使用sync命令将缓冲区中的数据强制刷新到磁盘上。

       执行sync命令后,操作系统会将所有待写入磁盘的数据立即进行刷新,同时还会将文件系统的元数据(如inode表、目录结构等)更新到磁盘。这样可以确保在意外断电等情况下,文件系统不会损坏或数据丢失。

       一般来说,当我们要关机之前,建议先执行sync命令,以确保所有修改过的文件都被持久化到磁盘上,从而保证数据的完整性和一致性。 

4、安装DHCP

yum install -y dhcp

配置DHCP

原/etc/dhcp/dhcpd.conf 配置文件下没有内容,这里我们需要将配置文件拷贝过来

cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
vim /etc/dhcp/dhcpd.conf

注释:27~28行、32~35行、41-44行 ,更改如下行(需要复制,删除前面行数):

 47 subnet 192.168.111.0 netmask 255.255.255.0 {
 48   range 192.168.111.10 192.168.111.253;
 49   #option domain-name-servers ns1.internal.example.org;
 50   #option domain-name "internal.example.org";
 51   option routers 192.168.111.254;
 52   option broadcast-address 192.168.111.255;
 53   default-lease-time 600;
 54   max-lease-time 7200;
 55   filename "pxelinux.0";
 56   next-server 192.168.111.254;
 57 }

内容解析:

47行 subnet 192.168.111.0 netmask 255.255.255.0 :定义了一个子网,其网络地址为192.168.111.0,子网掩码为255.255.255.0。

48行 range 192.168.111.10 192.168.111.253 :指定了DHCP服务器可以分配的IP地址范围,从192.168.111.10到192.168.111.253。

51行 option routers 192.168.111.254 :指定了默认网关(路由器)的IP地址,即192.168.111.254。

52行 option broadcast-address 192.168.111.255 :指定了广播地址,即该子网下所有设备都会收到的广播消息的目标地址。

53行 default-lease-time 600 :指定了租约的默认时间,即分配的IP地址的有效期,单位为秒。

54行 max-lease-time 7200 :指定了租约的最大时间,即分配的IP地址的最大有效期,单位为秒。

55行 filename "pxelinux.0" :指定了PXE引导文件的名称,此处为"pxelinux.0"。

56行 next-server 192.168.111.254 :指定了TFTP服务器(即PXE服务器)的IP地址,这是PXE客户端下载引导文件和配置文件的服务器。

在上述配置中,还有两行被注释掉(以#开头)的选项,分别是DNS服务器和域名的设置,即可选的DNS解析服务器和域名信息。根据实际需求,可以取消注释并修改相应的配置信息。 

启动服务

systemctl start dhcpd

5、安装TFTP 

yum install -y xinetd
yum install -y tftp-server

 配置TFTP

vim /etc/xinetd.d/tftp 

将disable改为no 

 启动服务

systemctl start tftp

6、 安装SELinux

yum install -y syslinux 

  • 准备pxelinx.0文件、引导文件、内核文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
cd /mnt/images/pxeboot/
ls

cp initrd.img vmlinuz /var/lib/tftpboot/

7、创建default文件

mkdir /var/lib/tftpboot/pxelinux.cfg
cd /var/lib/tftpboot/pxelinux.cfg/
vim default
default auto
prompt 1
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.111.254/centos7

内容解析:

default auto:指定默认引导菜单选项为"auto",即自动引导到"auto"标签定义的操作。

prompt 1:在引导菜单中显示提示符(例如"boot:"),1为等待用户输入。0为不等待

label auto:定义了一个名为"auto"的引导标签,即引导菜单中的一个选项。

kernel vmlinuz:指定内核文件的名称为"vmlinuz",该文件是操作系统内核的可执行文件。

append initrd=initrd.img method=ftp://192.168.44.128/centos7:指定了内核启动参数的选项。其中initrd=initrd.img指定了初始化内存盘镜像的名称为"initrd.img",method=ftp://192.168.44.128/centos7则指定了远程FTP服务器上的CentOS 7操作系统镜像的路径,用于安装操作系统。

整体上,该配置文件定义了一个引导标签"auto",并指定了引导到该标签时所需的内核文件和启动参数。在实际使用中,PXE客户端将根据此配置文件进行引导,并根据所选的标签执行相应的操作,例如安装指定路径下的CentOS 7操作系统。 

8、进行装机测试

1)新建虚拟机                                                     2)不导入镜像,点击下一步

3)选择安装系统                                                 4)给虚拟机命名,点击下一步

5)给予内存用量大小                                          6)完成新建

7)与DHCP那台机器处于同一网段                     8)开启虚拟机即可,出现这个不用管,点是就行

 

9)出现这个界面点击回车                                  10)根据流程完成安装即可

 

这里已经可以看到,安装源位置

(二)Kickstart无人值守+PXE装机

1、什么是Kickstart?

        Kickstart是一种自动化安装工具,用于在Linux系统上进行无人值守的操作系统安装和配置。它最初由Red Hat开发,并成为Red Hat Enterprise Linux(RHEL)和CentOS等Linux发行版的标准安装方式。
        使用Kickstart,可以通过编辑一个Kickstart文件来定义安装过程中的各种配置选项,例如分区设置、软件包选择、网络设置、用户账号等。而不需要在每台计算机上手动进行交互式安装,从而节省了时间和人力资源。
        Kickstart文件可以通过网络进行传输,或者从ISO镜像或USB设备中加载。在安装过程中,Kickstart文件将自动读取并应用其中的配置选项,从而实现完全自动化的安装过程。

2、Kickstart的优点

1)提高效率:通过自动化安装和配置过程,节省了大量的人力资源和时间成本。同时也避免了手动操作可能带来的错误。

2)统一配置:Kickstart提供了统一的配置方式,可以确保所有安装的系统具有相同的配置,避免了人为因素导致的配置差异。

3)灵活性:Kickstart文件可以根据实际需求进行定制,灵活地选择软件包、分区设置、网络配置等。同时,可以使用脚本和命令来自定义安装过程中的特定操作。

4)可扩展性:Kickstart支持通过网络传输配置文件,也可以将配置文件打包到ISO镜像或USB设备中。这使得在不同环境下使用Kickstart更加方便。

综上所述,Kickstart在大规模部署和自动化环境搭建方面具有重要的应用价值,并带来了高效、一致和可靠的系统安装和配置。

3、Kickstart的应用场景

       Kickstart的应用场景包括但不限于以下几个方面:

1)批量服务器部署:Kickstart可以帮助快速部署大量服务器,特别是在需要统一配置的情况下。通过预先定义好Kickstart文件,可以在无人值守的情况下进行批量安装,大大提高了效率。

2)自动化测试环境搭建:在软件开发过程中,经常需要搭建多台测试环境,而且这些环境的配置可能相似或者完全相同。Kickstart可以简化测试环境的搭建过程,通过一次定义好Kickstart文件后,可以自动化地搭建多个相同配置的测试环境。

3)恢复和故障排除:在系统崩溃或需要重装的情况下,Kickstart可以帮助快速恢复系统。只需准备好Kickstart文件,重启系统并指定Kickstart文件的位置,即可自动化地重新安装和配置系统。

4、Kickstart+PXE实际应用案例

本次实验是基于上面装机的案例进行的

1)安装system-config-kickstart,使用图形界面配置

yum install -y system-config-kickstart

2)配置文件位置 

vim /root/anaconda-ks.cfg

注:这里我们需用从配置文件中摘选一下内容进行后续操作( ks.cfg ),不对配置文件进行更改。 

%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@development
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
%end

3)进入图形界面

system-config-kickstart

更改如下位置内容 

 

 

注:在全部配置完毕后再次对内容进行检查,确保无遗漏。而后保存!!!

 

注:再没有进行保存前千万不要点击x,不然准备重新配置一遍内容吧!!!

存到/root/下就行,名称可以不用更改,保持默认即可

4)更改配置文件

在配置完毕后进行更改配置文件 (  /root/anaconda-ks.cfg  )

vim /root/ks.cfg

在配置文件最下放插入上面拷贝出来的内容 

%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@development
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
%end

cp /root/ks.cfg /var/ftp
vim /var/lib/tftpboot/pxelinux.cfg/default 
default auto
prompt 0
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.111.254/centos7 ks=ftp://192.168.111.254/ks.cfg

5)进行装机检测

 

注: 等待自动安装完成后,自动重启即可,全程无需手动操作,除了手动点击开机

总结

       PXE装机是一种通过网络进行远程安装操作系统的方法。它通过配置PXE服务器和正确设置引导顺序,实现了在没有安装介质的情况下远程安装操作系统的功能。PXE装机具有方便快捷、灵活性高和易于维护的优点,适用于需要批量安装操作系统的场景。通过了解和掌握PXE装机的原理和步骤,用户可以在多台计算机上轻松地进行批量安装操作系统的工作。

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

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

相关文章

信号完整性分析基础知识之有损传输线、上升时间衰减和材料特性(四):有损传输线建模

传输线中信号衰减的两个损耗过程是通过信号和返回路径导体的串联电阻以及通过有损耗介电材料的分流电阻。这两个电阻器的电阻都与频率相关。 值得注意的是,理想电阻器的电阻随频率恒定。我们已经证明,在理想的有损传输线中,用于描述损耗的两个…

CAD 中Spline(样条曲线)的创建

我把自己研究的流程留下,读者需慢慢探索: Polyline pl new Polyline(); pl.AddVertexAt(0, new Point2d(2, 2), 0, 0, 0); pl.AddVertexAt(1, new Point2d(5, 5), 0, 0, 0); pl.AddVertexAt(2, new Point2d(10, 3), 0, 0, 0); pl.AddVertexAt(3, new Point2d(15, …

uniapp 布局(自定义导航栏加固定高度的主要内容)

不想让整体页面出现滚动条 页面大致分为三部分,导航栏、主题内容、tabbar,不想让整个页面出现滚动条,只想让主要内容滚动。 我这里是直接用了uni.getSystemInfoSync(),整体分为两部分,自定义头部和滚动内容&#xff…

UE5- c++ websocket客户端写法

# 实现目标 ue5 c 实现socket客户端,读取服务端数据,并进行解析 #实现步骤 {projectName}.Build.cs里增加 "WebSockets","JsonUtilities", "Json"配置信息,最终输出如下: using UnrealBuildTool;…

【SpringSecurity】九、Base64与JWT

文章目录 1、base64编码2、Base64Url3、JWT的产生背景4、JWT介绍5、JWT组成5.1 Header5.2 Payload5.3 Signature 6、JWT的使用方式7、JWT的几个特点 1、base64编码 base64是一种编码方式,不是加密方式。 所谓Base64,就是说选出64个字符:小写…

LNMP 平台搭建(四十)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 搭建LNMP 一、安装Nginx 二、安装Mysql 三、安装PHP 四、部署应用 前言 LNMP平台指的是将Linux、Nginx、MySQL和PHP(或者其他的编程语言,如…

【Apollo学习笔记】——规划模块TASK之SPEED_BOUNDS_PRIORI_DECIDER

文章目录 前言SPEED_BOUNDS_PRIORI_DECIDER功能简介SPEED_BOUNDS_PRIORI_DECIDER相关配置SPEED_BOUNDS_PRIORI_DECIDER流程将障碍物映射到ST图中ComputeSTBoundary(PathDecision* path_decision)ComputeSTBoundary(Obstacle* obstacle)GetOverlapBoundaryPointsComputeSTBounda…

视觉化洞察:为什么我们需要数据可视化?

为什么我们需要数据可视化?这个问题在信息时代变得愈发重要。数据,如今已成为生活的一部分,我们每天都在产生大量的数据,从社交媒体到购物记录,从健康数据到工作表现,数据无处不在。然而,数据本…

uniapp项目实践总结(五)自定义底部导航栏

在底部导航栏这个模块,很多时候默认的样式不符合我们的设计规范和需求,因此需要自定义底部导航栏,这样可以满足我们的需求,也可以更加个性化,增加用户体验,下面就介绍如何自定义底部导航栏。 目录 准备导航素材配置页面导航自定义导航栏准备导航素材 要自定义底部导航栏…

HTML基础--标签

目录 列表标签 有序列表 type属性 有序列表嵌套 无序列表 type属性 无序列表嵌套 常见应用场景 表格标签 表格展示效果 表格属性 表格单元格合并 单元格合并属性 列表标签 HTL作为构建网页内容的标记语言,提供了多种列表标签,用于在网页中展…

栈和队列(优先级队列)

一)删除字符串中所有相邻字符的重复项 1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode) 算法原理:栈结构模拟,只是需要遍历所有字符串中的字符,一次存放到栈里面即可,也是可以使用数组来模拟一个栈结构的: class…

工厂人员作业行为动作识别检测算法

工厂人员作业行为动作识别检测算法通过yolov7python深度学习算法框架模型,工厂人员作业行为动作识别检测算法实时识别并分析现场人员操作动作行为是否符合SOP安全规范流程作业标准,如果不符合则立即抓拍告警提醒。Python是一种由Guido van Rossum开发的通…

2023-08-31 打印IEEE标准的 float 符号位, 阶码位, 尾数位

老林的C语言新课, 想快速入门点此 <C 语言编程核心突破> 打印IEEE标准的float符号位, 阶码位, 尾数位 前言一、实现算法二、实现代码总结 前言 学过深入理解计算机系统的同学, 都知道float的实现方式, 按照IEEE标准, 由符号位, 阶码位, 尾数位组成, 本文给出一个代码, …

山海炮性能版售价25.88万元,越来越野

8月25日&#xff0c;长城炮全性能家族霸屏成都车展。作为领衔车型、长城炮旗下大型高性能豪华皮卡——山海炮性能版&#xff0c;全球首秀&#xff0c;以“更大、更强、更豪华”的极致实力&#xff0c;携光而至&#xff0c;成就中国最强硬派越野皮卡。 个性化定制共创新品2023款…

【Linux】0基础从获取docker,一步一步到部署PaddleSpeech

一、利用VMware安装ubuntu 1.安装VMware 具体操作详细安装VMware的方式 另外附部分VMware密匙 4A4RR-813DK-M81A9-4U35H-06KND NZ4RR-FTK5H-H81C1-Q30QH-1V2LA JU090-6039P-08409-8J0QH-2YR7F 4Y09U-AJK97-089Z0-A3054-83KLA 4C21U-2KK9Q-M8130-4V2QH-CF810 MC60H-DWH…

机场数据安全三步走战略|盾见

2021年9月1日&#xff0c;《数据安全法》正式实施&#xff0c;标志着数据安全上升到国家层面&#xff0c;自此数据安全建设有法可依&#xff0c;规定了包括数据安全处理、建立健全各项制度、促进数据安全和发展、满足电子政务数据合理需求、保障国家安全等。 同一天&#xff0…

力扣奇遇记 [第二章]

&#x1f3ac; 博客主页&#xff1a;博主链接 &#x1f3a5; 本文由 M malloc 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;LeetCode刷题集&#xff01; &#x1f3c5; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指…

材料科学顶刊IF:29.4 |工程手段 干预细菌铁死亡

8月1日&#xff0c;凌恩生物客户四川大学邓怡及白丁等在《Advanced Materials》发表题为Engineered bio-heterojunction confers extra- and intracellular bacterial ferroptosis and hunger-triggered cell protection for diabetic wound repair的研究论文。该研究报道了一种…

ZooKeeper集群环境搭建

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 个人主页&#xff1a;beixi 本文章收录于专栏&#xff08;点击传送&#xff09;&#xff1a;【大数据学习】 &#x1f493;&#x1f493;持续更新中&#xff0c;感谢各位前辈朋友们支持…

函数名称add 与 add 作为参数传入的区别与探讨

在C和C中&#xff0c;函数名本身就是一个指向该函数代码的指针。因此&#xff0c;当你以函数名作为参数传递给其他函数时&#xff0c;实际上你传递的是该函数的地址。 对于你的代码&#xff0c;add是一个函数&#xff0c;&add是该函数的地址。由于add本身就代表了函数的地…