分类: 未分类

  • 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 完美多媒体指南:从 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 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
    
  • 使用 Zensical 构建本地个人 Wiki 知识库

    Zensical 是一个现代化的开源静态网站生成器(Static Site Generator, SSG),主要用于将 Markdown 文本文件编译成美观、响应迅速的技术文档网站或个人知识库。

    1. 创建并进入项目目录

    打开终端(Terminal),为你的 Wiki 创建一个独立的文件夹并进入:

    mkdir zensical
    cd zensical

    2. 创建并激活虚拟环境

    为了保证依赖隔离,我们使用 Python 包管理工具 uv 来创建虚拟环境,并将其激活:

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

    3. 安装 Zensical 核心库

    在激活的虚拟环境中,使用 pip 安装 zensical

    pip install zensical

    4. 初始化项目骨架

    在当前目录下生成 Wiki 的基础结构和默认配置文件:

    zensical new .

    5. 启动本地开发服务器

    启动开发服务器。这里我们指定了 --dev-addr 参数,允许通过 0.0.0.0:8000 访问,方便在局域网内访问

    zensical serve --dev-addr=0.0.0.0:8000

    访问 http://IP:8000 即可看到你的 Zensical

  • 解决 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 开启 Wake-on-LAN(WOL)远程唤醒配置教程

    Wake-on-LAN(WOL,网络唤醒)是一种通过网络远程启动计算机的技术。设备即使处于关机或休眠状态,也可以通过接收特定的 Magic Packet(魔术包)被远程唤醒。

    该功能常用于:

    • 家庭服务器
    • NAS
    • 远程办公主机
    • 低功耗 Linux 设备

    1. 查看网卡名称

    ip link

    示例输出:

    2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP>

    这里的enp3s0为当前网卡名称。

    enp3s0

    2. 检查网卡是否支持 Wake-on-LAN

    查看网卡 WOL 状态:

    sudo ethtool <网卡名称> | grep Wake-on

    例如:

    sudo ethtool enp3s0 | grep Wake-on

    输出示例:

    Supports Wake-on: pumbg
    Wake-on: d

    Wake-on 参数说明

    参数含义
    d禁用 Wake-on-LAN
    pPHY 活动唤醒
    u单播数据包唤醒
    m多播数据包唤醒
    b广播数据包唤醒
    aARP 数据包唤醒
    gMagic Packet 唤醒
    s安全 Magic Packet
    f特定过滤器唤醒

    其中最常用的是g表示支持 Magic Packet 唤醒。

    3. 查看 NetworkManager 网络连接名称

    Fedora 默认使用 NetworkManager 管理网络。

    查看当前连接:

    sudo nmcli connection show

    示例:

    NAME                UUID                                  TYPE      DEVICE
    Wired connection 1  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  enp3s0

    记住连接名称:

    Wired connection 1

    4. 开启 Wake-on-LAN

    使用 nmcli 配置永久 WOL:

    sudo nmcli connection modify "Wired connection 1" 802-3-ethernet.wake-on-lan magic

    该配置在系统重启后依然有效。

    5. 重新应用网络配置

    立即生效:

    sudo nmcli device reapply <网卡名称>

    例如:

    sudo nmcli device reapply enp3s0

    6. 验证是否开启成功

    再次检查:

    sudo ethtool <网卡名称> | grep Wake-on

    如果输出Wake-on: g说明 Wake-on-LAN 已成功开启。