解决ubuntu20.04无法唤醒的问题的一种方法

解决ubuntu20.04无法唤醒的问题的一种方法

我更改了三个个地方,目前不清楚是哪个地方起的作用,也可能都起作用了

修改的第一个地方

步骤 1: 获取 Swap 分区的 UUID

首先,你需要知道你的 swap 分区的 UUID。你可以使用以下命令来查找它:

sudo blkid | grep swap

这将列出所有标记为 swap 的分区及其 UUID。找到你的 swap 分区对应的 UUID 并记录下来。

步骤 2: 修改 GRUB 配置文件

  • 创建备份:在修改 GRUB 配置之前,创建一个完整的系统备份,特别是 /etc/default/grub 文件的备份。

    sudo cp /etc/default/grub /etc/default/grub.bak

接下来,编辑 /etc/default/grub 文件。可以使用你喜欢的文本编辑器(如 vinano):

sudo vi /etc/default/grub

在该文件中找到这一行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

将其修改为包含 resume=UUID=你的_swap_UUID 参数。例如,如果 swap 分区的 UUID 是 a1b2c3d4-e5f6-7g8h-9i0j-k1l2m3n4o5p6,则应修改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=a1b2c3d4-e5f6-7g8h-9i0j-k1l2m3n4o5p6"

注意: 如果你已经有其他参数,只需添加 resume=UUID=你的_swap_UUID,而不需要移除现有的参数。

步骤 3: 更新 GRUB

保存并关闭文件后,运行以下命令以更新 GRUB 配置:

sudo update-grub

这一步非常重要,因为它会重新生成 GRUB 的配置文件并将新的设置应用到启动菜单中。

步骤 4: 重启计算机

最后,重启计算机以使更改生效:

sudo reboot

确认更改

系统重启后,可以通过检查 /proc/cmdline 文件来确认内核启动参数是否已正确更新:

cat /proc/cmdline

你应该能看到其中包含了 resume=UUID=你的_swap_UUID 参数。

修改的第二个地方

步骤 1: 编辑 resume 文件

创建或编辑 /etc/initramfs-tools/conf.d/resume 文件,并仅写入以下内容:

RESUME=UUID=a6e68944-1234-4e02-9fcd-9504e5ea1234c

请注意,这里的 UUID 应该是你之前通过 sudo blkid | grep swap 命令找到的交换分区的 UUID。确保你使用的是完整的 UUID 字符串。

步骤 2: 更新 GRUB 配置(如果需要)

虽然你的主要问题是关于 initramfs 的配置,但为了确保休眠功能正常工作,通常还需要更新 GRUB 配置来包含 resume 参数。如果你还没有这样做,请参考之前的建议,编辑 /etc/default/grub 文件并在 GRUB_CMDLINE_LINUX_DEFAULT 中添加 resume 参数:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=a6e68944-1234-4e02-9fcd-9504e5ea1234c"

然后更新 GRUB:

sudo update-grub

步骤 3: 重新生成 initramfs 镜像

完成上述配置后,你需要重新生成 initramfs 镜像,以便这些更改生效。你可以使用以下命令来为所有内核版本重新生成 initramfs:

sudo update-initramfs -c -k all

这一步非常重要,因为它会确保新的配置被正确地包含在 initramfs 中,这对于休眠功能的支持至关重要。

步骤 4: 重启计算机

最后,重启计算机以使所有更改生效:

sudo reboot

验证配置

系统重启后,你可以尝试执行一次休眠操作,看看它是否成功:

sudo systemctl hibernate

如果系统能够正常进入休眠并在唤醒后恢复正常工作,则说明配置正确无误。

检查启动参数

为了确认内核启动参数是否已正确更新,可以查看 /proc/cmdline 文件:

cat /proc/cmdline

修改的第三个地方

你应该能看到其中包含了 resume=UUID=a6e68944-1234-4e02-9fcd-9504e5ea1234c 参数
如果你遇到合上盖后进入休眠或睡眠状态后无法唤醒的问题,可以尝试以下步骤进行诊断和修复:

1. 启用配置并设置为休眠
为了确保合上盖子后系统进入休眠而不是睡眠状态,并且能够正确唤醒,你可以明确设置 HandleLidSwitch 为 hibernate 或 hybrid-sleep(如果支持)。

编辑 /etc/systemd/logind.conf 文件:

sudo vi /etc/systemd/logind.conf

取消注释并修改以下行:

[Login]
HandleLidSwitch=hibernate
HandleLidSwitchExternalPower=hibernate
HandleLidSwitchDocked=ignore

HandleLidSwitch=hibernate:当使用电池供电时,合上盖子将使系统进入休眠状态。
HandleLidSwitchExternalPower=hibernate:当连接外部电源时,合上盖子也将使系统进入休眠状态。
HandleLidSwitchDocked=ignore:当笔记本电脑插入基座时,合上盖子不会采取任何行动。
保存文件并重启 systemd-logind 服务以应用更改:

