如何恢复极狐GitLab?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有:

  • 极狐GitLab 中文文档
  • 极狐GitLab 中文论坛
  • 极狐GitLab 官网

恢复极狐GitLab (BASIC SELF)

极狐GitLab 提供了一个命令行界面来恢复整个安装,足够灵活以满足您的需求。

恢复先决条件部分 包含关键信息。在尝试在生产环境中执行之前,请务必至少阅读和测试完整的恢复过程一次。

恢复先决条件

目标极狐GitLab 实例必须已经在工作

您需要有一个正在运行的极狐GitLab 安装才能进行恢复。这是因为执行恢复操作的系统用户(git)通常不被允许创建或删除导入数据所需的 SQL 数据库(gitlabhq_production)。所有现有数据要么被删除(SQL),要么被移动到单独的目录(例如存储库和上传)。恢复 SQL 数据跳过 PostgreSQL 扩展拥有的视图。

目标极狐GitLab 实例必须具有完全相同的版本

您只能将备份恢复到创建它的极狐GitLab 的完全相同版本和类型(基础版或企业版)。例如,基础版 15.1.4。
如果您的备份版本与当前安装版本不同,则必须在恢复备份之前降级或升级您的极狐GitLab 安装。

极狐GitLab 密钥必须恢复

要恢复备份,您还必须恢复极狐GitLab 密钥。这些包括数据库加密密钥,CI/CD 变量,以及用于双因素认证的变量。如果没有这些密钥,会发生多个问题,包括启用双因素认证的用户无法访问,以及极狐GitLab Runner 无法登录。
恢复:

  • /etc/gitlab/gitlab-secrets.json(Linux 软件包安装)

  • /home/git/gitlab/.secret(自编译安装)

  • 恢复密钥(云原生极狐GitLab)

    • 如果需要,极狐GitLab Helm chart 密钥可以转换为 Linux 软件包格式。

某些极狐GitLab 配置必须与原始备份环境匹配

您可能还希望恢复之前的 /etc/gitlab/gitlab.rb(对于 Linux 软件包安装)或 /home/git/gitlab/config/gitlab.yml(对于自编译安装)以及任何 TLS 密钥、证书(/etc/gitlab/ssl,/etc/gitlab/trusted-certs),或 SSH 主机密钥。

某些配置与 PostgreSQL 中的数据相关。例如:

  • 如果原始环境有三个存储库存储(例如,default、my-storage-1 和 my-storage-2),那么目标环境也必须至少在配置中定义这些存储名称。
  • 从使用本地存储的环境恢复备份,即使目标环境使用对象存储,仍会恢复到本地存储。迁移到对象存储必须在恢复之前或之后完成。

恢复作为挂载点的目录

如果您要恢复到作为挂载点的目录中,则必须确保这些目录在尝试恢复之前是空的。否则,极狐GitLab 会在恢复新数据之前尝试移动这些目录,从而导致错误。

关于配置 NFS 挂载的信息。

Linux 软件包安装的恢复

该过程假设:

  • 您已安装了极狐GitLab 的完全相同版本和类型(基础版/企业版),备份就是使用该版本创建的。
  • 您至少运行过一次 sudo gitlab-ctl reconfigure。
  • 极狐GitLab 正在运行。如果没有,请使用 sudo gitlab-ctl start 启动它。

首先确保您的备份 tar 文件位于 gitlab.rb 配置中描述的备份目录中 gitlab_rails[‘backup_path’]。默认路径是 /var/opt/gitlab/backups。备份文件需要由 git 用户拥有。

sudo cp 11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar /var/opt/gitlab/backups/
sudo chown git:git /var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar

停止连接到数据库的进程。让极狐GitLab 的其他部分继续运行:

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
# 验证
sudo gitlab-ctl status

接下来,确保您已完成 恢复先决条件 步骤,并在从原始安装复制极狐GitLab 密钥文件后运行 gitlab-ctl reconfigure。
接下来,恢复备份,指定您要恢复的备份的 ID:
WARNING:
以下命令会覆盖您的极狐GitLab 数据库的内容!

# NOTE: "_gitlab_backup.tar" 是省略的名称
sudo gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce

