pxe高效网络批量装机

news2024/11/22 16:39:59

文章目录

  • 一, PXE远程安装服务
    • (一)三种系统装机的方式
    • (二)linux装机
      • 1. 加载 Boot Loader
      • 2. 加载启动安装菜单
      • 3. 加载内核和 initrd
      • 4. 加载根文件系统
      • 5. 运行 Anaconda 安装向导
    • (三)实现过程
    • (四)名词概念
      • 1. TFTP(Trivial File Transfer Protocol,简单文件传输协议)
        • 1.1 TFTP 的特点
      • 2. pxelinux.0
        • 2.1 pxelinux.0` 的作用
      • 3. xinetd
        • 3.1 xinetd` 的主要功能和特点:
      • 4. vmlinuz
        • 4.1 vmlinuz` 的作用
        • 4.2 获取和生成 `vmlinuz`
      • 5. pxelinux.cfg
      • 6. pxelinux.cfg
    • (五) 搭建步骤
      • 1. 配置网络
      • 2. 安装所需的软件包
      • 3.配置 DHCP 服务器
      • 4. 配置 TFTP 服务器
      • 5. 配置 PXE 引导文件
      • 6. 配置 FTP 服务器
      • 7. 验证服务状态
      • 8. 验证 PXE 引导配置
  • 二,Kickstart
    • (一)Kickstart 的工作原理
    • (二)Kickstart 文件结构
    • (三) Kickstart 文件关键部分
    • (四)使用Kickstart 进行安装
      • 优点
    • 运行流程图

一, PXE远程安装服务

  • 网络装机有时需要安装多台设备,可能是上百台,人工一台一台安装需要大量时间效率低下,所以有了需求批量安装,高效快速。
  • PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。
  • PXE不是一种安装方式,而是一种引导的方式,PXE 安装是需要安装的计算机中有一个能够帮,pxe运行的网卡,要有pxe的客户端,使计算机可以通过网络启动pxe。
  • pxe协议分为客户端和服务端,PXE客户端在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE 客户端调入内存执行,由 PXE客户端将放置在远端的文件通过网络下载到本地运行。
  • 运行 PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE客户端(要安装系统的主机)分配一个 IP ,由于是给 PXE客户端分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。
  • pxe优点是规模化:同时装配多台服务器自动化:安装系统、配置各种服务远程实现:不需要光盘、U盘等安装介质

(一)三种系统装机的方式

  1. 硬盘
  2. 光驱
  3. pxe

(二)linux装机

1. 加载 Boot Loader

  1. 作用:Boot Loader 它是一个小程序,它在操作系统内核运行之前运行。它的主要目的是初始化硬件设备,建立内存空间,并为操作系统内核准备好运行环境。
  2. 常见 Boot Loader:常见的 Boot Loader 包括 GRUB(GRand Unified Bootloader)和 LILO(Linux Loader)。

2. 加载启动安装菜单

  1. 展示启动选项:启动安装后,Boot Loader 会加载一个启动菜单。这通常包括多个选项:安装 Linux、检查安装介质的完整情况、从本地硬盘,光盘启动等。
  2. 用户选择:用户可以选择“安装 Linux”选项来继续安装过程。

3. 加载内核和 initrd

  1. 内核(Kernel):内核是操作系统的核心组件,负责管理系统资源和硬件设备的沟通。选择安装选项后,Boot Loader 会加载内核( vmlinuz 文件)。
  2. initrd(Initial RAM Disk):是一个包含最小化操作系统环境的临时根文件系统。它包含必要的驱动程序和工具,方便内核访问根文件系统,启动操作系统。

4. 加载根文件系统

  1. 根文件系统:在加载内核和 initrd 后,系统会加载实际的根文件。根文件包括了操作系统运行所需的文件和目录结构。
  2. 文件系统挂载:内核使用 initrd 中的工具和驱动程序挂载根文件系统(从硬盘或网络位置)。

5. 运行 Anaconda 安装向导

  1. 启动安装程序:加载根文件系统后,启动 Anaconda 安装向导。Anaconda 是 Red Hat 系统(如 RHEL、CentOS 和 Fedora)使用的安装程序。
  2. 安装向导步骤
    1. 选择语言:用户选择系统使用的语言
    2. 设置键盘布局:选择输入键盘的模式
    3. 配置网络:设置网络连接
    4. 选择安装源:选择操作系统安装文件的位置
    5. 分区硬盘:选择自动分区或手动分区,配置根分区、swap,home,boot等分区
    6. 选择软件包:选择要安装的软件包或软件包组
    7. 设置用户:设置 root 密码和创建普通用户
    8. 开始安装:确认所有设置并开始安装操作系统

(三)实现过程

  1. **网卡需要查找相关的dhcp服务器(获取地址时间) **
  2. **找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址 (dhcp不提供tftp服务) **
  3. **网卡使用tftp客户端吧引导程序加载到内存中来 **
  4. **bios执行引导程序 **
  5. **引导程序去TFTP去查找配置文件 **
  6. **根据配置文件去引导安装系统 **

系统安装过程

image.png

(四)名词概念

1. TFTP(Trivial File Transfer Protocol,简单文件传输协议)

**TFTP(Trivial File Transfer Protocol,简单文件传输协议)**是一种简化版的文件传输协议,常用于局域网中的文件传输。它的设计目的是提供一个非常轻量级的文件传输协议,适用于网络启动和小文件的传输。TFTP和FTP一个主要的区别就是它没有交互式,且不进行身份验证。

1.1 TFTP 的特点
  1. 简单性:TFTP 是一种简单的协议,易于实现和使用。它使用 UDP 作为传输层协议,不需要复杂的握手过程。
  2. 无身份验证:TFTP 没有内置的身份验证机制,因此适用于需要快速、轻量级文件传输的环境。
  3. 端口:TFTP 使用 UDP 端口 69 进行通信。
  4. 主要用途:TFTP 常用于网络设备的配置文件传输、系统引导文件传输(如 PXE 启动)以及嵌入式系统的固件升级。

2. pxelinux.0

**pxelinux.0** 是一个重要的组件,常用于通过网络启动计算机(PXE,Preboot eXecution Environment)。PXE 是一种通过网络加载和启动操作系统的技术,广泛应用于无盘工作站、嵌入式系统和大规模操作系统部署。pxelinux.0 是 SYSLINUX 项目的一部分,专门用于 PXE 启动。

2.1 pxelinux.0` 的作用