sudo systemctl restart systemd-logind

需要注意的是不是睡眠模式,而是休眠模式两个是不一样的
下面是错误的配置

[Login]
HandleLidSwitch=suspend
HandleLidSwitchExternalPower=suspend
HandleLidSwitchDocked=ignore

睡眠模式(Suspend)和休眠模式(Hibernate)是两种不同的电源管理状态,它们旨在节省电力的同时保留用户的会话数据。尽管两者都用于节能目的,但它们的工作原理和恢复速度有显著差异。

睡眠模式(Suspend)
特点:

内存供电:在睡眠模式下,系统将 CPU 和硬盘等设备断电,但继续为 RAM 供电,以保持当前的会话数据。
快速唤醒:由于数据保存在 RAM 中,当用户重新打开电脑时,系统可以非常迅速地从睡眠状态恢复到之前的状态,通常只需几秒钟。
低功耗:相比完全运行状态下,睡眠模式大大降低了功耗,但仍需要少量电力来维持 RAM 中的数据。
风险:如果电池电量耗尽或电源中断,RAM 中的数据将会丢失,导致无法恢复之前的会话。
适用场景:

适合短时间内不使用电脑的情况,如短暂离开办公桌时。
对于笔记本电脑,在连接电源适配器的情况下特别有用,因为即使电池电量不足,也可以通过外接电源恢复。
休眠模式(Hibernate)
特点:

数据写入磁盘:在休眠模式下,系统会将 RAM 中的所有内容(包括当前运行的应用程序和打开的文件)保存到硬盘上的一个特殊文件(通常是交换分区或专用的休眠文件),然后完全切断电源。
完全断电:由于所有组件都被断电,休眠模式下的功耗几乎为零,类似于关机状态。
较慢唤醒:当用户重新启动电脑时,系统会从硬盘读取之前保存的数据并加载到 RAM 中,这个过程比从睡眠模式唤醒要慢一些,因为它涉及到大量的磁盘 I/O 操作。
无数据丢失风险:即使电池完全没电或长时间没有电源供应,也不会影响存储在硬盘上的数据,因此可以在任何时间点安全恢复。
适用场景:

适合长时间不使用电脑的情况,如晚上或周末不工作时。
对于便携式设备尤其有用,因为即使电池电量耗尽,也不会丢失未保存的工作。
混合睡眠模式(Hybrid Sleep)
某些系统还提供了一种称为混合睡眠(Hybrid Sleep)的模式,它结合了睡眠模式和休眠模式的优点:

双重保障:它不仅将数据保存到 RAM 中(像睡眠模式一样),还会同时将数据复制到硬盘上(像休眠模式一样)。这意味着如果电源意外中断,用户仍然可以从硬盘恢复数据。
快速唤醒与安全恢复:这种模式提供了快速唤醒的能力,同时也确保了即使发生意外断电,也能安全恢复。
适用场景:

适用于台式机,特别是那些可能遭遇突然断电的情况。
对于希望获得额外安全性的用户来说是一个不错的选择。
总结
选择使用睡眠模式还是休眠模式取决于你的具体需求:

如果你需要快速恢复并且预计很快就会再次使用电脑,那么睡眠模式是更好的选择。
如果你打算较长时间不使用电脑,并且希望确保不会因电池耗尽而丢失数据,则应选择休眠模式。
如果你想要兼顾两者的优点,可以考虑启用混合睡眠模式,但这通常只适用于台式机或有稳定电源供应的环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【大厂机试题解法笔记】矩阵匹配

题目 从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150 输入格式 N M K N*M矩阵 输…

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …

使用osqp求解简单二次规划问题

文章目录 一、问题描述二、数学推导1. 目标函数处理2. 约束条件处理 三、代码编写 一、问题描述 已知: m i n ( x 1 − 1 ) 2 ( x 2 − 2 ) 2 s . t . 0 ⩽ x 1 ⩽ 1.5 , 1 ⩽ x 2 ⩽ 2.5 min(x_1-1)^2(x_2-2)^2 \qquad s.t. \ \ 0 \leqslant x_1 \leqslant 1.5,…

pe文件结构(TLS)