如果您的备份 tar 文件和安装的极狐GitLab 版本之间存在版本不匹配,恢复命令会以错误消息中止:

极狐GitLab 版本不匹配:您当前的极狐GitLab 版本(16.5.0-ee)与备份中的极狐GitLab 版本不同!请切换到以下版本并重试:version: 16.4.3-ee

安装正确的极狐GitLab 版本,然后重试。
WARNING:
恢复命令需要附加参数,当您的安装使用 PgBouncer 时,出于性能原因或与 Patroni 集群一起使用时。
接下来,重启并检查极狐GitLab:

sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

验证数据库值是否可以解密,特别是如果 /etc/gitlab/gitlab-secrets.json 已恢复,或如果不同的服务器是恢复目标。

sudo gitlab-rake gitlab:doctor:secrets

为增加保证,您可以对上传文件执行完整性检查:

sudo gitlab-rake gitlab:artifacts:check
sudo gitlab-rake gitlab:lfs:check
sudo gitlab-rake gitlab:uploads:check

恢复完成后,建议生成数据库统计数据以提高数据库性能并避免 UI 中的不一致:

1.进入数据库控制台。

2.运行以下命令:

SET STATEMENT_TIMEOUT=0 ; ANALYZE VERBOSE;

Docker 镜像和极狐GitLab Helm chart 安装的恢复

对于在 Kubernetes 集群上使用 Docker 镜像或极狐GitLab Helm chart 的极狐GitLab 安装,恢复任务期望恢复目录是空的。然而,使用 Docker 和 Kubernetes 卷挂载时,可能会在卷根目录创建一些系统级目录,例如在 Linux 操作系统中发现的 lost+found 目录。这些目录通常由 root 拥有,这可能导致访问权限错误,因为恢复 Rake 任务以 git 用户身份运行。要恢复极狐GitLab 安装,用户必须确认恢复目标目录是空的。

对于这两种安装类型,备份 tarball 必须可用于备份位置(默认位置是 /var/opt/gitlab/backups)。

Helm chart 安装的恢复

极狐GitLab Helm chart 使用恢复极狐GitLab Helm chart 安装中记录的过程。

Docker 镜像安装的恢复

如果您使用 Docker Swarm,容器可能会在恢复过程中重启,因为 Puma 被关闭,导致容器健康检查失败。为了解决这个问题,暂时禁用健康检查机制。

1.编辑 docker-compose.yml:

healthcheck:
disable: true

2.部署堆栈:

docker stack deploy --compose-file docker-compose.yml mystack可以从主机运行恢复任务:# 停止连接到数据库的进程
docker exec -it <name of container> gitlab-ctl stop puma
docker exec -it <name of container> gitlab-ctl stop sidekiq# 在继续之前验证所有进程都已关闭
docker exec -it <name of container> gitlab-ctl status# 运行恢复。NOTE: "_gitlab_backup.tar" 是省略的名称
docker exec -it <name of container> gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce# 重启极狐GitLab 容器
docker restart <name of container># 检查极狐GitLab
docker exec -it <name of container> gitlab-rake gitlab:check SANITIZE=true

自编译安装的恢复

首先,确保您的备份 tar 文件位于 gitlab.yml 配置中描述的备份目录中:

## 备份设置
backup:path: "tmp/backups"   # 相对路径相对于 Rails.root(默认:tmp/backups/)

默认路径是 /home/git/gitlab/tmp/backups,并且需要由 git 用户拥有。现在,您可以开始备份过程:

# 停止连接到数据库的进程
sudo service gitlab stopsudo -u git -H bundle exec rake gitlab:backup:restore RAILS_ENV=production

示例输出:

解压备份... [完成]
恢复数据库表:
-- create_table("events", {:force=>true})-> 0.2231s
[...]
- 加载固定事件...[完成]
- 加载固定议题...[完成]
- 加载固定密钥...[跳过]
- 加载固定合并请求...[完成]
- 加载固定里程碑...[完成]
- 加载固定命名空间...[完成]
- 加载固定备注...[完成]
- 加载固定项目...[完成]
- 加载固定受保护分支...[跳过]
- 加载固定 schema_migrations...[完成]
- 加载固定服务...[跳过]
- 加载固定代码片段...[跳过]
- 加载固定标记...[跳过]
- 加载固定标签...[跳过]
- 加载固定用户...[完成]
- 加载固定用户项目...[完成]
- 加载固定 web_hooks...[跳过]
- 加载固定 wiki...[跳过]
恢复存储库:
- 恢复存储库 abcd... [完成]
- 对象池 1 ...
删除临时目录...[完成]