pxelinux.0 是一个 PXE 启动加载程序,它从网络服务器(通常是 TFTP 服务器)下载并执行,用于引导计算机进入操作系统安装或启动环境。其主要功能包括:

  1. 引导加载:从 TFTP 服务器下载内核和初始 RAM 文件系统(initrd),然后引导这些文件。
  2. 配置管理:通过读取配置文件(通常是 pxelinux.cfg 目录中的文件),决定引导过程中的选项和参数。
  3. 菜单系统:提供引导菜单,允许用户选择不同的启动选项或操作系统。

3. xinetd

**xinetd**,即扩展互联网守护进程(Extended Internet Daemon),是一个开放源码的超级服务器,用于管理基于互联网的服务。它是 inetd 的增强版本,提供了更强大的功能和灵活性,用于控制和管理各种网络服务。除了 TFTP,xinetd 还可以管理其他多种服务,如 Telnet、FTP 等

3.1 xinetd` 的主要功能和特点:
  1. 增强的安全性:提供基于时间、IP 地址、访问频率等多种条件的访问控制。
  2. 资源限制:可以设置每个服务的资源使用限制,如并发连接数、每个源 IP 的连接数等。
  3. 日志记录:提供详细的日志记录功能,可以记录每个服务的访问情况。
  4. 服务控制:可以轻松启用或禁用服务,而无需修改每个服务的配置文件。

4. vmlinuz

**vmlinuz** 是 Linux 内核的压缩可执行文件的名称。以下是关于 vmlinuz 的详细介绍,包括其作用、使用方式和相关的配置示例。

4.1 vmlinuz` 的作用
  1. Linux 内核vmlinuz 是 Linux 内核的可执行文件,它是系统启动时加载并运行的核心组件。vmlinuz 文件通常位于 /boot 目录下。
  2. 压缩:文件名中的 z 表示内核是经过压缩的,这样可以减少文件大小,加快加载速度。
  3. 启动过程:在系统启动过程中,bootloader(如 GRUB)会加载 vmlinuz 文件,并将其解压到内存中,开始执行内核代码。
4.2 获取和生成 vmlinuz