TLS 什么是TLS? TLS是 Thread Local Storage 的缩写,线程局部存储。主要是为了解决多线程中变量同步的问题 如果需要要一个线程内部的各个函数调用都能访问,但其它线程不能访问的变量(被称为static memory local to a thread 线程局部静态变…

Electron简介(附电子书学习资料)

一、什么是Electron? Electron 是一个由 GitHub 开发的 开源框架,允许开发者使用 Web技术(HTML、CSS、JavaScript) 构建跨平台的桌面应用程序(Windows、macOS、Linux)。它将 Chromium浏览器内核 和 Node.j…

如何使用DeepSeek帮助自己的工作?(Java开发)

如何使用DeepSeek帮助自己的工作? 作为Java开发者,你可以通过以下方式高效利用DeepSeek提升工作效率(附具体操作示例): 一、日常编码加速 1. 代码生成与补全 // 输入需求描述: "生成SpringBoot分页…

Uniapp 二维码生成与解析完整教程

前言 使用Uniapp开发多平台应用&#xff0c;二维码生成采用uQRCode插件&#xff0c;非常nice&#x1f601;&#xff01; Coding 原理 使用canvas绘制 生成二维码数据 绘制到canvas上 使用 <uqrcoderef"uqrcodeRef"canvas-id"qrcode":value"qr…

Vue ⑤-自定义指令 || 插槽

自定义指令 自定义指令&#xff1a;自己定义的指令, 可以封装一些 dom 操作&#xff0c; 扩展额外功能。 全局注册 语法&#xff1a; Vue.directive(指令名, {"inserted" (el) {// 可以对 el 标签&#xff0c;扩展额外功能el.focus()} })局部注册 语法&#xff…

Java HttpClient实现简单网络爬虫

今天我将使用Java的HttpClient&#xff08;在Java 11及以上版本中内置&#xff09;来编写一个入门级的网络爬虫示例。 这个示例将演示如何发送HTTP GET请求&#xff0c;获取响应内容&#xff0c;并处理可能出现的异常。 以下是一个基于Java HttpClient&#xff08;Java 11&…

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…

Sonic EVM L1:沉睡的雄狮已苏醒

Sonic 链 , 是 Fantom 基金会升级后的Layer-1区块链&#xff0c;继承了 Fantom Opera 的高性能特性&#xff0c;并通过全面技术优化成为EVM兼容的高吞吐量公链。 官方网站 : https://www.soniclabs.com 一、Sonic 链概述 1. 为什么从 Fantom 更名为 Sonic Sonic 链是 Fant…

篮球杯软件赛国赛C/C++ 大学 B 组补题

3.gcd 模拟 map<pair<int,int>,int>m; void solve(){int n;cin>>n;forr(i,1,n){int ux,uy,vx,vy;cin>>ux>>uy>>vx>>vy;int dxvx-ux,dyvy-uy;if(dx!0&&dy!0){int gabs(__gcd(dx,dy));dx/g,dy/g;//dxdy中除去公共部分(gcd) 就…

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…

Linux边缘智能:物联网的终极进化

Linux边缘智能&#xff1a;物联网的终极进化 从数据中心到万物终端的智能革命 引言&#xff1a;边缘计算的范式转变 随着物联网设备的爆炸式增长&#xff0c;传统的云计算架构已无法满足实时性、隐私保护和带宽效率的需求。边缘智能应运而生&#xff0c;将计算能力从云端下沉到…

Linux Shell 中的 dash 符号 “-”

Shell中的-&#xff1a;小符号的大智慧 在Unix/Linux系统中&#xff0c;-符号是一个约定俗成的特殊标记&#xff0c;它表示命令应该使用标准输入或标准输出而非文件。这个看似简单的短横线&#xff0c;完美诠释了Unix"一切皆文件"的设计哲学。 作为标准输入/输出的…

JMeter 实现 MQTT 协议压力测试 !

想象一下&#xff0c;你的智能家居系统连接了上千个设备&#xff0c;传感器数据通过 MQTT 协议飞速传输&#xff0c;但突然服务器崩溃&#xff0c;灯光、空调全失控&#xff01;如何确保你的 MQTT 经纪人能承受高负载&#xff1f;答案是 JMeter&#xff01;通过安装 MQTT 插件&…

CKA考试知识点分享(6)---PriorityClass

CKA 版本&#xff1a;1.32 第六套题是涉及PriorityClass相关。 注意&#xff1a;本文不是题目&#xff0c;只是为了学习相关知识点做的实验。仅供参考 实验目的 创建一套PriorityClass &#xff0c;验证PriorityClass的运作策略。 1 环境准备 创建2个pc&#xff0c;一个为高…

暴力破解篇补充-字典

在皮卡丘靶场的第二期&#xff0c;暴力破解模块中&#xff0c;我相信大家短暂的接触了字典这个概念&#xff0c;字典事实上就是包含了大量弱口令的txt文本文件 所以这篇文章用于分享一些字典&#xff1a;https://wwhc.lanzoue.com/ihdl12ybhbhi&#xff08;弱口令字典&#xff…

关于VS2022中C++导入第三方库的方式

首先&#xff0c;新建一个Cpp项目(控制台项目即可&#xff0c;其他项目也无所谓)&#xff0c;右键点击项目名称(Test1)选择属性或者在VS2022工具栏选择调试标签->属性按钮打开属性页。 注意点: 在开始其他操作前请注意先进行 配置和平台选项框的选择。配置选框选定了是配置…