接下来,如果需要恢复 /home/git/gitlab/.secret,如前所述。
重启极狐GitLab:

sudo service gitlab restart

从备份中仅恢复一个或几个项目或组

虽然用于恢复极狐GitLab 实例的 Rake 任务不支持恢复单个项目或组,但您可以通过将备份恢复到单独的临时极狐GitLab 实例,然后从那里导出项目或组来使用一种解决方法:

1.安装一个新的极狐GitLab 实例,版本与您要恢复的备份实例相同。
2.将备份恢复到这个新实例,然后导出您的项目或组。有关导出的内容和未导出的内容的更多信息,请参阅导出功能的文档。
3.导出完成后,转到旧实例,然后导入它。
4.完成您想要的项目或组导入后,您可以删除新的临时极狐GitLab 实例。

恢复增量存储库备份

每个备份档案都包含一个完整的自包含备份,包括通过增量存储库备份过程创建的备份。要恢复增量存储库备份,请使用与恢复任何其他常规备份档案相同的说明。

恢复选项

极狐GitLab 提供的命令行工具可以接受更多选项来从备份中恢复。

在存在多个备份时指定恢复的备份

备份文件使用以备份 ID 开头的命名方案 starting with a backup ID。当存在多个备份时,您必须通过设置环境变量 BACKUP= 来指定要恢复的 _gitlab_backup.tar 文件。

在恢复期间禁用提示

在从备份恢复期间,恢复脚本会提示确认:

  • 如果启用了 Write to authorized_keys 设置,则在恢复脚本删除并重建 authorized_keys 文件之前。
  • 在恢复数据库时,在恢复脚本删除所有现有表之前。
  • 在恢复数据库后,如果恢复架构时出现错误,则在继续之前,因为可能会出现进一步的问题。

要禁用这些提示,请将 GITLAB_ASSUME_YES 环境变量设置为 1。

  • Linux 软件包安装:
sudo GITLAB_ASSUME_YES=1 gitlab-backup restore
  • 自编译安装:
sudo -u git -H GITLAB_ASSUME_YES=1 bundle exec rake gitlab:backup:restore RAILS_ENV=production

force=yes 环境变量也会禁用这些提示。

在恢复时排除任务

您可以通过添加环境变量 SKIP 来排除恢复时的特定任务,其值是以下选项的逗号分隔列表:

  • db(数据库)

  • uploads(附件)

  • builds(CI 作业输出日志)

  • artifacts(CI 作业制品)

  • lfs(LFS 对象)

  • terraform_state(Terraform 状态)

  • registry(容器注册表镜像)

  • pages(Pages 内容)

  • repositories(Git 存储库数据)

  • packages(软件包)

要排除特定任务:

  • Linux 软件包安装:
sudo gitlab-backup restore BACKUP=<backup-id> SKIP=db,uploads
  • 自编译安装:
sudo -u git -H bundle exec rake gitlab:backup:restore BACKUP=<backup-id> SKIP=db,uploads RAILS_ENV=production

恢复特定存储库存储

  • 引入于极狐GitLab 15.0。

WARNING:
极狐GitLab 17.1 及更早版本受竞争条件影响,可能导致数据丢失。该问题影响了已被 fork 并使用极狐GitLab 对象池的存储库。为了避免数据丢失,仅使用极狐GitLab 17.2 或更高版本恢复备份。

当使用多个存储库存储时,可以使用 REPOSITORIES_STORAGES 选项单独恢复特定存储库存储的存储库。该选项接受逗号分隔的存储名称列表。

例如:

  • Linux 软件包安装:
sudo gitlab-backup restore BACKUP=<backup-id> REPOSITORIES_STORAGES=storage1,storage2
  • 自编译安装:
sudo -u git -H bundle exec rake gitlab:backup:restore BACKUP=<backup-id> REPOSITORIES_STORAGES=storage1,storage2

