fedora下解决nvidia闭源驱动无法进行S3睡眠导致的“睡死”问题
fedora下解决nvidia闭源驱动无法进行S3睡眠导致的“睡死”问题
〇、操作环境及问题描述
1、操作环境:
❯ fastfetch
.',;::::;,'. datong@fedora
.';:cccccccccccc:;,. -------------
.;cccccccccccccccccccccc;. OS: Fedora Linux 43 (Workstation Edition) x86_64
.:cccccccccccccccccccccccccc:. Host: MS-7996 Reborn by dsanke (1.0)
.;ccccccccccccc;.:dddl:.;ccccccc;. Kernel: Linux 6.17.12-300.fc43.x86_64
.:ccccccccccccc;OWMKOOXMWd;ccccccc:. Uptime: 12 mins
.:ccccccccccccc;KMMc;cc;xMMc;ccccccc:. Packages: 2762 (rpm), 19 (flatpak), 5 (snap)
,cccccccccccccc;MMM.;cc;;WW:;cccccccc, Shell: zsh 5.9
:cccccccccccccc;MMM.;cccccccccccccccc: Display (L20W): 1680x1050 @ 60 Hz in 22" [External]
:ccccccc;oxOOOo;MMM000k.;cccccccccccc: DE: GNOME 49.2
cccccc;0MMKxdd:;MMMkddc.;cccccccccccc; WM: Mutter (Wayland)
ccccc;XMO';cccc;MMM.;cccccccccccccccc' WM Theme: Mojave-Dark-solid-alt
ccccc;MMo;ccccc;MMW.;ccccccccccccccc; Theme: Adwaita [GTK2/3/4]
ccccc;0MNc.ccc.xMMd;ccccccccccccccc; Icons: Adwaita [GTK2/3/4]
cccccc;dNMWXXXWM0:;cccccccccccccc:, Font: Adwaita Sans (11pt) [GTK2/3/4]
cccccccc;.:odl:.;cccccccccccccc:,. Cursor: Adwaita (24px)
ccccccccccccccccccccccccccccc:'. Terminal: Ptyxis 49.2
:ccccccccccccccccccccccc:;,.. Terminal Font: MesloLGS Nerd Font (10pt)
':cccccccccccccccc::;,. CPU: Intel(R) Core(TM) i5-7600K (4) @ 4.20 GHz
GPU: NVIDIA GeForce GTX 960 [Discrete]
Memory: 3.03 GiB / 11.63 GiB (26%)
Swap: 0 B / 8.00 GiB (0%)
Disk (/): 22.45 GiB / 110.20 GiB (20%) - btrfs
Local IP (enp2s0): 192.168.1.108/24
Locale: zh_CN.UTF-8
nvidia 驱动版本:580.119.02.
2、问题描述
本人在安装 nvidia 显卡之前一直使用 S3 睡眠模式,并且之前使用的是 i5-7600k 自带的 hd610 核显进行显示输出。但在使用 gtx960 显卡并按照fedora 官方文档正确安装 nvidia 闭源驱动后,无法进行之前的正常 S3 睡眠。经常睡死,表现为鼠标键盘都显示正常连接,电脑也还在运行状态,但是显卡输出无信号,并且鼠标键盘等外设都无法唤醒电脑进入正常的工作模式,无法将 GPU 恢复至正常状态。
Linux 支持多种睡眠状态(Suspend-to-RAM / S3, Suspend-to-Disk / Hibernate, Suspend-to-Idle / s2idle)。以上原因在于 nvidia 对传统的睡眠模式 S3 的兼容比较差,对现代待机模式(s2idle)支持较好。
二、检查睡眠模式
查看当前系统支持的睡眠模式:
cat /sys/power/mem_sleep
输出:
[s2idle] deep
# OR
s2idle [deep]
[s2idle] 表示当前默认使用的是 s2idle(较安全)。
[deep] 表示当前使用 S3(传统睡眠,NVIDIA 容易出问题)。
其中,s2idle 是 Linux 内核中一种 低功耗空闲状态(suspend-to-idle),也称为 “现代待机”(Modern Standby) 它是 ACPI(高级配置与电源接口)规范中定义的睡眠模式之一,属于 轻量级睡眠,与传统的 S3(suspend-to-RAM)有显著区别,同时也更加耗电。
| 对比 | s2idle | S3 |
|---|---|---|
| 系统状态 | CPU 停止,但内核调度器仍“逻辑运行” | 整个系统挂起,仅 RAM 供电 |
| 唤醒方式 | 任意中断(键盘、鼠标、网络等) | 需要特定唤醒事件(如电源键) |
| 功耗 | 中等(比运行低,比 S3 高) | 很低(接近关机) |
| NVIDIA 驱动支持 | 较好(闭源驱动可工作) | 经常失败(驱动无法恢复 GPU 状态) |
| Windows 对应 | “Modern Standby” | “Sleep (S3)” |
三、更改睡眠模式为 s2idle
编辑 GRUB 配置,添加内核参数:
sudo nano /etc/default/grub
找到 GRUB_CMDLINE_LINUX 行,在引号内添加:
mem_sleep_default=s2idle
如:
GRUB_CMDLINE_LINUX="rhgb quiet rd.driver.blacklist=nouveau,nova_core modprobe.blacklist=nouveau,nova_core,mem_sleep_default=s2idle"
然后更新 GRUB 配置:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
重启,应用更改:
sudo reboot
四、检验睡眠
使用命令手动进入睡眠:
sudo systemctl suspend
查看是否成功睡眠。
版权声明: 本文为博主「张火火isgudi」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接: https://www.cnblogs.com/zbyisgudi/p/19409359

在 Fedora 系统中,为解决 NVIDIA 闭源驱动导致的 S3 睡眠“睡死”问题,可通过内核参数 mem_sleep_default=s2idle 强制使用兼容性更好的 s2idle(现代待机)睡眠模式。
浙公网安备 33010602011771号