在大多数 Linux 发行版中,内核文件 vmlinuz 由包管理系统提供。例如,在 Debian 系统上,通过 apt-get 安装或更新内核包会自动更新 /boot/vmlinuz 文件。

5. pxelinux.cfg

pxelinux.cfg 是用于配置 PXE (Preboot eXecution Environment) 启动过程的配置文件目录。pxelinux.cfg 目录通常位于 TFTP 服务器的根目录下,包含一个或多个配置文件,这些配置文件定义了 PXE 客户端如何引导操作系统。

6. pxelinux.cfg

pxelinux.cfg 是用于配置 PXE (Preboot eXecution Environment) 启动过程的配置文件目录。pxelinux.cfg 目录通常位于 TFTP 服务器的根目录下,包含一个或多个配置文件,这些配置文件定义了 PXE 客户端如何引导操作系统。

(五) 搭建步骤

搭建 PXE 远程安装服务器需要的安装包
vsftpd 放置安装镜像,通过ftp访问镜像安装
dhcp.x86_64 12:4.2.5-7pd-3.0.2-27.el7.x86_64.r9.el7.centos 给客户机分配ip
syslinux-4.05-15.el7.x86_64.rpm 提供pxe的引导程序
tftp-server.x86_64 0:5.2-22.el7.rpm 提供引导镜像文件的下载
xinetd.x86_64 2:2.3.15-14.el7 托管tftp
system-config-kickstart.noarch 0:2.9.7-1.el7.rpm 无人值守安装

6a3407257b950e4e0df4315cada1a521_pxe-boot.png

1. 配置网络

检查并配置网络接口, ens35

cd /etc/sysconfig/network-scripts/
ls
cp ifcfg-ens33 ifcfg-ens35
vim ifcfg-ens35

ifcfg-ens35 的内容如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens35

DEVICE=ens35
ONBOOT=yes
IPADDR=192.168.101.100
NETMASK=255.255.255.0
#GATEWAY=192.168.72.2
#DNS1=8.8.8.8
#DNS2=61.147.37.1
~                   

重启网络服务并确保其已启用:

systemctl restart network
systemctl enable network

通过以下命令验证网络状态:

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dd:1e:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.72.20/24 brd 192.168.72.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::bcc8:ab8:f0b3:cdb1/64 scope link 
       valid_lft forever preferred_lft forever
3: ens35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:dd:1e:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.101.100/24 brd 192.168.101.255 scope global ens35
       valid_lft forever preferred_lft forever
    inet6 fe80::1542:e054:7995:6dd6/64 scope link 
       valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:4c:17:ee brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:4c:17:ee brd ff:ff:ff:ff:ff:ff

2. 安装所需的软件包

yum install -y vsftpd dhcp tftp-server xinetd syslinux

3.配置 DHCP 服务器

编辑 /etc/dhcp/dhcpd.conf 文件:

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

添加以下配置:

subnet 192.168.101.0 netmask 255.255.255.0 {
  range 192.168.101.40 192.168.101.80;地址池
  option domain-name-servers 8.8.8.8;网关
  option routers 192.168.101.100;
  next-server 192.168.101.100;指定tftp服务器的地址
  filename "pxelinux.0";指定pxe引导程序的文件名
}
ddns-update-style none;禁用动态 DNS 更新

启动并启用 DHCP 服务:

systemctl start dhcpd
systemctl enable dhcpd

4. 配置 TFTP 服务器

编辑 /etc/xinetd.d/tftp 文件:

vim /etc/xinetd.d/tftp

文件内容如下:

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes    表示客户机可以多台一起连接,yes表示客户机只能一台一台连接,表示是否开启多线程一起工作,否则需要等待
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot指定TFTP根目录(引导文件的存储路径) -c允许上传
        disable                 = no
        per_source              = 11     通过限制一个主机的最大连接数,从而防止某个主机独占某个服务,这里每个IP地址的连接数是11个
        cps                     = 100 2  表示服务器最多启动100个连接,如果达到这个数目将停止启动新服务2秒。在此期间不接受任何请求

        flags                   = IPv4
}

启动并启用 xinetd 服务:

systemctl start xinetd
systemctl enable xinetd

5. 配置 PXE 引导文件

创建必要的目录并复制 PXE 引导文件:

mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
mount /dev/sr0 /mnt
cp /mnt/images/pxeboot/vmlinuz /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/

