跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠

GPU技术交流论坛

administrators

私有

帖子


  • CX4 华为SP333刷回官方10G固件
    F fushinn

    25G固件在MAC下可能无问题。ikuai下无法联网,pve下可能无法联网

    运维部署交流

  • CX4 华为SP333刷回官方10G固件
    F fushinn

    注意事项

    网上下载的 SP380 固件可能存在 连接异常或无法联网的 Bug。
    本文将教你 如何刷回官方固件 并保证设备可以正常使用。


    升级操作说明

    1. 文件准备

    禁止直接打开下面的txt以免文件损坏

    1. 将升级包的文件后缀由 .txt 改为 .zip。
    2. 解压 .zip 文件。

    2. 赋予安装脚本执行权限

    在解压后的目录中执行以下命令:

    chmod +x install.sh
    

    3. 执行升级命令

    运行以下命令开始升级:

    ./install.sh upgrade
    

    ⚠️ 注意:执行过程中 无回显打印,请耐心等待命令执行完成。


    4. 查看升级结果

    (1)查看升级结果状态

    执行以下命令:

    cat result.xml
    

    若输出中:

    <Result>OK</Result>
    

    则表示 升级成功。


    (2)查看升级日志

    执行以下命令查看详细日志信息:

    cat work.log
    

    或直接在当前目录中打开 work.log 文件,查看完整的升级过程日志。


    NIC-SP333-CX4Lx-FW_14.32.1010_X86.txt

    运维部署交流

  • 修复开启Sriov开启后vmbr无法联网的问题
    F fushinn

    复制粘贴到

    /usr/bin/fix_vmbr
    

    然后

    chmod 755 /usr/bin/fix_vmbr
    

    使用交互式脚本自动修复

    fix_vmbr
    

    以下是脚本

    #!/bin/bash
    # fix_vmbr - 为 VM/CT 添加 bridgefix 钩子脚本(自动创建/下载)
    set -euo pipefail
    
    HOOKSCRIPT_ID="local:snippets/bridgefix.sh"
    SNIPPETS_DIR="/var/lib/vz/snippets"
    HOOKSCRIPT_PATH="$SNIPPETS_DIR/bridgefix.sh"
    HOOKSCRIPT_URL="https://raw.githubusercontent.com/jdlayman/pve-hookscript-sriov/master/bridgefix.sh"
    
    # 检查 pvesh, jq, qm, pct
    for cmd in pvesh jq qm pct wget; do
        if ! command -v $cmd >/dev/null 2>&1; then
            echo "❌ 未找到命令: $cmd,请安装后重试。"
            exit 1
        fi
    done
    
    # 创建目录并下载 bridgefix.sh(如果不存在)
    if [[ ! -f "$HOOKSCRIPT_PATH" ]]; then
        echo "📦 $HOOKSCRIPT_PATH 不存在,正在创建目录并下载..."
        mkdir -p "$SNIPPETS_DIR"
        wget -O "$HOOKSCRIPT_PATH" "$HOOKSCRIPT_URL"
        chmod +x "$HOOKSCRIPT_PATH"
        echo "✅ 下载完成:$HOOKSCRIPT_PATH"
    fi
    
    echo "=============================="
    echo " Proxmox VM / CT 列表"
    echo "=============================="
    
    RESOURCES=$(pvesh get /cluster/resources --type vm --output-format json)
    
    printf " %-6s | %-6s | %s\n" "ID" "类型" "名称"
    printf " %s\n" "-------------------------------------------------"
    
    echo "$RESOURCES" | jq -r '.[] | "\(.vmid)\t\(.type)\t\(.name // "-")"' | \
    while IFS=$'\t' read -r vmid vtype name; do
        [[ "$vtype" == "qemu" ]] && vtype="VM"
        [[ "$vtype" == "lxc" ]] && vtype="CT"
        printf " %-6s | %-6s | %s\n" "$vmid" "$vtype" "$name"
    done
    
    echo ""
    read -r -p "请输入要修复的 VMID: " VMID
    
    TYPE=$(echo "$RESOURCES" | jq -r --arg id "$VMID" '.[] | select(.vmid == ($id|tonumber)) | .type')
    
    if [[ -z "$TYPE" || "$TYPE" == "null" ]]; then
        echo "❌ 找不到 VMID $VMID"
        exit 1
    fi
    
    echo ""
    echo "检测到:VMID=$VMID 类型=$TYPE"
    echo ""
    
    if [[ "$TYPE" == "qemu" ]]; then
        echo "➡️  为虚拟机设置 hookscript..."
        qm set "$VMID" --hookscript "$HOOKSCRIPT_ID"
    elif [[ "$TYPE" == "lxc" ]]; then
        echo "➡️  为容器设置 hookscript..."
        pct set "$VMID" --hookscript "$HOOKSCRIPT_ID"
    else
        echo "❌ 未知类型:$TYPE"
        exit 1
    fi
    
    echo "✅ 已成功为 $TYPE $VMID 设置 hookscript:$HOOKSCRIPT_ID"
    
    运维部署交流

  • CX4开启Sriov一键脚本
    F fushinn

    CX4一键开启Sriov并且开机自动启动脚本

    # —— 直接复制整个下面块并运行 —— 
    
    sudo mkdir -p /opt/enable-sriov
    
    sudo tee /opt/enable-sriov/enable-sriov.sh > /dev/null <<'EOF'
    #!/usr/bin/env bash
    # /opt/enable-sriov/enable-sriov.sh
    # 目的:在 enp7s0f0np0 上启用 8 个 VF 并为 VF 0..7 设置 MAC 00:80:00:00:00:00 .. 00:80:00:00:00:07
    set -euo pipefail
    
    # 如需修改接口名,请编辑下方 IFACE 变量或通过 systemd 的 Environment 传入
    IFACE="enp7s0f0np0"
    NUMVFS=8
    SYS="/sys/class/net/${IFACE}/device"
    IP_BIN="$(command -v ip || echo /sbin/ip)"
    LOG_PREFIX="[enable-sriov ${IFACE}]"
    
    if [ "$(id -u)" -ne 0 ]; then
      echo "${LOG_PREFIX} must be run as root" >&2
      exit 1
    fi
    
    if [ ! -d "${SYS}" ]; then
      echo "${LOG_PREFIX} ERROR: sysfs path ${SYS} not found. Is ${IFACE} correct?" >&2
      exit 1
    fi
    
    ${IP_BIN} link set dev "${IFACE}" up 2>/dev/null || true
    
    current=0
    if [ -r "${SYS}/sriov_numvfs" ]; then
      current=$(cat "${SYS}/sriov_numvfs" 2>/dev/null || echo 0)
    fi
    
    echo "${LOG_PREFIX} current sriov_numvfs=${current}, target=${NUMVFS}"
    
    if [ "${current}" -ne "${NUMVFS}" ]; then
      set +e
      echo "${NUMVFS}" > "${SYS}/sriov_numvfs" 2>/dev/null
      rc=$?
      set -e
      if [ $rc -ne 0 ]; then
        echo "${LOG_PREFIX} direct write ${NUMVFS} failed, trying reset to 0 then set ${NUMVFS}"
        echo 0 > "${SYS}/sriov_numvfs" || true
        sleep 0.1
        echo "${NUMVFS}" > "${SYS}/sriov_numvfs"
      fi
      sleep 0.2
      new=$(cat "${SYS}/sriov_numvfs" 2>/dev/null || echo 0)
      echo "${LOG_PREFIX} sriov_numvfs now ${new}"
      if [ "${new}" -ne "${NUMVFS}" ]; then
        echo "${LOG_PREFIX} ERROR: failed to set sriov_numvfs to ${NUMVFS}" >&2
        exit 2
      fi
    else
      echo "${LOG_PREFIX} sriov already set to ${NUMVFS}, skipping re-provision."
    fi
    
    for i in $(seq 0 $((NUMVFS - 1))); do
      last_octet=$(printf "%02x" "${i}")
      mac=$(printf "00:80:00:00:00:%s" "${last_octet}")
      echo "${LOG_PREFIX} set vf ${i} mac ${mac}"
      ${IP_BIN} link set dev "${IFACE}" vf "${i}" mac "${mac}" || {
        echo "${LOG_PREFIX} WARN: failed to set mac for vf ${i}" >&2
      }
      # 可选:取消 spoofchk(若需要允许 VM 使用任意 MAC)
      # ${IP_BIN} link set dev "${IFACE}" vf "${i}" spoofchk off || true
    done
    
    echo "${LOG_PREFIX} done"
    exit 0
    EOF
    
    sudo chmod 755 /opt/enable-sriov/enable-sriov.sh
    
    # 写 systemd unit 到 /etc/systemd/system/enable-sriov.service
    sudo tee /etc/systemd/system/enable-sriov.service > /dev/null <<'EOF'
    [Unit]
    Description=Enable SR-IOV (8 VFs) and configure MACs (generic)
    After=network-pre.target
    Before=network.target
    Wants=network-pre.target
    
    [Service]
    Type=oneshot
    # 如果想用不同接口,编辑 /opt/enable-sriov/enable-sriov.sh 中的 IFACE,
    # 或在这里添加 Environment=IFACE=othername
    ExecStart=/opt/enable-sriov/enable-sriov.sh
    RemainAfterExit=yes
    TimeoutStartSec=30
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    # reload, enable and start
    sudo systemctl daemon-reload
    sudo systemctl enable --now enable-sriov.service
    
    # show recent logs for quick check
    sudo journalctl -u enable-sriov.service -n 200 --no-pager
    
    # —— 安装结束 —— 
    
    
    运维部署交流

  • 常用单线程测速节点
    F fushinn

    常用单线程测速节点

    国内

    wget -O /dev/null https://mirrors.huaweicloud.com/ubuntu-releases/25.04/ubuntu-25.04-desktop-amd64.iso
    

    海外

    wget -O /dev/null "https://speed.cloudflare.com/__down?during=download&bytes=1073741824"
    
    运维部署交流

  • WireGuard 多节点组网教程
    F fushinn

    WireGuard 多节点组网教程

    网络拓扑概述

    本教程介绍如何使用WireGuard构建一个4节点的安全网络架构,实现多个网段间的互联互通。

    网络拓扑图

    ┌─────────────────────────────┐    ┌─────────────────────────────┐
    │          节点A              │◄──►│          节点B              │
    │    OpenWrt路由器            │    │    OpenWrt路由器            │
    │                             │    │                             │
    │ 本地网段: 192.168.1.0/24    │    │ 本地网段: 192.168.2.0/24    │
    │ WG IP: 10.0.0.1/32          │    │ WG IP: 10.0.0.2/32          │
    │ 监听端口: 51820             │    │ 监听端口: 51821             │
    │ 外部地址: nodeA.example.com │    │ 外部地址: nodeB.example.com │
    └──────────────┬──────────────┘    └──────────────┬──────────────┘
                   │                                  │
                   │            ┌─────────────────────────────┐│
                   └───────────►│          节点C              │◄┘
                                │    公网服务器 (中心节点)     │
                                │                             │
                                │ WG IP: 10.0.0.3/32          │
                                │ 监听端口: 51822             │
                                │ 外部地址: nodeC.example.com │
                                └──────────────┬──────────────┘
                                               │
                                        ┌─────────────────────────────┐
                                        │          节点D              │
                                        │      内网服务器             │
                                        │                             │
                                        │ 本地网段: 192.168.3.0/24    │
                                        │ WG IP: 10.0.0.4/32          │
                                        │ 无监听端口 (主动连接)        │
                                        └─────────────────────────────┘
    

    连接关系

    • 节点A ↔ 节点B: 直连,实现两个局域网间的高速通信
    • 节点B ↔ 节点C: 直连,提供优化的访问路径
    • 节点A ↔ 节点C: 直连,确保网络连通性
    • 节点C ↔ 节点D: 连接,节点D通过节点C访问其他网段

    节点配置规划

    节点基本信息

    节点 类型 WireGuard IP 本地网段 监听端口 外部地址 角色
    节点A OpenWrt路由器 10.0.0.1/32 192.168.1.0/24 51820 nodeA.example.com 边缘节点
    节点B OpenWrt路由器 10.0.0.2/32 192.168.2.0/24 51821 nodeB.example.com 边缘节点
    节点C 公网服务器 10.0.0.3/32 - 51822 nodeC.example.com 中心节点
    节点D 内网服务器 10.0.0.4/32 192.168.3.0/24 - - 内网节点

    密钥生成

    每个节点需要生成自己的密钥对:

    # 生成私钥
    wg genkey > private.key
    
    # 生成公钥
    wg pubkey < private.key > public.key
    
    # 生成预共享密钥(可选,用于增强安全性)
    wg genpsk > preshared.key
    

    公钥信息示例

    节点 公钥
    节点A [节点A的公钥]
    节点B [节点B的公钥]
    节点C [节点C的公钥]
    节点D [节点D的公钥]

    路由配置

    网段访问路径

    源网段 目标网段 路径 优化状态
    192.168.1.0/24 192.168.2.0/24 节点A → 节点B (直连) ✅ 优化
    192.168.2.0/24 192.168.1.0/24 节点B → 节点A (直连) ✅ 优化
    192.168.1.0/24 192.168.3.0/24 节点A → 节点C → 节点D ✅ 正常
    192.168.2.0/24 192.168.3.0/24 节点B → 节点C → 节点D ✅ 正常
    192.168.3.0/24 192.168.1.0/24 节点D → 节点C → 节点A ✅ 正常
    192.168.3.0/24 192.168.2.0/24 节点D → 节点C → 节点B ✅ 正常

    AllowedIPs 配置原则

    节点A 配置

    • 到节点C: 10.0.0.3/32, 10.0.0.4/32, 192.168.3.0/24
    • 到节点B: 10.0.0.2/32, 192.168.2.0/24
    • 预共享密钥: 可选择与节点B使用

    节点B 配置

    • 到节点A: 10.0.0.1/32, 192.168.1.0/24
    • 到节点C: 10.0.0.3/32, 10.0.0.4/32, 192.168.3.0/24
    • 预共享密钥: 可选择与节点A使用

    节点C 配置

    • 到节点A: 10.0.0.1/32, 192.168.1.0/24
    • 到节点B: 10.0.0.2/32, 192.168.2.0/24
    • 到节点D: 10.0.0.4/32, 192.168.3.0/24

    节点D 配置

    • 到节点C: 10.0.0.0/24, 192.168.1.0/24, 192.168.2.0/24

    网络参数配置

    通用参数

    • MTU: 1300 (所有节点统一,避免分片)
    • PersistentKeepalive: 25秒 (保持NAT穿透)
    • WireGuard骨干网: 10.0.0.0/24

    安全配置建议

    • 预共享密钥: 建议在关键连接上使用预共享密钥增强安全性
    • 定期更换密钥: 建议定期更换WireGuard密钥
    • 防火墙规则: 严格控制WireGuard端口访问

    配置文件示例

    节点A (OpenWrt) 配置

    # /etc/config/network 配置
    config interface 'wg0'
        option proto 'wireguard'
        option private_key '[节点A私钥]'
        option listen_port '51820'
        list addresses '10.0.0.1/32'
    
    config wireguard_wg0
        option public_key '[节点B公钥]'
        option endpoint 'nodeB.example.com:51821'
        option preshared_key '[预共享密钥]'
        list allowed_ips '10.0.0.2/32'
        list allowed_ips '192.168.2.0/24'
        option persistent_keepalive '25'
    
    config wireguard_wg0
        option public_key '[节点C公钥]'
        option endpoint 'nodeC.example.com:51822'
        list allowed_ips '10.0.0.3/32'
        list allowed_ips '10.0.0.4/32'
        list allowed_ips '192.168.3.0/24'
        option persistent_keepalive '25'
    

    节点C (Linux服务器) 配置

    [Interface]
    PrivateKey = [节点C私钥]
    Address = 10.0.0.3/32
    ListenPort = 51822
    PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    
    [Peer]
    # 节点A
    PublicKey = [节点A公钥]
    Endpoint = nodeA.example.com:51820
    AllowedIPs = 10.0.0.1/32, 192.168.1.0/24
    PersistentKeepalive = 25
    
    [Peer]
    # 节点B
    PublicKey = [节点B公钥]
    Endpoint = nodeB.example.com:51821
    AllowedIPs = 10.0.0.2/32, 192.168.2.0/24
    PersistentKeepalive = 25
    
    [Peer]
    # 节点D
    PublicKey = [节点D公钥]
    AllowedIPs = 10.0.0.4/32, 192.168.3.0/24
    PersistentKeepalive = 25
    

    节点D (内网服务器) 配置

    [Interface]
    PrivateKey = [节点D私钥]
    Address = 10.0.0.4/32
    PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    
    [Peer]
    # 节点C (中心节点)
    PublicKey = [节点C公钥]
    Endpoint = nodeC.example.com:51822
    AllowedIPs = 10.0.0.0/24, 192.168.1.0/24, 192.168.2.0/24
    PersistentKeepalive = 25
    

    防火墙和NAT配置

    各节点NAT规则

    OpenWrt节点 (节点A、B)

    # 允许WireGuard转发
    iptables -A FORWARD -i wg0 -j ACCEPT
    iptables -A FORWARD -o wg0 -j ACCEPT
    
    # 本地网段NAT
    iptables -t nat -A POSTROUTING -s 192.168.x.0/24 -o wan -j MASQUERADE
    

    Linux服务器节点 (节点C、D)

    # 启用IP转发
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # 防火墙规则
    iptables -A FORWARD -i wg0 -j ACCEPT
    iptables -A FORWARD -o wg0 -j ACCEPT
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    
    # 开放WireGuard端口
    iptables -A INPUT -p udp --dport 51822 -j ACCEPT
    

    端口开放要求

    节点 端口 协议 说明
    节点A 51820 UDP WireGuard监听端口
    节点B 51821 UDP WireGuard监听端口
    节点C 51822 UDP WireGuard监听端口
    节点D - - 无需开放端口

    部署步骤

    1. 准备工作

    1. 确保所有节点已安装WireGuard
    2. 为每个节点生成密钥对
    3. 规划IP地址分配
    4. 确认网络连通性

    2. 部署顺序

    1. 节点C (中心节点) - 首先配置并启动
    2. 节点D (连接到节点C)
    3. 节点A (连接到节点B和节点C)
    4. 节点B (连接到节点A和节点C)

    3. 启动服务

    OpenWrt节点

    # 重启网络服务
    /etc/init.d/network restart
    
    # 检查接口状态
    ifconfig wg0
    

    Linux节点

    # 启动WireGuard
    sudo wg-quick up wg0
    
    # 设置开机自启
    sudo systemctl enable wg-quick@wg0
    

    验证和测试

    基本验证命令

    # 检查WireGuard状态
    sudo wg show
    
    # 检查路由表
    ip route show | grep wg
    
    # 测试连通性
    ping -c 3 10.0.0.3  # 测试到中心节点
    ping -c 3 192.168.2.1  # 测试跨网段连通性
    
    # 检查握手状态
    sudo wg show wg0 latest-handshakes
    
    # 查看流量统计
    sudo wg show wg0 transfer
    

    连通性测试脚本

    #!/bin/bash
    # 连通性测试脚本
    
    echo "测试WireGuard骨干网连通性..."
    for ip in 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4; do
        if ping -c 1 -W 3 $ip > /dev/null 2>&1; then
            echo "✅ $ip 连通"
        else
            echo "❌ $ip 不通"
        fi
    done
    
    echo "\n测试跨网段连通性..."
    for subnet in 192.168.1.1 192.168.2.1 192.168.3.1; do
        if ping -c 1 -W 3 $subnet > /dev/null 2>&1; then
            echo "✅ $subnet 连通"
        else
            echo "❌ $subnet 不通"
        fi
    done
    

    网络架构优势

    1. 高效路由: 边缘节点直连,减少中转延迟
    2. 负载分散: 避免中心节点成为瓶颈
    3. 路径冗余: 多条路径确保网络可靠性
    4. 安全加固: 支持预共享密钥增强安全性
    5. 易于扩展: 中心节点架构便于添加新节点
    6. 灵活配置: 支持不同类型设备和操作系统

    故障排除

    常见问题及解决方案

    1. 连接建立失败

    • 检查防火墙端口是否开放
    • 验证endpoint地址和端口配置
    • 确认公钥配置正确

    2. 路由不通

    • 检查AllowedIPs配置
    • 验证系统路由表
    • 确认IP转发已启用

    3. 性能问题

    • 调整MTU设置
    • 检查网络路径和延迟
    • 优化路由配置

    4. 握手失败

    • 确认时间同步
    • 检查网络连通性
    • 验证密钥配置

    监控要点

    • WireGuard服务运行状态
    • 握手时间和频率
    • 网络延迟和丢包率
    • 流量统计和带宽使用
    • 系统资源使用情况

    日志分析

    # 查看系统日志
    journalctl -u wg-quick@wg0 -f
    
    # 查看内核日志
    dmesg | grep wireguard
    
    # OpenWrt日志
    logread | grep wireguard
    

    安全建议

    1. 定期更换密钥: 建议每6个月更换一次WireGuard密钥
    2. 使用预共享密钥: 在关键连接上启用预共享密钥
    3. 限制访问: 通过防火墙限制WireGuard端口访问
    4. 监控连接: 定期检查异常连接和流量
    5. 备份配置: 定期备份配置文件和密钥
    6. 更新软件: 保持WireGuard软件版本最新

    扩展配置

    添加新节点

    1. 为新节点生成密钥对
    2. 在中心节点添加新的Peer配置
    3. 配置新节点连接到中心节点
    4. 更新相关节点的AllowedIPs配置
    5. 测试连通性

    高可用配置

    • 部署多个中心节点
    • 配置节点间的冗余连接
    • 实现自动故障切换
    • 使用负载均衡
    运维部署交流

  • 使用DG1显卡在裸机Linux上打造高性能NAS服务器:完全解码指南
    F fushinn

    前言

    Intel DG1 显卡凭借其优秀的解码性能和低功耗,成为打造高性能NAS服务器的理想选择。然而,在Linux系统上驱动DG1显卡并实现最佳性能并非易事。本文档旨在分享DG1显卡在裸机Linux系统上的驱动经验,并提供详细的配置指南,帮助用户打造高性能NAS服务器。

    最终方案是Fedora41 +内核6.12.11 + i915

    至于为什么用Fedora,相对Arch稳定且新,占用也小,pve直通的话得更换第三方内核,esxi貌似只能发挥dg1一半的性能,飞牛的话用的魔改驱动(不是说不好,只不过为了考虑以后更新方便,主线驱动更方便更新,DG1 hang的问题6.13内核中已经包含了补丁,Fedora虽然没有Arch那么激进但是过不了多久也会更新6.13内核,这也是一个原因),Ubuntu夹带私货一生黑,对,说的就是你,snap狗皮膏药。Debian内核有点老了但是听说最新的Debian也有反向修复的i915驱动,可以自行尝试

    测试环境

    硬件: 12100F+H610+Intel DG1 显卡
    操作系统: Ubuntu、Fedora、Arch Linux
    内核版本: 6.8、6.12、6.12.11
    驱动类型: Xe 内核驱动、intel-i915-dkms,主线i915
    应用软件: Jellyfin
    测试方法: 裸机安装、虚拟机直通(ESXi、PVE)
    测试结果

    虚拟机直通:

    ESXi: DG1直通给Windows,可正常输出显示信号和解码,但性能减半。

    PVE: 加载皮蛋熊修改后的内核,直通DG1给飞牛OS,飞牛OS加载皮蛋熊的i915驱动,可正常解码,AI相册可正常调用显卡,但系统资源占用显示异常。

    裸机Ubuntu24.04 Server LTS(内核6.8 + Xe):

    使用Xe内核驱动,添加i915.force_probe=!4908 xe.force_probe=4908内核参数,使用nyanmisaka/jellyfin,无需替换iHD驱动,可正常解码,DP信号输出正常,但无法使用intel_gpu_top,据称6.8内核Xe驱动存在OpenCL bug。

    裸机Ubuntu24.04 Server LTS(内核6.8 + i915-dkms):

    使用官方反向移植的intel-i915-dkms驱动,需替换iHD驱动,可正常解码,但不输出显示信号(内核屏蔽)。

    Fedora 41/Arch Linux(内核6.12):

    使用Xe内核,可正常输出显示,但无法正常解码,出现卡屏和花屏现象。

    Fedora 41(内核6.12.11):

    根据@NyanMisaka在jellyfin论坛的帖子,Jellyfin 10.10.5官方已支持DG1,但需满足以下条件:

    内核版本:6.1.124+/6.6.70+/6.12.9+/6.13+(Xe内核需要6.9/6.10/6.13+)

    内核启动参数:根据实际情况添加i915/xe.force_probe=4908或i915/xe.force_probe=4905

    实测添加i915.force_probe=4908可正常显示输出和解码播放,且占用率显示正常

    教程部分

    安装Fedora41 Server版本
    使用sudo dnf update更新系统(默认的内核是6.11),并重启
    修改/etc/default/grub的GRUB_CMDLINE_LINUX部分,类似GRUB_CMDLINE_LINUX=“rhgb quiet selinux=0 i915.force_probe=4908”
    使用sudo grub2-mkconfig -o /boot/grub2/grub.cfg,更新grub配置,并重启
    输入sudo lspci -vvn | grep “i915”,如果出现Kernel driver in use: i915则驱动初步成功
    使用nyanmisaka/jellyfin最新镜像启动服务器,并且开启硬解,播放测试视频,观察帧率等是否正常
    输入sudo dmesg -w,并且开启硬解,播放视频,查看内核有无报错
    输入sudo dnf install intel-gpu-tools,安装工具包,播放视频时,输入intel_gpu_top查看显卡占用
    05a702be-d3ad-4167-af7a-48736224e86c-image.png
    41680d3a-98b0-42d4-800c-d49ccab15be0-image.png
    b2cf6c7f-ba33-424a-98f6-acb4cc78badb-image.png
    dcc693d6-aaa5-43d3-b3fb-bdcfaa98bb0b-image.png
    常用调优建议

    使用ufw替代系统默认的防火墙(更简单,而且不会和docker冲突)
    使用sudo turbostat --Summary --quiet --show Busy%,Bzy_MHz,IRQ,PkgWatt,PkgTmp,查看cpu功耗等信息
    如果遇到btrfs报错,可尝试sudo dnf install btrfs-progs udisks2-btrfs
    免责声明

    本文档仅供参考,不构成任何形式的保证。用户在使用DG1显卡和Linux系统时,应自行承担相关风险。

    感谢

    感谢@NyanMisaka @皮蛋熊笨熊,分享的宝贵经验,为本文档的编写提供了重要参考。

    感谢https://icarusradio.github.io/guides/ubuntu-dg1-jellyfin.html
    提供的经验

    技术调优探讨

  • MSI-Z690-A主板上在Linux或PVE上的温控传感器驱动教程
    F fushinn

    使用DKMS模块

    https://github.com/Fred78290/nct6687d
    

    安装命令

    git clone https://github.com/Fred78290/nct6687d
    cd nct6687d
    make dkms/install
    

    查看温度

    这里有些传感器(比如DRAM)还是有点问题。忽视就好

    apt install lm-sensors
    
    sensors
    

    35cdf4ec-752a-4390-8e1c-ab9ce94f39d9-image.png

    硬件知识分享

  • 英特尔12-14代大小核在Proxmox上的最优调度策略探究
    F fushinn

    先说结论

    12-14代大小核CPU在最新的PVE环境下基本不需要做任何更改。不需要绑定aff核心亲和度。这样会适得其反。大小核在Linux上(测试宿主机内核为pve的6.8和6.14两个版本)会自动调度,优先使用P Core,然后使用E Core,最后使用HT Core(超线程)。由于AFF实际上是破坏了这种调度策略。实际上的效果甚至不如自动调度。另外在使用VGPU的情况可能会遇到单核跑分下降很多的情况如下图。不知道是由于什么引起的。
    总结就是,除了LXC之外。放开手让Linux内核自动分配吧

    LXC测试结果

    LXC会自动随机分配核心。这里需要手动调整核心绑定。这是和虚拟机调度不同的地方。也需要避免跨核心的情况。参考添加参数:

    lxc.cgroup2.cpuset.cpus: 14-15
    

    1fb00697-7de4-43a7-9278-d16a8ca377de-image.png
    调整之后:
    330ee024-d5d0-4043-86c6-299b3f3f5fb2-image.png

    虚拟机测试结果

    测试环境

    • i5-14400 6P4E
    • MSi Z690-A
    • Nvidia Tesla T10

    系统环境

    • 物理Windows11
    • 虚拟机Windows 10 - VGPU - 8 VCore
      23bf67d7-c983-4fed-b935-b568e172c8ad-image.png
    • 虚拟机Windows10 - IGPU
      ef346a2e-8509-42e4-be87-ebb427dd91e8-image.png

    测试结果

    • 虚拟机Windows10 - IGPU - 4 VCore
      ef561e0e-3a2e-408b-b5ef-980464ddfef7-image.png
    • 虚拟机Windows10 - VGPU - 8 VCore
      fbd8439e-831c-4636-a12b-3d40b087b370-image.png
    • 虚拟机Windows10 - VGPU - 8 VCore (AFF绑定大核心偶尔出现的情况)
      a0cfb57b-7f64-4b0d-89f7-72aa59c78294-image.png
    技术调优探讨

  • 为Linux RDP添加核显加速简明指南
    F fushinn

    xrdp_vaapi 项目 - 带硬件加速的远程桌面服务

    项目描述

    本项目自动构建支持Intel VA-API硬件加速的xrdp远程桌面服务器,并为Debian/Ubuntu系统配置可用的虚拟机环境。

    虽然主要设计用于配合libvirt/qemu虚拟机和i915-sriov-dkms驱动使用,但也适用于其他场景。

    30adb9d4-b0c7-4a2e-b905-dcaee41cafe3-image.png

    系统源配置要求

    Debian/Ubuntu用户必须确保/etc/apt/sources.list包含完整源配置:

    Debian系统源

    deb https://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
    deb-src https://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
    deb https://deb.debian.org/debian trixie main contrib non-free non-free-firmware
    deb-src https://deb.debian.org/debian trixie main contrib non-free non-free-firmware
    

    Ubuntu系统源

    deb http://de.archive.ubuntu.com/ubuntu noble main restricted universe multiverse
    deb-src http://de.archive.ubuntu.com/ubuntu noble main restricted universe multiverse
    

    使用指南

    基础使用

    1. 克隆项目仓库:
    git clone https://github.com/tabletseeker/xrdp_vaapi -b master
    
    1. 进入项目目录:
    cd xrdp_vaapi
    
    1. 执行安装脚本:
    bash xrdp_vaapi.sh
    

    参数与环境变量说明

    xrdp_vaapi.sh 脚本参数

    参数/变量 说明 默认值/可选值
    DRIVER_NAME LIBVA_DRIVER_NAME环境变量 默认: iHD
    BUILD_DIR 构建源代码目录 默认: 当前目录($PWD)
    –sriov 或 -s 编译安装i915_sriov_dkms驱动 默认: false (不安装)

    buildyami.sh 脚本参数

    参数 说明 默认值/可选值
    –prefix 安装目录 默认: /usr/local
    –disable-x11 禁用X11支持编译 默认: 启用
    –latest 自动获取最新版本 默认: 使用预设版本

    注意:若不使用--latest参数,将使用xrdp_vaapi/yami/omatic/buildyami.sh文件中243-247行指定的固定版本号。

    运维部署交流

成员列表

F fushinn
  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组