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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 0基础学会在亚马逊云科技AWS上利用SageMaker、PEFT和LoRA高效微调AI大语言模型(含具体教程和代码)
  • 服务客户,保证质量:腾讯云产品的质量实践
  • 医疗健康信息的安全挑战与隐私保护最佳实践
  • 【周末闲谈】Stable Diffusion会魔法的绘画师
  • Facebook软体机器人与机器人框架:创新社交互动的未来
  • HarmonyOS 界面开发基础篇
  • 算法日常练习
  • JAVA简单封装UserUtil
  • LangChain与正则表达式:探索文本匹配的强大工具
  • 【数据结构】--- 堆的应用
  • 什么是SQL锁
  • ES6 Iterator 与 for...of 循环(五)
  • Spring中的适配器模式和策略模式
  • 罗马仕充电宝怎么样?罗马仕、西圣、绿联无线充电宝测评对比!
  • Spring boot 2.0 升级到 3.3.1 的相关问题 (一)
  • $translatePartialLoader加载失败及解决方式
  • 30天自制操作系统-2
  • github指令
  • java 多线程基础, 我觉得还是有必要看看的
  • React-flux杂记
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue.js源码(2):初探List Rendering
  • Vue2.0 实现互斥
  • 记录:CentOS7.2配置LNMP环境记录
  • 警报:线上事故之CountDownLatch的威力
  • 前端面试之CSS3新特性
  • 设计模式(12)迭代器模式(讲解+应用)
  • 树莓派 - 使用须知
  • 微信小程序:实现悬浮返回和分享按钮
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • #100天计划# 2013年9月29日
  • #pragma once与条件编译
  • #Z2294. 打印树的直径
  • #每天一道面试题# 什么是MySQL的回表查询
  • #在 README.md 中生成项目目录结构
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (TOJ2804)Even? Odd?
  • (层次遍历)104. 二叉树的最大深度
  • (二)测试工具
  • (规划)24届春招和25届暑假实习路线准备规划
  • (离散数学)逻辑连接词
  • (面试必看!)锁策略
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (原創) 未来三学期想要修的课 (日記)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 反射 Reflect
  • .net 怎么循环得到数组里的值_关于js数组
  • .Net(C#)常用转换byte转uint32、byte转float等
  • @Builder用法