恢复特定存储库

  • 引入于极狐GitLab 15.1。

WARNING:
极狐GitLab 17.1 及更早版本受竞争条件影响,可能导致数据丢失。该问题影响了已被 fork 并使用极狐GitLab 对象池的存储库。为了避免数据丢失,仅使用极狐GitLab 17.2 或更高版本恢复备份。

您可以使用 REPOSITORIES_PATHS 和 SKIP_REPOSITORIES_PATHS 选项恢复特定存储库。这两个选项都接受项目和组路径的逗号分隔列表。如果您指定了组路径,则所有项目中的所有存储库以及子组中的存储库都被包括在内或跳过,具体取决于您使用的选项。这些组和项目必须存在于指定的备份或目标实例中。

NOTE:
REPOSITORIES_PATHS 和 SKIP_REPOSITORIES_PATHS 选项仅适用于 Git 存储库。它们不适用于项目或组数据库条目。如果您使用 SKIP=db 创建了存储库备份,单独它不能用于将特定存储库恢复到新实例。

例如,要恢复 群组 A(group-a)中所有项目的所有存储库,群组 B 中 项目 C(group-b/project-c)的存储库,并跳过 群组 A 中的 项目 D(group-a/project-d):

  • Linux 软件包安装:
sudo gitlab-backup restore BACKUP=<backup-id> REPOSITORIES_PATHS=group-a,group-b/project-c SKIP_REPOSITORIES_PATHS=group-a/project-d
  • 自编译安装:
sudo -u git -H bundle exec rake gitlab:backup:restore BACKUP=<backup-id> REPOSITORIES_PATHS=group-a,group-b/project-c SKIP_REPOSITORIES_PATHS=group-a/project-d

恢复未打包的备份

如果发现未打包的备份(使用 SKIP=tar 创建),并且没有使用 BACKUP= 选择备份,则使用未打包的备份。
例如:

  • Linux 软件包安装:

sudo gitlab-backup restore

  • 自编译安装:

sudo -u git -H bundle exec rake gitlab:backup:restore

故障排除

以下是您可能遇到的问题以及潜在的解决方案。

使用 Linux 软件包安装时输出警告恢复数据库备份

如果您使用备份恢复程序,可能会遇到以下警告消息:

ERROR: 必须是扩展 pg_trgm 的所有者
ERROR: 必须是扩展 btree_gist 的所有者
ERROR: 必须是扩展 plpgsql 的所有者
WARNING: "public" 没有权限可以撤销(出现两次)
WARNING: "public" 没有权限被授予(出现两次)

请注意,备份已成功恢复,尽管有这些警告消息。
Rake 任务以 gitlab 用户身份运行,该用户没有数据库的超级用户访问权限。当恢复启动时,它也以 gitlab 用户身份运行,但它也尝试改变它没有访问权限的对象。这些对象对数据库备份或恢复没有影响,但显示警告消息。

有关更多信息,请参阅:

  • PostgreSQL 问题跟踪:

    • 不是超级用户。
    • 具有不同所有者。

由于 Git 服务器钩子导致恢复失败

在备份恢复期间,如果以下条件为真,您可能会遇到错误:

  • 使用极狐GitLab 版本 15.10 及更早版本的方法配置了 Git 服务器钩子(custom_hook)
  • 您的极狐GitLab 版本是版本 15.11 及更高版本
  • 您创建了指向极狐GitLab 管理位置之外的目录的符号链接

错误看起来像:

{"level":"fatal","msg":"restore: pipeline: 1 failures encountered:\n - @hashed/path/to/hashed_repository.git (path/to_project): manager: restore custom hooks, \"@hashed/path/to/hashed_repository/<BackupID>_<GitLabVersion>-ee/001.custom_hooks.tar\": rpc error: code = Internal desc = setting custom hooks: generating prepared vote: walking directory: copying file to hash: read /mnt/gitlab-app/git-data/repositories/+gitaly/tmp/default-repositories.old.<timestamp>.<temporaryfolder>/custom_hooks/compliance-triggers.d: is a directory\n","pid":3256017,"time":"2023-08-10T20:09:44.395Z"}

