在香橙派5pro上的ubuntu22.04系统烧录镜像

尚未完成,谨慎参考。。。后面成功之后会在把步骤优化一下

目录

一、准备工作

1、

2、核心思路

二、

步骤一:准备工作与环境检查

步骤二:生成原始系统镜像

步骤3:安装必要工具(在源香橙派上)

步骤4:手动压缩镜像(代替PiShrink)

步骤5:压缩镜像(dd完成后执行)

第四阶段:创建新镜像(关键步骤)

第五阶段:优化新镜像

第六阶段:烧录测试

三、

orangepi5pro_emmc_backup.img

orangepi5pro_final.img

shrink_existing_image.sh

现在已经完成生成这三个文件,接下来的步骤

第一步:检查最终镜像状态

第一步:通用化处理(清理硬件信息)

第二步:准备烧录到SD卡

[A. 插入空白SD卡](#A. 插入空白SD卡)

[B. 确认设备名](#B. 确认设备名)

设备识别结果

现在执行完整烧录流程

第一步:返回工作目录并清理镜像

第二步:烧录到SD卡

第三步:验证烧录结果

第四步:安全移除SD卡

四、在新板上启动测试

硬件连接:

启动过程:

五、

方案A:直接DD覆盖(最彻底)

方案B:只替换系统分区(更安全)

[1. 硬件兼容性检查](#1. 硬件兼容性检查)

[2. 镜像完整性检查](#2. 镜像完整性检查)

[3. 目标板备份(极其重要!)](#3. 目标板备份(极其重要!))


一、准备工作

1、

源设备和目标设备都是同一型号(香橙派5 Pro RK3588S),并且你有一个大容量的外部存储(128G SD卡挂载在 /media/orangepi/6661-3031),那么完全可以在这块香橙派上完成所有工作,无需x86电脑

2、核心思路

利用挂载的128G SD卡作为工作盘和存储盘,直接在源香橙派5 Pro上完成系统备份、处理,并最终烧录到新卡

二、

步骤一:准备工作与环境检查

1、确认存储 :确保挂载在 /media/orangepi/6661-3031 的128G SD卡有足够空间(应大于你系统已使用的空间,而非总容量)。在终端查看:

复制代码
df -h /media/orangepi/6661-3031

2、切换到工作目录:所有操作都在这个外置存储上进行,避免占用内部存储

复制代码
cd /media/orangepi/6661-3031

步骤二:生成原始系统镜像

这个镜像会包含整个系统盘(包括bootloader、内核、系统分区)的所有数据sudo apt clean # 清理软件包缓存 (可以跳过这一步不清理)

复制代码
sudo journalctl --vacuum-time=3d  # 清理3天前的系统日志
rm -rf ~/.cache/*  # 清理用户缓存
复制代码
# 2. 确认存储空间(应显示约119G可用)
复制代码
df -h .

2.关键:找到系统根分区设备

这是最重要的一步,绝对不能搞错。运行:

复制代码
lsblk -f

(base) orangepi@orangepi5pro:/media/orangepi/6661-3031$ lsblk -f

NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS

mmcblk1

├─mmcblk1p1

│ vfat FAT32 opi_boot

│ EF67-BD3B 899.5M 12% /boot

└─mmcblk1p2

ext4 1.0 opi_root

140be987-4b3c-4ea1-a96f-80e84c822007 17.2G 35% /var/log.hdd

/

mmcblk1boot0

mmcblk1boot1

mmcblk0

└─mmcblk0p1

exfat 1.0 6661-3031 119.1G 0% /media/orangepi/6661-3031

zram0

SWAP

zram1

171.4M 1% /var/log

(base) orangepi@orangepi5pro:/media/orangepi/6661-3031$

从输出可以清楚看到:

  1. 系统根设备是 /dev/mmcblk1

    • 根目录 / 挂载在 mmcblk1p2 分区上,这证实该系统是从 eMMC 启动的。需要备份的整个设备就是 /dev/mmcblk1(包含p1和p2两个分区)。
  2. 128G外置SD卡是 /dev/mmcblk0

    • 它被格式化为exFAT,挂载在 /media/orangepi/6661-3031,有119G可用空间,足够存放备份镜像

可以100%确定目标设备是 /dev/mmcblk1

复制代码
# 确保在128G外置卡目录
cd /media/orangepi/6661-3031

# 开始备份整个eMMC(mmcblk1)
sudo dd if=/dev/mmcblk1 of=./orangepi5pro_emmc_backup.img bs=4M status=progress

预计时间:这会将整个eMMC(比如32GB或64GB)的数据复制出来。根据eMMC速度和容量,可能需要20-60分钟

验证备份 检查备份文件ls -lh orangepi5pro_emmc_backup.img
sudo fdisk -l orangepi5pro_emmc_backup.img1. 文件大小正常

显示两个分区

关键细节

  • if=/dev/mmcblk1绝对正确,备份整个eMMC设备

  • 生成的文件约为eMMC总容量(如32GB/64GB)

  • 过程中可按 Ctrl+T 查看进度

步骤3:安装必要工具(在源香橙派上)
复制代码
sudo apt update && sudo apt install -y e2fsprogs util-linux
步骤4:手动压缩镜像(代替PiShrink)

以下是手动压缩的完整流程,我将其写成一个脚本方便执行:

已经生成的 orangepi5pro_emmc_backup.img 文件

复制代码
cd /media/orangepi/6661-3031

# 创建针对已存在镜像的压缩脚本
cat > shrink_existing_image.sh << 'EOF'
#!/bin/bash
# 压缩已存在的香橙派镜像脚本

INPUT_IMG="orangepi5pro_emmc_backup.img"
OUTPUT_IMG="orangepi5pro_final.img"

echo "=== 检查现有镜像 ==="
ls -lh "$INPUT_IMG"
sudo fdisk -l "$INPUT_IMG"

echo -e "\n=== 获取分区信息 ==="
# 获取第二个分区(系统分区)信息
PARTITION_INFO=$(sudo fdisk -l "$INPUT_IMG" | grep "img2")
if [ -z "$PARTITION_INFO" ]; then
    # 尝试其他可能的分区标识
    PARTITION_INFO=$(sudo fdisk -l "$INPUT_IMG" | grep "Linux filesystem" | tail -1)
fi

echo "分区信息: $PARTITION_INFO"

# 提取起始扇区
START_SECTOR=$(echo "$PARTITION_INFO" | awk '{print $2}')
SECTOR_SIZE=512
OFFSET=$((START_SECTOR * SECTOR_SIZE))

echo "系统分区起始扇区: $START_SECTOR"
echo "偏移量: $OFFSET 字节"

echo -e "\n=== 挂载系统分区 ==="
sudo losetup -f --show -o $OFFSET "$INPUT_IMG"
LOOP_DEV=$(sudo losetup -j "$INPUT_IMG" | grep offset | cut -d: -f1)
echo "使用的loop设备: $LOOP_DEV"

echo -e "\n=== 检查并修复文件系统 ==="
sudo e2fsck -pf "$LOOP_DEV"
CHECK_RESULT=$?
if [ $CHECK_RESULT -eq 0 ] || [ $CHECK_RESULT -eq 1 ]; then
    echo "文件系统检查通过"
else
    echo "文件系统有错误,尝试修复..."
    sudo e2fsck -fy "$LOOP_DEV"
fi

echo -e "\n=== 缩小文件系统到最小 ==="
sudo resize2fs -M "$LOOP_DEV"

echo -e "\n=== 获取缩小后的块信息 ==="
TUNE2FS_OUTPUT=$(sudo tune2fs -l "$LOOP_DEV" 2>/dev/null)
BLOCK_SIZE=$(echo "$TUNE2FS_OUTPUT" | grep "Block size:" | awk '{print $3}')
BLOCK_COUNT=$(echo "$TUNE2FS_OUTPUT" | grep "Block count:" | awk '{print $3}')

echo "块大小: $BLOCK_SIZE 字节"
echo "块数量: $BLOCK_COUNT"

# 计算文件系统实际大小(字节)
FS_SIZE=$((BLOCK_SIZE * BLOCK_COUNT))
# 计算需要的扇区数(每个扇区512字节)
FS_SECTORS=$(( (FS_SIZE + SECTOR_SIZE - 1) / SECTOR_SIZE ))

echo "文件系统需要扇区数: $FS_SECTORS"

echo -e "\n=== 卸载loop设备 ==="
sudo losetup -d "$LOOP_DEV"

echo -e "\n=== 创建新镜像文件 ==="
# 计算新分区结束扇区(预留2048扇区空间)
NEW_END=$((START_SECTOR + FS_SECTORS + 2048))

echo "新分区结束扇区: $NEW_END"

# 1. 复制MBR和分区表(前2048扇区,约1MB)
dd if="$INPUT_IMG" of="$OUTPUT_IMG" bs=512 count=2048 status=progress

echo -e "\n=== 调整分区表 ==="
# 使用fdisk调整第二个分区大小
cat << FDISK_CMDS | sudo fdisk "$OUTPUT_IMG"
d
2
n
p
2
$START_SECTOR
$NEW_END
n
p
w
FDISK_CMDS

echo -e "\n=== 复制文件系统数据 ==="
dd if="$INPUT_IMG" bs=512 skip=$START_SECTOR count=$FS_SECTORS | \
  dd of="$OUTPUT_IMG" bs=512 seek=$START_SECTOR conv=notrunc status=progress

echo -e "\n=== 扩展文件系统到分区大小 ==="
# 重新设置loop设备
sudo losetup -f --show -o $OFFSET "$OUTPUT_IMG"
NEW_LOOP_DEV=$(sudo losetup -j "$OUTPUT_IMG" | grep offset | cut -d: -f1)

# 检查并扩展文件系统
sudo e2fsck -pf "$NEW_LOOP_DEV"
sudo resize2fs "$NEW_LOOP_DEV"

# 最后检查
sudo fsck -y "$NEW_LOOP_DEV"

# 清理
sudo losetup -d "$NEW_LOOP_DEV"

echo -e "\n=== 完成! ==="
echo "原始镜像大小: $(du -h "$INPUT_IMG" | cut -f1)"
echo "压缩后镜像大小: $(du -h "$OUTPUT_IMG" | cut -f1)"
echo "节省空间: $(echo "scale=1; (1 - $(du -k "$OUTPUT_IMG" | cut -f1) / $(du -k "$INPUT_IMG" | cut -f1)) * 100" | bc)%"

# 验证镜像结构
echo -e "\n=== 验证镜像结构 ==="
sudo fdisk -l "$OUTPUT_IMG"
EOF

# 赋予执行权限
chmod +x shrink_existing_image.sh

# 运行脚本
sudo ./shrink_existing_image.sh
步骤5:压缩镜像(dd完成后执行)
复制代码
# 使用PiShrink自动收缩并压缩
复制代码
# 1. 查看分区信息
sudo fdisk -l orangepi5pro_emmc_backup.img
# 记录:img2的Start值(如2158592)

# 2. 挂载系统分区
OFFSET=$((2158592 * 512))
sudo losetup -f --show -o $OFFSET orangepi5pro_emmc_backup.img
LOOP_DEV=$(sudo losetup -a | grep "offset" | grep "backup" | awk -F: '{print $1}')

# 3. 检查并压缩文件系统
sudo e2fsck -pf $LOOP_DEV
sudo resize2fs -M $LOOP_DEV

# 4. 获取压缩后信息
sudo tune2fs -l $LOOP_DEV | grep -E "(Block count|Block size)"
# 记录:Block count和Block size

完成后

  • 得到

    复制代码
    orangepi5pro_emmc_backup.img
  • 可删除原始文件释放空间:

    复制代码
第四阶段:创建新镜像(关键步骤)
复制代码
# 1. 计算参数
BLOCK_COUNT=2973220    # 实际获取的值
BLOCK_SIZE=4096        # 实际获取的值
FS_SIZE=$((BLOCK_COUNT * BLOCK_SIZE))
FS_SECTORS=$(( (FS_SIZE + 511) / 512 ))
START_SECTOR=2158592   # 实际获取的值
NEW_END=$((START_SECTOR + FS_SECTORS + 2048))
TOTAL_MB=$(( (NEW_END + 2048) * 512 / 1024 / 1024 ))

# 2. 创建空白镜像
dd if=/dev/zero of=orangepi5pro_final.img bs=1M count=$TOTAL_MB status=progress

# 3. 复制引导分区
dd if=orangepi5pro_emmc_backup.img of=orangepi5pro_final.img bs=512 count=$START_SECTOR conv=notrunc status=progress

# 4. 创建GPT分区表
cat << EOF | sudo fdisk orangepi5pro_final.img
g
n
1
61440
2158591
n
2
2158592
$NEW_END
w
EOF

# 5. 复制系统数据
sudo losetup -f --show -o $OFFSET orangepi5pro_emmc_backup.img
ORIG_LOOP=$(sudo losetup -a | grep "backup" | grep "offset" | awk -F: '{print $1}')
dd if=$ORIG_LOOP of=orangepi5pro_final.img bs=512 seek=$START_SECTOR skip=$START_SECTOR count=$FS_SECTORS conv=notrunc status=progress
sudo losetup -d $ORIG_LOOP

第五阶段:优化新镜像

复制代码
# 1. 扩展文件系统
sudo losetup -f --show -o $OFFSET orangepi5pro_final.img
NEW_LOOP=$(sudo losetup -a | grep "final" | grep "offset" | awk -F: '{print $1}')
sudo resize2fs $NEW_LOOP

# 2. 清理硬件信息
sudo mount $NEW_LOOP /mnt
sudo rm -f /mnt/etc/udev/rules.d/70-persistent-net.rules
sudo rm -f /mnt/etc/ssh/ssh_host_*
echo "uninitialized" | sudo tee /mnt/etc/machine-id
sudo umount /mnt
sudo losetup -d $NEW_LOOP

第六阶段:烧录测试

复制代码
# 1. 插入空白SD卡,确认设备名(如/dev/sdb)
sudo lsblk

# 2. 烧录
sudo dd if=orangepi5pro_final.img of=/dev/sdb bs=4M status=progress conv=fsync

# 3. 在新香橙派5 Pro上测试

三、

orangepi5pro_emmc_backup.img
orangepi5pro_final.img
shrink_existing_image.sh
现在已经完成生成这三个文件,接下来的步骤

第一步:检查最终镜像状态

复制代码
cd /media/orangepi/6661-3031

# 检查最终镜像
复制代码
ls -lh orangepi5pro_final.img
sudo fdisk -l orangepi5pro_final.img

输出:

  1. orangepi5pro_final.img 的文件大小是多少

  2. fdisk 显示的分区信息是什么

(base) orangepi@orangepi5pro:/media/orangepi/6661-3031$ ls -lh orangepi5pro_final.img

sudo fdisk -l orangepi5pro_final.img

-rwxr-xr-x 1 orangepi orangepi 14G 12月 20 11:13 orangepi5pro_final.img

sudo\] orangepi 的密码: Disk orangepi5pro_final.img:13.61 GiB,14612955136 字节,28540928 个扇区 单元:扇区 / 1 \* 512 = 512 字节 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:gpt 磁盘标识符:063BEFB7-91B2-0B4D-B723-111C205CB05B 设备 起点 末尾 扇区 大小 类型 orangepi5pro_final.img1 61440 2158591 2097152 1G Linux 文件系统 orangepi5pro_final.img2 2158592 25946400 23787809 11.3G Linux 文件系统 (base) orangepi@orangepi5pro:/media/orangepi/6661-3031$

现在进入最终步骤

第一步:通用化处理(清理硬件信息)

复制代码
cd /media/orangepi/6661-3031

# 1. 挂载系统分区(第二分区)
OFFSET=$((2158592 * 512))
sudo mkdir -p /mnt/img_root
sudo mount -o loop,offset=$OFFSET orangepi5pro_final.img /mnt/img_root

# 2. 清理硬件特定文件
echo "清理硬件信息..."
sudo rm -f /mnt/img_root/etc/udev/rules.d/70-persistent-net.rules
sudo rm -f /mnt/img_root/etc/ssh/ssh_host_*
sudo rm -f /mnt/img_root/etc/machine-id
echo "uninitialized" | sudo tee /mnt/img_root/etc/machine-id

# 3. 可选:清理临时文件
sudo rm -rf /mnt/img_root/tmp/*
sudo rm -rf /mnt/img_root/var/tmp/*

# 4. 卸载
sudo umount /mnt/img_root
sudo rmdir /mnt/img_root

echo "镜像清理完成!"

第二步:准备烧录到SD卡

A. 插入空白SD卡

  1. 准备一张至少16GB的空白SD卡

  2. 通过读卡器插入香橙派USB口

B. 确认设备名

复制代码
# 插入前查看当前设备
sudo lsblk

# 插入SD卡后再查看
sudo lsblk

找到新增的设备,通常是:

  • /dev/sda(USB读卡器)

  • /dev/mmcblk2(SD卡槽)

重要 :确认不是 /dev/mmcblk1(你的系统盘)!

(base) orangepi@orangepi5pro:/media/orangepi/6137-3232$ sudo lsblk

sudo\] orangepi 的密码: NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS mmcblk1 179:0 0 28.9G 0 disk ├─mmcblk1p1 179:1 0 1G 0 part /boot └─mmcblk1p2 179:2 0 27.6G 0 part /var/log.hdd / mmcblk1boot0 179:32 0 4M 1 disk mmcblk1boot1 179:64 0 4M 1 disk mmcblk0 179:96 0 119.1G 0 disk └─mmcblk0p1 179:97 0 119.1G 0 part /media/orangepi/6661-3031 zram0 254:0 0 3.9G 0 disk \[SWAP

zram1 254:1 0 200M 0 disk /var/log

(base) orangepi@orangepi5pro:/media/orangepi/6137-3232$ sudo lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS

sdb 8:16 1 119.1G 0 disk

└─sdb1 8:17 1 119.1G 0 part

mmcblk1 179:0 0 28.9G 0 disk

├─mmcblk1p1 179:1 0 1G 0 part /boot

└─mmcblk1p2 179:2 0 27.6G 0 part /var/log.hdd

/

mmcblk1boot0 179:32 0 4M 1 disk

mmcblk1boot1 179:64 0 4M 1 disk

mmcblk0 179:96 0 119.1G 0 disk

└─mmcblk0p1 179:97 0 119.1G 0 part /media/orangepi/6661-3031

zram0 254:0 0 3.9G 0 disk [SWAP]

zram1 254:1 0 200M 0 disk /var/log

(base) orangepi@orangepi5pro:/media/orangepi/6137-3232$

可以清楚地看到:

设备识别结果

插入SD卡前:

  • mmcblk1:你的系统盘(eMMC)

  • mmcblk0:128G外置卡(工作盘)

插入SD卡后新增:

  • sdb新插入的空白SD卡(119.1G)

确认目标设备:/dev/sdb


现在执行完整烧录流程

第一步:返回工作目录并清理镜像

复制代码
# 返回存放镜像的目录
cd /media/orangepi/6661-3031

# 通用化处理(如果还没做)
OFFSET=$((2158592 * 512))
sudo mkdir -p /mnt/img_root
sudo mount -o loop,offset=$OFFSET orangepi5pro_final.img /mnt/img_root

# 清理硬件信息
sudo rm -f /mnt/img_root/etc/udev/rules.d/70-persistent-net.rules
sudo rm -f /mnt/img_root/etc/ssh/ssh_host_*
sudo rm -f /mnt/img_root/etc/machine-id
echo "uninitialized" | sudo tee /mnt/img_root/etc/machine-id

# 卸载
sudo umount /mnt/img_root
sudo rmdir /mnt/img_root

echo "✅ 镜像清理完成"

第二步:烧录到SD卡

复制代码
# 重要:确认目标设备
TARGET_DEV="/dev/sdb"
echo "目标设备: $TARGET_DEV"

# 检查目标设备是否正确
sudo fdisk -l $TARGET_DEV
# 应该显示空白或已有分区的信息

# 开始烧录(使用dd命令)
echo "开始烧录14GB镜像到SD卡..."
echo "预计时间:3-5分钟"
sudo dd if=orangepi5pro_final.img of=$TARGET_DEV bs=4M status=progress conv=fsync

# 等待完成
sync
echo "✅ 烧录完成!"

第三步:验证烧录结果

复制代码
# 检查SD卡分区
sudo fdisk -l $TARGET_DEV

# 应该显示:
# 设备                       起点     末尾     扇区  大小 类型
# /dev/sdb1                 61440  2158591  2097152    1G Linux 文件系统
# /dev/sdb2               2158592 25946400 23787809 11.3G Linux 文件系统

# 检查文件系统
sudo fsck.ext4 -n ${TARGET_DEV}2

第四步:安全移除SD卡

复制代码
# 确保所有数据写入
sync

# 等待10秒
sleep 10

echo "可以安全拔出SD卡了"
echo "物理拔出后插入新香橙派5 Pro"

四、在新板上启动测试

硬件连接:

  1. 插入SD卡:到新香橙派5 Pro的SD卡槽

  2. 连接外设

    • 电源(5V/4A适配器)

    • HDMI显示器

    • USB键盘

    • 网线(可选)

启动过程:

首次启动时间线:

0-30秒:U-Boot启动,LED闪烁

30-90秒:内核启动,系统扩展文件系统

90-180秒:进入登录界面

五、

如果不是新开发板需要覆盖

方案A:直接DD覆盖(最彻底)

适用场景:目标板系统问题严重,需要完全重置

复制代码
# 在新板(目标板)上操作步骤:
# 1. 将你的镜像SD卡通过读卡器插入目标板USB口
# 2. 确认设备名(假设为/dev/sda)
sudo lsblk

# 3. 确认目标板eMMC设备(通常是/dev/mmcblk1)
#    绝对不要搞错!

# 4. 开始覆盖(示例,请根据实际情况调整)
sudo dd if=/dev/sda1 of=/dev/mmcblk1 bs=4M status=progress conv=fsync
# 或直接使用镜像文件
sudo dd if=/media/orangepi/xxx/orangepi5pro_final.img of=/dev/mmcblk1 bs=4M status=progress conv=fsync

# 5. 重启
sudo reboot

方案B:只替换系统分区(更安全)

适用场景:保留用户数据,只修复系统环境

复制代码
# 1. 挂载你的镜像和目标板系统
# 挂载你的镜像系统分区
sudo mount /dev/sda2 /mnt/source

# 挂载目标板系统分区
sudo mount /dev/mmcblk1p2 /mnt/target

# 2. 备份目标板重要数据
sudo cp -r /mnt/target/home/orangepi /备份位置/

# 3. 清理目标板系统但保留home
sudo rm -rf /mnt/target/{etc,usr,var,lib,opt,sbin,bin,boot} 2>/dev/null

# 4. 复制新系统(排除home)
sudo cp -a /mnt/source/{etc,usr,var,lib,opt,sbin,bin,boot} /mnt/target/

# 5. 卸载
sudo umount /mnt/source /mnt/target

1. 硬件兼容性检查

复制代码
# 在你的镜像系统和目标板系统都运行:
cat /proc/cpuinfo | grep "model name"
cat /proc/device-tree/model
uname -a

# 比较结果,确保:
# - 都是香橙派5 Pro (RK3588S)
# - 内核版本相近
# - 架构相同(aarch64)

2. 镜像完整性检查

复制代码
# 检查你的镜像
sudo fdisk -l orangepi5pro_final.img
# 应该有2个分区:1G的boot和11G的系统分区

# 检查是否可以挂载
sudo mount -o loop,offset=$((2158592*512)) orangepi5pro_final.img /mnt/test
ls /mnt/test
sudo umount /mnt/test

3. 目标板备份(极其重要!)

复制代码
# 在目标板上备份当前状态
# A. 备份重要文件
sudo tar czf /tmp/backup_home.tar.gz /home/orangepi
sudo tar czf /tmp/backup_etc.tar.gz /etc

# B. 备份整个系统(如果空间足够)
sudo dd if=/dev/mmcblk1 of=/tmp/full_backup.img bs=4M status=progress

# C. 备份到外部存储
# 插入U盘或通过网络传输
相关推荐
lin张2 小时前
Docker 场景化操作:生产环境容器实践
运维·docker·容器
学习3人组2 小时前
自动拨号和录音的App解决方案
运维
2501_939909052 小时前
Docker实训练习
运维·docker·容器
EasyCVR2 小时前
视频汇聚平台EasyCVR筑牢消防领域可视化监控防线
运维·人工智能·音视频
foundbug9992 小时前
C#实现的自动升级系统
服务器·网络·c#
Hello.Reader3 小时前
Flink Materialized Table 完整部署与运维指南:架构、SQL Gateway、Catalog Store、调度刷新一站式落地
运维·架构·flink
Ancelin安心3 小时前
关于代理的一些网络知识复盘
linux·运维·网络·计算机网络·web安全·ubuntu·网络安全
程序边界3 小时前
10年Oracle运维转战国产数据库:迁移路上的“坑”与“光”
运维·数据库·oracle
chenyuhao20243 小时前
Linux系统编程:多线程互斥以及死锁问题
linux·运维·服务器·c++·后端