pxe高效网络批量装机

文章目录

  • 一, 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=ens35DEVICE=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 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::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 1000link/ether 00:0c:29:dd:1e:55 brd ff:ff:ff:ff:ff:ffinet 192.168.72.20/24 brd 192.168.72.255 scope global ens33valid_lft forever preferred_lft foreverinet6 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 1000link/ether 00:0c:29:dd:1e:5f brd ff:ff:ff:ff:ff:ffinet 192.168.101.100/24 brd 192.168.101.255 scope global ens35valid_lft forever preferred_lft foreverinet6 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 1000link/ether 52:54:00:4c:17:ee brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000link/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             = dgramprotocol                = udpwait                    = yes    表示客户机可以多台一起连接,yes表示客户机只能一台一台连接,表示是否开启多线程一起工作,否则需要等待user                    = rootserver                  = /usr/sbin/in.tftpdserver_args             = -s /var/lib/tftpboot指定TFTP根目录(引导文件的存储路径) -c允许上传disable                 = noper_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 1label autokernel vmlinuzappend initrd=initrd.img method=ftp://192.168.101.100/centos7label linux textkernel vmlinuzappend text initrd=initrd.img method=ftp://192.168.101.100/centos7label linux rescuekernel vmlinuzappend 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.mzph.cn/diannao/46353.shtml

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

相关文章

语言主要是一种交流工具,而不是思维工具?GPT5何去何从?

引言 在人工智能领域&#xff0c;特别是大语言模型&#xff08;LLM&#xff09;的发展中&#xff0c;语言和思维的关系一直是一个备受关注的话题。近期&#xff0c;麻省理工学院&#xff08;MIT&#xff09;在《Nature》杂志上发表了一篇题为《Language is primarily a tool f…

linux进程——概念理解与PCB

前言&#xff1a;本篇讲解Linux进程概念相关内容。 操作系统被称为计算机世界的哲学&#xff0c; 可以见得操作系统的知识并不好理解。 对于这篇进程概念的讲解&#xff0c; 博主认为&#xff0c; 如果没有一些前置知识的话&#xff0c;里面的有些概念并不好理解。 但是如果学习…

SQL Server 用户应当如何防范 Mallox (.hmallox) 勒索软件袭击

勒索软件领域的特点是随着时间的流逝&#xff0c;参与者群体和恶意软件家族都会大量流失&#xff0c;只有少数参与者表现出相对长寿的寿命。曾经令人担忧的威胁&#xff0c;如 REvil 和 Conti&#xff0c;要么被铲除&#xff0c;要么被解散&#xff0c;而其他威胁——例如 ALPH…

UGUI优化篇(更新中)

UGUI优化篇 1. 基础概念2. 重要的类1. MaskableGraphic类继承了IMaskable类2. 两种遮罩的实现区别RectMask2DMask 3. 渲染部分知识深度测试深度测试的工作原理 渲染队列透明物体在渲染时怎么处理为什么透明效果会造成性能问题 1. 基础概念 所有UI都由网格绘制的如image由两个三…

25届平安产险校招测评IQ新16PF攻略:全面解析与应试策略

尊敬的读者&#xff0c;您好。随着平安产险校招季的到来&#xff0c;许多应届毕业生正积极准备着各项测评。本文旨在提供一份详尽的测评攻略&#xff0c;帮助您更好地理解平安产险的校招测评流程&#xff0c;以及如何有效应对。 25届平安产险平安IQ&#xff08;新&#xff09;测…

AI大模型探索之旅:深潜大语言模型的训练秘境

在人工智能的浩瀚星空中&#xff0c;大语言模型无疑是最耀眼的星辰之一&#xff0c;它们以无与伦比的语言理解与生成能力&#xff0c;引领着智能交互的新纪元。本文将带您踏上一场探索之旅&#xff0c;深入大语言模型的训练秘境&#xff0c;揭开其背后复杂而精妙的全景画卷。 …

给 「大模型初学者」 的 LLaMA 3 核心技术剖析

编者按&#xff1a; 本文旨在带领读者深入了解 LLaMA 3 的核心技术 —— 使用 RMSNorm 进行预归一化、SwiGLU 激活函数、旋转编码&#xff08;RoPE&#xff09;和字节对编码&#xff08;BPE&#xff09;算法。RMSNorm 技术让模型能够识别文本中的重点&#xff0c;SwiGLU 激活函…

现在有哪些微服务解决方案?

Dubbo&#xff1a;是一个轻量级的Java微服务框架&#xff0c;最初由阿里巴巴在2011年开源。它提供了服务注册与发现、负载均衡、容错、分布式调用等。Dubbo更多的被认为是一种高性能的RPC框架&#xff08;远程过程调用&#xff09;&#xff0c;一些服务治理功能依赖第三方组件完…