创建并编辑 /var/lib/tftpboot/pxelinux.cfg/default 文件:

vim /var/lib/tftpboot/pxelinux.cfg/default

添加以下内容:

plaintext
default auto
prompt 1

label auto
    kernel vmlinuz
    append initrd=initrd.img method=ftp://192.168.101.100/centos7

label linux text
    kernel vmlinuz
    append text initrd=initrd.img method=ftp://192.168.101.100/centos7

label linux rescue
    kernel vmlinuz
    append rescue initrd=initrd.img method=ftp://192.168.101.100/centos7

启动并启用 TFTP 服务:

systemctl start tftp
systemctl enable tftp

6. 配置 FTP 服务器

创建 FTP 服务器目录并复制安装源:

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

启动并启用 vsftpd 服务:

systemctl start vsftpd
systemctl enable vsftpd

7. 验证服务状态

确保所有服务都在运行:

systemctl status dhcpd
systemctl status xinetd
systemctl status tftp
systemctl status vsftpd

8. 验证 PXE 引导配置

确保所有引导文件存在:

ls /var/lib/tftpboot/
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz
ls /var/ftp/centos7/
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL

二,Kickstart

Kickstart 是一个自动化安装工具,通常用于大规模部署 Red Hat Enterprise Linux (RHEL)、CentOS 和其他基于 Red Hat 的 Linux 发行版。它允许系统管理员通过预先配置的应答文件(kickstart 文件)自动化操作系统的安装过程,减少了手动干预的需求。

(一)Kickstart 的工作原理

Kickstart 文件是一个纯文本文件,包含了一系列的安装指令。安装过程中,系统读取这个文件并按照其中的指令执行安装。这些指令可以包括分区配置、包选择、网络配置、用户账户设置等。

(二)Kickstart 文件结构

Kickstart 文件ks.cfg

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$NdNHpAa4$SAgJwaPmH01iXzpt76AHe1
# Use network installation
url --url="ftp://192.168.101.100/centos7"
# System language
lang zh_CN
# Firewall configuration
firewall --disabled
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use text mode install
text
firstboot --disable
# SELinux configuration
selinux --disabled

# Network information
network  --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Asia/Seoul --isUtc
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=500
part swap --fstype="xfs" --size=4096
part /home --fstype="xfs" --size=4096
part / --fstype="xfs" --grow --size=1

%post --interpreter=/bin/bash
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
echo "[local]
name=local
baseurl=ftp://192.168.100.100/centos7
enabled=1
gpgcheck=0" > /etc/yum.repos.d/local.repo
%end

Kickstart 文件由多个部分组成,每个部分定义不同的安装配置。以下是 Kickstart 文件及其各部分说明:

# 安装来源
url --url="http://mirror.centos.org/centos/7/os/x86_64/"

# 安装语言
lang en_US.UTF-8

# 键盘布局
keyboard us

# 网络配置
network --bootproto=dhcp --device=eth0

# 根密码
rootpw --iscrypted $1$random$1234567890abcdef12345

# 分区配置
clearpart --all --initlabel
part /boot --fstype=xfs --size=500
part pv.01 --grow --size=1
volgroup vg0 pv.01
logvol / --vgname=vg0 --size=10240 --name=root --fstype=xfs
logvol swap --vgname=vg0 --size=2048 --name=swap

# 引导加载程序
bootloader --location=mbr

# 包选择
%packages
@core
@base
wget
vim
%end

# 后脚本
%post
echo "安装完成" > /root/install_log.txt
%end

(三) Kickstart 文件关键部分

  1. 安装来源
url --url="http://mirror.centos.org/centos/7/os/x86_64/"

指定安装介质的位置,可以是 HTTP、FTP 或 NFS。

  1. 语言和键盘布局
lang en_US.UTF-8
keyboard us

指定安装过程中使用的语言和键盘布局。

  1. 网络配置
network --bootproto=dhcp --device=eth0

配置网络接口,可以使用 DHCP 或静态 IP。

  1. 根密码
rootpw --iscrypted $1$random$1234567890abcdef12345

设置根用户密码,可以是明文或加密的密码。

  1. 分区配置
clearpart --all --initlabel
part /boot --fstype=xfs --size=500
part pv.01 --grow --size=1
volgroup vg0 pv.01
logvol / --vgname=vg0 --size=10240 --name=root --fstype=xfs
logvol swap --vgname=vg0 --size=2048 --name=swap