要解决此问题,可以更新极狐GitLab 版本 15.11 及更高版本的 Git 服务器钩子,并创建新的备份。

使用 fapolicyd 时恢复成功但存储库显示为空

使用 fapolicyd 增强安全性时,极狐GitLab 可以报告恢复成功,但存储库显示为空。有关更多故障排除帮助,请参阅Gitaly 故障排除文档。

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

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

相关文章

面试高阶问题:android后台任务(如数据同步、定位)消耗过多电量,导致用户投诉。你会如何分析和优化后台任务的执行?

在现代移动设备生态中,安卓系统以其开放性和灵活性占据了全球智能手机市场的绝大部分份额。作为一款功能强大的操作系统,安卓允许应用程序在后台执行各种任务,例如数据同步、定位服务、消息推送以及其他周期性更新。这些后台任务在提升用户体验方面扮演了不可或缺的角色——…

最近在学习web搞大屏看板

人到中年&#xff0c;delphi发展越来越不行&#xff0c;就业环境是真差啊&#xff0c;没办法&#xff0c;学呗 中国地图&#xff1a; // 中国地图function getChinaMapChart() {// 初始化echarts实例var myEcharts echarts.init(document.getElementById("china_box"…

117.在 Vue 3 中使用 OpenLayers 实现 CTRL 控制拖拽和滚动缩放

✨ 前言 在使用 OpenLayers 开发地图类项目时,我们有时会希望用户必须按下 CTRL(或 Mac 的 Command ⌘ 键)才能拖拽地图或使用鼠标滚轮缩放。这种交互方式能够避免用户在浏览页面时意外滑动或拖动地图,尤其是在地图嵌入页面中时非常有用。 本文将带你一步一步实现在 Vue …

MATLAB 控制系统设计与仿真 - 34

多变量系统知识回顾 - MIMO system 这一章对深入理解多变量系统以及鲁棒分析至关重要 首先,对于如下系统: 当G(s)为单输入,单输出系统时: 如果: 则: 所以 因此,对于SISO,系统的增益跟w有关系, 当G(s)为MIMO时,例如2X2时, 假设输入信号为:

ARCGIS PRO DSK 利用两期地表DEM数据计算工程土方量

利用两期地表DEM数据计算工程土方量需要准许以下数据&#xff1a; 当前地图有3个图层&#xff0c;两个栅格图层和一个矢量图层 两个栅格图层&#xff1a;beforeDem为工程施工前的地表DEM模型 afterDem为工程施工后的地表DEM模型 一个矢量图层&#xf…

最快打包WPF 应用程序

在 Visual Studio 中右键项目选择“发布”&#xff0c;目标选“文件夹”&#xff0c;模式选“自包含”&#xff0c;生成含 .exe 的文件夹&#xff0c;压缩后可直接发给别人或解压运行&#xff0c;无需安装任何东西。 最简单直接的新手做法&#xff1a; 用 Visual Studio 的“…

物联网通信协议——TCP与MQTT的对比

在物联网通信中&#xff0c;MQTT和TCP的实现方式和原理完全不同&#xff0c;因为两者属于协议栈的不同层级&#xff0c;解决的问题也不同。以下从协议层级、工作机制和典型场景三个角度详细解释&#xff1a; 1. 协议层级与定位 特性TCPMQTT协议层级传输层&#xff08;第4层&am…

【信息系统项目管理师】高分论文:论信息系统项目的成本管理(媒体融合采编平台)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划项目成本管理2、估算成本3、制订项目预算4、控制成本论文 2017年7月,我作为项目经理参与了 XX省媒体融合采编平台的建设,该项目总共投资530万元,其中服务器、存储、网络等硬件设备投资200万元、软…

策略模式简单介绍

什么是策略模式&#xff1f;一般用于什么场景&#xff1f; 策略模式一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使得它们可以相互替换&#xff0c;这样&#xff0c;客户端可以根据需要在运行时选择合适的算法&#xff0c;…

基于PAI+专属网关+私网连接:构建全链路 Deepseek 云上私有化部署与模型调用架构