第一部分:C++入门

目录 前言 1、C关键字(C98) 2、命名空间 2.1、命名空间定义 2.2、命名空间的使用 3、C输入&输出 4、缺省参数 4.1、缺省参数的概念 4.2、缺省参数的分类 5、函数重载 5.1、函数重载的概念 5.2、C支持函数重载的原理 6、引用 6.1、引用的概念 6.2、引用特性 …

深圳晶彩智能JC3636W518C开箱实现电脑副屏功能

深圳晶彩智能发布了JC3636W518C 这是一款中国制造的&#xff0c;铝合金外壳&#xff0c;价格非常震撼的开发板。原创是billbill的up播主萨纳兰的黄昏设计的ESP32太极小派&#xff0c;由深圳晶彩智能批量生产。 该款 LCD 模块采用 ESP32-S3R8 芯片作为主控,该主控是双核 MCU&…

C++入门基础篇(2)

欢迎大家的来到小鸥的博客&#xff0c;今天我们继续C基础的第二篇吧&#xff01; 这也是入门基础篇的最后一篇wo~ 目录 1.引用 引用的概念 引用的特性及使用 const常引用 指针和引用的关系 2.inline内联函数 定义 相关特性及使用​ 3.nullptr >>后记<< …

摩尔投票算法

文章目录 什么是摩尔投票算法算法思想 相关例题摩尔投票法的扩展题目解题思路代码奉上 什么是摩尔投票算法 摩尔投票法&#xff08;Boyer-Moore Majority Vote Algorithm&#xff09;是一种时间复杂度 为O(n),空间复杂度为O(1)的方法&#xff0c;它多数被用来寻找众数&#xf…

Manim的代码练习02:在manim中Dot ,Arrow和NumberPlane对象的使用

Dot&#xff1a;指代点对象或者表示点的符号。Arrow&#xff1a;指代箭头对象&#xff0c;包括直线上的箭头或者向量箭头等。NumberPlane&#xff1a;指代数轴平面对象&#xff0c;在Manim中用来创建包含坐标轴的数学坐标系平面。Text&#xff1a;指代文本对象&#xff0c;用来…

Linux系列--命令详解

目录 一、Linux资源管理方式 二、查询类型命令详解 三、文件管理类型命令详解 四、文件压缩与解压 五、文件编辑 六、系统命令 七、文件内容查看命令 一、Linux资源管理方式 linux操作系统采用一个文档树来组织所有的资源。这棵树的根目录的名字叫做&#xff1a;//…

使用 HttpServlet 接收网页的 post/get 请求

前期工作&#xff1a;部署好 idea 和 一个 web 项目 idea(2021),tomcat(9) ->创建一个空的项目 -> 新建一个空的模块 -> 右键单击模块 选择 Add..Fra.. Sup.. -> 勾选Web App...后点击OK -> 点击 file - Project Struc... -> 选择刚刚的模块 -> 点…

Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git)

目录 Linux软件包管理器 - yum Linux下安装软件的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 vim的简单配置 Linux编译器 - gc…

C 语言指针进阶

1.0 指针的定义 指针是内存中一个最小单元的编号&#xff08;内存单元的编号称之为地址【地址就是指针指针就是地址】&#xff09;指针通常是用来存放内存地址的一个变量。本质上指针就是地址&#xff1a;口语上说的指针起始是指针变量&#xff0c;指针变量就是一个变量&#…

MySQL覆盖索引和索引跳跃扫描

最近在深入学习MySQL&#xff0c;在学习最左匹配原则的时候&#xff0c;遇到了一个有意思的事情。请听我细细道来。 我的MySQL版本为8.0.32 可以通过 show variables like version; 查看使用的版本。 准备工作&#xff1a; 先建表&#xff0c;SQL语句如下&#xff1a; c…

SSM框架学习笔记(仅供参考)

&#xff08;当前笔记简陋&#xff0c;仅供参考&#xff09; 第一节课&#xff1a; &#xff08;1&#xff09;讲述了Spring框架&#xff0c;常用jar包&#xff0c;以及框架中各个文件的作用 &#xff08;2&#xff09;演示了一个入门程序 &#xff08;3&#xff09;解释了…

Redis 实现的延时队列组件

最近看开源看到一个好用的延时队列组件&#xff0c;已经上生产。代码量很少&#xff0c;主要就是利用Redis监听过期键实现的。然后搞点策略模式柔和柔和。利用Spring Start 封装了一下&#xff0c;全是俺掌握的知识&#xff0c;稍微研究了下就搞懂了。觉得挺有用的&#xff0c;…