配置磁盘分区,包括标准分区和逻辑卷。

  1. 引导加载程序
bootloader --location=mbr

指定引导加载程序的位置。

  1. 包选择
%packages
@core
@base
wget
vim
%end

指定要安装的软件包组和单个软件包。

  1. 后脚本
plaintext
复制代码
%post
echo "安装完成" > /root/install_log.txt
%end

在安装完成后执行的脚本,可以用于自定义配置或执行其他操作。

(四)使用Kickstart 进行安装

  1. 准备 Kickstart 文件: 创建一个 Kickstart 文件,并将其放在一个可访问的位置(如 HTTP 服务器)。
  2. 引导安装程序: 使用引导介质(如 USB、PXE 引导)启动安装程序,并指定 Kickstart 文件的位置。例如,在启动引导菜单中添加以下参数:
inst.ks=http://example.com/ks.cfg
  1. 开始自动化安装: 安装程序会读取指定的 Kickstart 文件,并根据其中的指令执行安装过程。

优点

  • 节省时间:大规模部署时,自动化安装显著减少了手动配置的时间。
  • 一致性:确保每台机器的安装配置一致,减少人为错误。
  • 易于管理:通过集中管理 Kickstart 文件,可以方便地更新和维护安装配置。

通过这些步骤和概念,你可以使用 Kickstart 实现 Linux 系统的自动化安装,从而提高部署效率和一致性。如果有更多具体问题或需要进一步的帮助,请随时询问。

运行流程图

60fe271e76a8ca12de844bed546f3a4d_1311546-20190815111353864-268410972.png

安装好的字符界面
image.png

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

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

相关文章

STM32使用CubeMX创建HAL库工程文件

文章目录 1. STM32CubeMX 2. 界面介绍 3. 使用教程 新建工程 选择芯片界面 ​编辑 配置页面 引脚配置页面 引脚配置界面的颜色指示 配置RCC时钟参数 配置SYS参数 配置时钟树 Project Manager项目管理配置 生成工程文件 KEIL代码编写 1. STM32CubeMX STM32CubeM…