DeepSeek - R1 是由深度求索公司推出的首款推理模型&#xff0c;该模型在数学、代码和推理任务上的表现优异&#xff0c;市场反馈火爆。在大模型技术商业化进程中&#xff0c;企业级用户普遍面临四大核心挑战&#xff1a; 算力投入成本高昂&#xff1a;构建千亿参数级模型的训…

【APM】How to enable Trace to Logs on Grafana?

系列文章目录 【APM】Observability Solution 【APM】Build an environment for Traces, Metrics and Logs of App by OpenTelemetry 【APM】NET Traces, Metrics and Logs to OLTP 【APM】How to enable Trace to Logs on Grafana? 前言 本文将介绍如何在Grafana上启用 …

在 Excel 中使用通义灵码辅助开发 VBA 程序

VBA 简介 VBA 是一种用于微软办公套件&#xff08;如 Word、Excel、PowerPoint 等&#xff09;的编程语言&#xff0c;它本质上是一种内嵌的脚本&#xff0c;或者可以认为是一段命令&#xff0c;其标准叫法被称为宏。 VBA 只能依赖于对应的软件进行开发&#xff0c;例如本文就…

vscode终端运行windows服务器的conda出错

远程windows服务器可以运行&#xff0c;本地vscode不能。 打开vscode settings.json文件 添加conda所在路径

紫外相机的应用范围及介绍

&#xff08;一&#xff09;工业领域 半导体制造&#xff1a;在晶圆制造和检测过程中&#xff0c;紫外相机起着关键作用。它可用于裸晶圆检测&#xff0c;能准确识别出制造过程中偶然引入的微粒&#xff08;如灰尘&#xff09;或因处理不当造成的划痕等缺陷。对于图案晶圆检查…

08软件测试需求分析案例-删除用户

删除用户是后台管理菜单的一个功能模块&#xff0c;只有admin才有删除用户的权限。不可删除admin。 1.1 通读文档 通读需求规格说明书是提取信息&#xff0c;提出问题&#xff0c;输出具有逻辑、规则、流程的业务步骤。 信息&#xff1a;此功能应为用户提供确认删除的功能。…

Oracle DBMS_SCHEDULER 与 DBMS_JOB 的对比

Oracle DBMS_SCHEDULER 与 DBMS_JOB 的对比 一 基本概述对比 特性DBMS_JOB (旧版)DBMS_SCHEDULER (新版)引入版本Oracle 7 (1992年)Oracle 10g R1 (2003年)当前状态已过时但仍支持推荐使用的标准设计目的基础作业调度企业级作业调度系统 二 功能特性对比 2.1 作业定义能力 …

Linux网络编程实战:从字节序到UDP协议栈的深度解析与开发指南

网路通信的三大要素&#xff1a;协议&#xff0c;端口和IP 知识点1【字节序】 多字节在主机中的存放数据 把多字节看成一个整体存储的顺序。 为什么我们在文件中没有这个概念呢&#xff1f; 因为文件是字节流&#xff08;流指针&#xff09;&#xff0c;流是以一个字节为操…

mvccc

. MVCC (多版本并发控制) 概念&#xff1a; MVCC 是一种并发控制技术&#xff0c;用于在数据库中实现并发事务的读写操作&#xff0c;同时保证事务的隔离性。MVCC 的核心思想是&#xff0c;在数据库中维护数据的多个版本&#xff0c;每个事务在读取数据时&#xff0c;读取的是…

Kotlin整数相除精度损失roundToInt

Kotlin整数相除精度损失roundToInt import kotlin.math.roundToIntfun main() {val a 0.0fval delta 0.1ffor (i in 0..10) {val r a i * deltaprintln("float${r} toInt${r.toInt()} (0.5 toInt)${(r 0.5).toInt()} round${Math.round(r)} roundToInt${r.roundToInt…

“星睿O6” AI PC开发套件评测 - Windows on Arm 安装指南和性能测评

引言 Radxa联合此芯科技和安谋科技推出全新的"星睿O6"迷你 ITX 主板。该系统搭载了 CIX P1&#xff08;CD8180&#xff09;12 核 Armv9 处理器&#xff0c;拥有高达30T算力的NPU和高性能的GPU&#xff0c;最高配备64GB LPDDR内存&#xff0c;并提供了如 5GbE、HDMI …