博客

  • Debian 13 修改 Hostname 主机名

    在 Debian 13 中,修改主机名(Hostname)是非常基础但重要的系统管理操作。无论是部署服务器、搭建集群,还是运行各类服务,一个规范且清晰的主机名,都有助于后续运维、监控与问题排查。

    1. 查看当前 Hostname

    在修改之前,先确认当前系统主机名及系统信息:

    hostnamectl
    

    示例输出:

    Static hostname: debian
           Icon name: computer-vm
             Chassis: vm
          Machine ID: xxxxx
             Boot ID: xxxxx
        Product UUID: xxxxx
      Virtualization: kvm
    Operating System: Debian GNU/Linux 13 (trixie)
              Kernel: Linux 6.x
        Architecture: x86-64
     Hardware Vendor: Red Hat
      Hardware Model: KVM
    

    其中 Static hostname 即当前系统的主机名。

    2. 使用 hostnamectl 修改

    例如将主机名修改为 server01

    hostnamectl set-hostname server01
    

    执行后无需重启,即可看到新的主机名已更新。

    再次确认:

    hostnamectl
    

    3. 同步修改 /etc/hosts

    修改 hostname 后需要更新 /etc/hosts,避免本地解析异常或服务报错。

    编辑文件:

    nano /etc/hosts
    

    原内容示例:

    127.0.0.1   localhost
    127.0.1.1   debian
    

    修改为:

    127.0.0.1   localhost
    127.0.1.1   server01
  • Fedora 44 编译 llama.cpp 提示 GCC 16 与 CUDA 不兼容的解决方法

    作为一个喜欢尝鲜的开发者,Fedora 激进的软件源更新速度总是让人又爱又恨。这不刚把系统升级到 Fedora 44,准备用手头的NVIDIA重新编译一份最新版的 llama.cpp 来跑大模型,结果在 CMake 配置阶段系统默认的 GCC 16 太前沿了,直接被 NVIDIA 的 nvcc 拒之门外。

    在经过一番摸索(和不想折腾多版本 GCC 的挣扎)后,我成功用最轻量的方式搞定了这个“版本不兼容”的顽疾。现将这次踩坑与验证的全过程整理成文,希望能给同样在 Linux 新版本生态里折腾本地大模型的朋友们提供一点参考。

    1. 编译llama.cpp 报错

    在 Fedora 44 系统下编译 llama.cpp 并启用 CUDA 加速时,遇到一个由于 GCC 版本过高 导致的 CMake 配置失败问题。

    当执行如下编译配置命令时:

    cmake -B build \
          -DGGML_CUDA=ON \
          -DCMAKE_BUILD_TYPE=Release \
          -DCMAKE_CUDA_ARCHITECTURES=86 \
          -DCMAKE_C_FLAGS="-march=native" \
          -DCMAKE_CXX_FLAGS="-march=native"

    CMake 会直接抛出如下错误:

    /usr/local/cuda/include/crt/host_config.h:137:2: error: #error -- unsupported GNU version! gcc versions later than 15 are not supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check;

    原因分析:
    Fedora 的软件源更新一向激进,系统默认的 GCC 版本已经来到了 16.x。而当前的 CUDA Toolkit(即使是较新的 13.x 版本)内部的 nvcc 编译器出于稳定性考虑,硬性限制了最高只支持到 GCC 15。检测到工具链版本超前流,nvcc 主动触发了宏定义错误并终止了编译。

    2. 解决方案 强行忽略版本检查

    我不想在系统中折腾多版本 GCC 切换,可以直接在 CMake 中向 nvcc 传递 -allow-unsupported-compiler 标志来忽略版本检查

    # 1. 清理缓存
    rm -rf build
    
    # 2. 重新配置 CMake 并传入显式标志
    cmake -B build \
          -DGGML_CUDA=ON \
          -DCMAKE_BUILD_TYPE=Release \
          -DCMAKE_CUDA_ARCHITECTURES=86 \
          -DCMAKE_C_FLAGS="-march=native" \
          -DCMAKE_CXX_FLAGS="-march=native" \
          -DCMAKE_CUDA_FLAGS="-allow-unsupported-compiler"
    
    # 3. 开始多核并行编译
    cmake --build build --config Release -j$(nproc)

    3. 验证 CUDA 是否成功启用

    编译完成后,可以通过 llama.cpp 自带的工具来验证 GPU 加速是否真正生效。检查基础版本与编译器信息

    liqixin@fedora:~/dev/llama.cpp/$ ./build/bin/llama-cli --version
    version:9352 (b4c0549a4)
    built with GNU 16.1.1
  • Fedora 44 完美多媒体指南:从 ffmpeg-free 完美切换完整版 FFmpeg

    在 Fedora中,由于系统默认只自带了开源且无专利争议的“阉割版” ffmpeg-free(缺乏 H.264、H.265、AAC 等常见编解码器),要享受完整的影音体验,必须将其替换为 RPM Fusion 提供的完整版 FFmpeg

    1. 添加 RPM Fusion 仓库

    为系统添加 RPM Fusion 仓库。它包含了 Fedora 官方因政策原因无法收录的自由软件(Free)和非自由软件(Nonfree,如闭源驱动和部分专利编解码器)。

    sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

    2. 切换到完整版 FFmpeg

    使用 dnf swap 命令,安全地将系统自带的 ffmpeg-free 替换为 RPM Fusion 提供的、带有全套编解码器的完整版 ffmpeg。

    sudo dnf swap ffmpeg-free ffmpeg --allowerasing
  • 在 Fedora 44 上安装 NVIDIA CUDA

    在最新发布的 Fedora 44 系统上,基于 NVIDIA 官方 RPM 联网源快速搭建 CUDA 算力环境

    1. 添加 NVIDIA 官方软件源

    将 NVIDIA 为 Fedora 44 编译的官方源添加到 DNF 仓库中,并刷新本地缓存。

    # 添加 Fedora 44 专属 CUDA 软件源
    sudo dnf config-manager addrepo --from-repofile https://developer.download.nvidia.com/compute/cuda/repos/fedora44/x86_64/cuda-fedora44.repo
    
    # 清理 DNF 缓存
    sudo dnf clean all

    2. 安装 NVIDIA 驱动与 CUDA 工具包

    # 安装指定版本 Toolkit
    sudo dnf -y install cuda-toolkit-13-3
    
    # 安装专有 NVIDIA驱动
    sudo dnf -y install cuda-drivers

    配置环境变量(配置 nvcc 命令)

    安装完成后,系统默认不会将 nvcc 编译器路径加入全局变量。执行以下命令,将 CUDA 路径追加到 ~/.bashrc 中:

    cat >> ~/.bashrc << 'EOF'
    
    # NVIDIA CUDA TOOLKIT
    export PATH=/usr/local/cuda/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
    EOF

    让配置立即生效

    source ~/.bashrc

    验证安装结果

    重启系统后验证 GPU 驱动状态

    # reboot 重启系统
    nvcc -V
    nvidia-smi
  • 在 Fedora 44 上部署 OpenAI Whisper

    OpenAI Whisper 是一个由 OpenAI 开源的、极其强大的语音识别(ASR)大模型,其核心功能是将人类的语音高效、精准地转化为文字。由于其完全开源,你可以将其轻松部署在本地,享受 100% 的隐私安全与零成本的转写体验。

    在 Fedora 44 系统中,配合目前业界最快的 Python 包管理工具 uv,我们可以用极短的时间、极干净的代码链,快速搭建起一套现代化的 OpenAI Whisper 语音识别环境。

    1. 安装 uv

    uv 是目前最快的 Python 包管理工具,我们可以直接通过 dnf 进行全局安装:

    sudo dnf install uv

    安装完成后验证:

    uv --version

    2. 创建并进入项目目录

    打开终端(Terminal),创建一个独立的文件夹用于存放 Whisper 项目

    mkdir openai-whisper
    cd openai-whisper

    3. 创建并激活虚拟环境

    为了保证 Python 环境的隔离与干净,我们使用 uv 来创建并激活虚拟环境

    # 使用 uv 创建虚拟环境(默认目录为 .venv)
    uv venv
    
    # 激活虚拟环境
    source .venv/bin/activate

    4. 安装openai-whisper

    GPU 显卡加速版

    如果你的机器安装了 NVIDIA 显卡与 CUDA,可安装 GPU 版本:

    # 安装 PyTorch CUDA 版本
    pip install torch torchvision --index-url https://download.pytorch.org/whl/cu132
    
    # 安装 OpenAI Whisper
    pip install -U openai-whisper

    CPU 版

    CPU 版本(无独立显卡)

    # 安装 OpenAI Whisper
    pip install -U openai-whisper

    运行

    whisper --help
    
    whisper audio.flac audio.mp3 audio.wav --model turbo
  • Fedora 43 安装 MPV 并开启 NVIDIA 显卡硬件解码指南

    在 Linux 系统下,配置完美的 4K/8K 超高清视频硬件解码(硬解)一直是个技术活。由于开源协议和商业专利限制,Fedora 官方仓库默认分发的多媒体后端(FFmpeg)剥离了 H.264 和 HEVC/H.265 等主流视频格式的编解码核心。这会导致即使你拥有高规格的独立显卡,播放高清视频时系统依然会回退到 CPU 纯软解,造成疯狂掉帧、音画不同步以及 CPU 满载发热。

    1. 引入 RPM Fusion 自由仓库

    RPM Fusion 提供了 Fedora 官方因法律原因无法内置的开源多媒体解码器。首先在终端中执行以下命令引入 Free 仓库:

    sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
    
    

    2. 强行替换系统自带的阉割版 FFmpeg

    引入仓库后,通过 dnf swap 命令,无损地将系统底层的 ffmpeg-free 库对拷替换为全功能的 ffmpeg。这一步会通过 --allowerasing 参数自动清理冲突的旧组件:

    sudo dnf swap ffmpeg-free ffmpeg --allowerasing
    
    

    3. 验证系统解码器状态

    替换完成后,需要确认 H.264、HEVC 等核心解码器以及 NVIDIA 的硬件加速接口是否已经成功挂载。执行以下命令:

    liqixin@fedora:~$ ffmpeg -decoders | grep -E "h264|hevc|vp9|av1"
    ffmpeg version 7.1.4 Copyright (c) 2000-2026 the FFmpeg developers
      built with gcc 15 (GCC)
      configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --docdir=/usr/share/doc/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer' --extra-ldflags='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' --extra-cflags=' -I/usr/include/rav1e' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3 --enable-bzlib --enable-chromaprint --enable-fontconfig --enable-frei0r --enable-gcrypt --enable-gnutls --enable-ladspa --enable-lcms2 --enable-libaom --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libass --enable-libbluray --enable-libbs2b --enable-libcodec2 --enable-libcdio --enable-libdrm --enable-libjack --enable-libjxl --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libilbc --enable-liblc3 --enable-libmp3lame --enable-libmysofa --enable-nvenc --enable-openal --enable-opencl --enable-opengl --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-libplacebo --enable-librsvg --enable-librav1e --enable-librubberband --enable-libqrencode --enable-libsmbclient --enable-version3 --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-version3 --enable-vapoursynth --enable-libvpx --enable-libvvenc --enable-vulkan --enable-libshaderc --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libxml2 --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-avfilter --enable-libmodplug --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-lto --enable-libvpl --enable-runtime-cpudetect
      libavutil      59. 39.100 / 59. 39.100
      libavcodec     61. 19.101 / 61. 19.101
      libavformat    61.  7.102 / 61.  7.102
      libavdevice    61.  3.100 / 61.  3.100
      libavfilter    10.  5.100 / 10.  5.100
      libswscale      8.  3.100 /  8.  3.100
      libswresample   5.  3.100 /  5.  3.100
      libpostproc    58.  3.100 / 58.  3.100
     V..... libdav1d             dav1d AV1 decoder by VideoLAN (codec av1)
     V....D libaom-av1           libaom AV1 (codec av1)
     V....D av1                  Alliance for Open Media AV1
     V..... av1_cuvid            Nvidia CUVID AV1 decoder (codec av1)
     V....D av1_qsv              AV1 video (Intel Quick Sync Video acceleration) (codec av1)
     VFS..D h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
     V..... h264_v4l2m2m         V4L2 mem2mem H.264 decoder wrapper (codec h264)
     V....D h264_qsv             H264 video (Intel Quick Sync Video acceleration) (codec h264)
     V....D libopenh264          OpenH264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
     V..... h264_cuvid           Nvidia CUVID H264 decoder (codec h264)
     VFS..D hevc                 HEVC (High Efficiency Video Coding)
     V....D hevc_qsv             HEVC video (Intel Quick Sync Video acceleration) (codec hevc)
     V..... hevc_v4l2m2m         V4L2 mem2mem HEVC decoder wrapper (codec hevc)
     V..... hevc_cuvid           Nvidia CUVID HEVC decoder (codec hevc)
     VFS..D vp9                  Google VP9
     V..... vp9_v4l2m2m          V4L2 mem2mem VP9 decoder wrapper (codec vp9)
     V..... libvpx-vp9           libvpx VP9 (codec vp9)
     V..... vp9_cuvid            Nvidia CUVID VP9 decoder (codec vp9)
     V....D vp9_qsv              VP9 video (Intel Quick Sync Video acceleration) (codec vp9)
     A....D wmav1                Windows Media Audio 1
    liqixin@fedora:~$ 
    
    
    

    正确输出示例: 在输出的列表中,如果能看到真正的 h264 和 hevc 条目,并且出现了带有 h264_cuvid 和 hevc_cuvid 后缀的行,说明 FFmpeg 已经成功打通了 NVIDIA 的原生显卡硬件加速通道。

    4. 安装播放器 MPV

    多媒体基础环境就绪后,直接通过 DNF 安装官方编译的 MPV 播放器。此时的 MPV 会自动链接到刚刚安装的全功能 FFmpeg 动态库:

    sudo dnf install mpv
    
    

    5. 配置 MPV 默认开启 NVIDIA 原生硬解

    虽然环境已经打通,但为了让 MPV 每次打开视频时都自动调用显卡的 NVDEC 引擎(走 CUDA 通道),而不是继续消耗 CPU,我们需要为其创建一个全局配置文件。

    执行以下命令创建并编辑 MPV 配置:

    mkdir -p ~/.config/mpv
    nano ~/.config/mpv/mpv.conf
    
    

    写入以下高性能硬解与高画质渲染管线配置:

    # 默认启用 NVIDIA 原生硬解接口 (NVDEC)
    hwdec=nvdec
    
    # 启用高质量 GPU 渲染预设(包含精准的 HDR 转 SDR 色调映射、高阶缩放算法)
    vo=gpu
    profile=gpu-hq
    
    # 允许 MPV 跨越损坏的时间戳进行平滑补偿,防止部分非标视频音画不同步
    video-sync=display-resample