得物六宫格验证码分析

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言(lianxi a…

【自学网络安全】二、防火墙NAT智能选路综合实验

任务要求&#xff1a; &#xff08;衔接上一个实验所以从第七点开始&#xff0c;但与上一个实验关系不大&#xff09; 7&#xff0c;办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 8&#xff0c;分公司设备可以通过总…

LeetCode 算法:电话号码的字母组合 c++

原题链接&#x1f517;&#xff1a;电话号码的字母组合 难度&#xff1a;中等⭐️⭐️ 题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 …

线程-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

线程 线程概念 简介 线程定义&#xff1a;线程是操作系统进行调度的最小单位&#xff0c;包含在进程内&#xff0c;是进程中的实际执行单元 线程特性&#xff1a;一个线程代表进程中的一个单一顺序控制流&#xff0c;即执行路径 多线程应用&#xff1a;一个进程可以包含多个…

LabVIEW红外热波图像缺陷检

开发使用LabVIEW开发的红外热波图像缺陷检测系统。该系统结合红外热像仪、工业相机和高效的数据采集硬件&#xff0c;实现对工件表面缺陷的自动检测和分析。通过LabVIEW的强大功能&#xff0c;系统能够实时采集、处理和显示红外热波图像&#xff0c;有效提高了检测的精度和效率…

时域分析----移动平均滤波器介绍及其在金融应用示例

介绍 移动平均滤波器&#xff08;Moving Average Filter&#xff09;是一种基本但功能强大的信号处理技术&#xff0c;广泛应用于各种数据平滑和去噪任务中。其主要目的是通过对数据进行平均处理&#xff0c;减少随机波动和噪声&#xff0c;从而突出数据中的趋势和规律。移动平…

Win11任务栏当中对 STM32CubeMX 的堆叠问题

当打开多个 CubeMX 程序的时候&#xff0c;Win11 自动将其进行了堆叠&#xff0c;这时候就无法进行预览与打开。 问题分析&#xff1a;大部分ST的工具都是基于 JDK 来进行开发的&#xff0c;Win11 将其识别成了同一个 Binary 但是实际上他们并不是同一个&#xff0c;通过配置…

数据治理项目中,数据运营团队如何搭建能提升数据应用效果?

引言&#xff1a;在数据治理项目中&#xff0c;数据运营团队的搭建对于提升数据应用效果具有关键作用。以下是一些具体的步骤和策略&#xff0c;用于构建高效的数据运营团队以优化数据应用效果&#xff1a; 一、明确团队目标和职责 确定数据应用目标&#xff1a;首先&#xf…

【接口自动化_06课_Pytest+Excel+Allure完整框架集成】

一、logging在接口自动化里的应用 1、设置日志的配置&#xff0c;并收集日志文件 日志的设置需要在pytest.ini文件里设置。这个里面尽量不要有中文 2、debug日志的打印 pytest.ini文件的开关一定得是true才能在控制台打印日志 import allure import pytest from P06_PytestFr…

JavaScript(9) ----this指向问题,bind,call,apply等方法

目录 this指向问题 全局函数调用&#xff1a; 对象方法调用&#xff1a; 构造函数调用&#xff1a; 事件处理&#xff1a; 箭头函数&#xff1a; setTimeout和setInterval 7.使用call、apply或bind call 方法 apply 方法 bind 方法 总结 this指向问题 全局函数调用…

基于conda包的环境创建、激活、管理与删除

Anaconda是一个免费、易于安装的包管理器、环境管理器和 Python 发行版&#xff0c;支持平台包括Windows、macOS 和 Linux。下载安装地址&#xff1a;Download Anaconda Distribution | Anaconda 很多不同的项目可能需要使用不同的环境。例如某个项目需要使用pytorch1.6&#x…

STM32MP135裸机编程:支持内存非对齐访问

0 前言 使用stm32官方可视化初始化代码生成工具STM32CubeMX生成的工程GCC编译选项默认不支持非对齐访问&#xff0c;在我们进行非对齐的访问时就会进入数据异常中断DAbt中。为了解决这一问题&#xff0c;我们需要在GCC编译选项中加上一处配置。 1 操作方法 右键STM32CubeIDE…

ArkTS基础快速入门

初识ArkTS语言 ArkTS&#xff1a;是一门用于开发鸿蒙应用的编程语言。 ArkTS提供了声明式UI范式、状态管理支持等相应的能力&#xff0c;让开发者可以以更简洁、更自然的方式开发应用。 同时&#xff0c;它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础…

启动yarn后,其他节点没有NodeManager

写在前面&#xff1a; 这个问题虽然折磨了我两天&#xff0c;但是原因特别蠢&#xff0c;可能与各位不一定一样&#xff0c;我是因为ResourceManager的节点的"/etc/hadoop/workers"文件没有配置好&#xff08;没有配hadoop102和hadoop104&#xff09;&#xff0c;但排…

FPGA学习笔记(一) FPGA最小系统

文章目录 前言一、FPGA最小系统总结 前言 今天学习下FPGA的最小系统一、FPGA最小系统 FPGA最小系统与STM32最小系统类似&#xff0c;由供电电源&#xff0c;时钟电路晶振&#xff0c;复位和调试接口JTAG以及FLASH配置芯片组成&#xff0c;其与STM32最大的不同之处就是必须要有…

QQ频道导航退出

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140413538 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

three.js添加多个画布

多个场景的渲染需要多个画布&#xff0c;但是这样会导致加载模型纹理次数变多&#xff0c;基本方法是用一张canvas在整个背景中填充视口&#xff0c;利用其它元素作为每个虚拟画布&#xff0c;只在canvas中加载一个渲染器renderer&#xff0c;并为每个虚拟画布创建一个场景&…

实训第一天笔记

#初始化一个新的NPM项目(根据提示操作) npm init #安装TSC、TSLint和NodeJS的类型声明 npm install -s typescript tslint types/node 在根目录中新建一个名为tsconfig.json的文件&#xff0c;然后在代码编辑器中打开&#xff0c;写入下述内容&#xff1a; {"compilerO…

Chromium CI/CD 之Jenkins实用指南2024-如何创建新节点(三)

1. 前言 在前一篇《Jenkins实用指南2024-系统基本配置&#xff08;二&#xff09;》中&#xff0c;我们详细介绍了如何对Jenkins进行基本配置&#xff0c;包括系统设置、安全配置、插件管理以及创建第一个Job。通过这些配置&#xff0c;您的Jenkins环境已经具备了基本的功能和…