标签: Fedora Workstation

  • 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
    
  • 解决 Fedora 43 (GNOME 49) 远程 SSH 触发 “The system will suspend now!”

    我把家里的台式机升级到Fedora 43 ,GNOME49 用起来确实挺舒服,顺手将 Fedora 43 Workstation 作为远程开发机或服务器使用时,遇到一个特别烦的问题,SSH 连着连着突然断了,因系统自动进入休眠(Suspend)而中断。我在 GNOME 图形界面的电源设置中关闭了所有自动挂起选项,系统依然可能在远程操作期间弹出 The system will suspend now! 并强制断开连接。

    1. 常规配置(图形界面)

    我开始以为在 GNOME 桌面环境的电源管理中配置这样就可以正常解决这个问题但并没有解决,没用

    1. 打开 Settings (设置) -> Power (电源)
    2. Automatic Screen Blank (自动黑屏):设置为 Off (关闭)
    3. Automatic Suspend (自动挂起):确保设置为 Off (关闭)

    2. 禁用 systemd 休眠

    当 GUI 设置失效时,说明系统底层的 systemd 策略仍处于活跃状态。对于需要保持常开的远程机器,最稳妥的方法是屏蔽(Mask)相关的休眠单元。

    2.1 诊断休眠状态

    在操作前,你可以运行以下命令查看系统当前的休眠服务状态:

    sudo systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target

    2.2 执行屏蔽命令

    通过 mask 命令,我们将休眠相关的 Target 指向 /dev/null。这是一种比 disable 更强力的手段,能够防止任何物理按键、系统 API 或 GUI 插件触发休眠。

    # 一键禁用所有休眠模式
    sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

    执行效果: 系统将完全忽略所有的休眠请求,彻底终结 SSH 远程连接时的中断风险。

    2.3 恢复休眠(可选)

    如果你在未来需要恢复笔记本的合盖休眠或台式机的节能模式,可以使用以下命令解除屏蔽:

    sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

    3. 技术解析:为什么 GUI 设置后依然会断连

    在 Fedora 43 (GNOME 49) 中,这种情况通常由以下原因引起:

    • 多 Session 竞争: GNOME 的电源设置有时仅对当前的本地会话有效。如果系统停留在 GDM 登录界面,或者系统认为本地处于“无活动”状态,底层 systemd-logind 可能会接管电源策略。
    • SSH 会话识别: 系统默认可能不将纯远程 SSH 流量识别为“用户活动”,从而触发了全局的空闲休眠逻辑。

    追求“Vibe Coding”或需要高可用远程环境的开发者来说,单纯依靠 GNOME 的开关是不够的。“UI 辅助设置 + systemd 强制 Mask” 才是确保 Fedora 43 系统稳如磐石、SSH 永不断线的标准做法。

  • Fedora Workstation 43 初始化设置卡住,Next 按钮无响应的通用修复方案

    问题描述

    在完成 Fedora Workstation 43 的安装后,系统会进入首次开机初始化设置(Initial Setup)流程。在 Privacy(隐私设置) 页面点击 Next(下一步) 时发现按钮毫无反应,系统处于假死状态,导致无法正常进入桌面。

    这通常是由于内核在初始化阶段与特定的显示硬件(尤其是部分 NVIDIA 显卡或集成显卡)存在兼容性问题,导致图形界面渲染挂起。

    解决方案:使用 VESA 模式强制初始化

    通过在引导时临时禁用显卡硬件加速,使用 VESA 模式(纯软件渲染)可以顺利绕过此卡顿。

    1. 重启并进入编辑模式

    强制重启你的电脑。在看到 GRUB 引导菜单(选择 Fedora 内核版本的倒计时界面)时,立即按下键盘上的 e 键进入编辑模式。

    2. 修改内核启动参数

    在出现的代码页中,找到以 linux 开头的行(通常位于倒数第 3 或第 4 行)。

    1. 将光标移动到该行的末尾
    2. 先输入一个 空格
    3. 手动输入以下参数:
      inst.xdriver=vesa nomodeset

    3. 启动并完成设置

    按下 Ctrl + X 启动系统。此时系统会以低分辨率模式启动,初始化页面的 Next 按钮现在可以正常点击了。

    进入桌面后的后续处理

    成功进入桌面后,由于我们使用了 nomodeset,系统分辨率会很低且操作有延迟。请务必执行以下步骤恢复正常:

    1. 更新系统: 打开终端,运行 sudo dnf update
    2. 安装驱动: 检查并安装适合你显卡的驱动程序(如 NVIDIA 专有驱动)。
    3. 正常重启: 驱动安装完成后,直接重启电脑,无需再手动输入任何参数,系统将恢复满血性能。