我正在尝试使用命令手动睡眠并唤醒我的 Kobo Mini 电子书阅读器rtcwake
。读者正在使用忙碌盒。
cat /proc/version
给我这个输出:
Linux version 2.6.35.3-850-gbc67621+ (gallen@gallen-P5KPL-AM-BM) (gcc version 4.4.4 (4.4.4_09.06.2010) ) #617 PREEMPT Mon Apr 22 11:07:47 CST 2013
rtcwake 将阅读器设置为睡眠状态,但失败并显示以下消息: ...并且确实
wakeup from "mem" at Wed Nov 13 18:02:44 2013
rtcwake: short write
不是再次醒来。经过一番谷歌搜索后,我将错误追溯到可移动微型 SD 卡,读卡器将其用作其主要(也是唯一)存储。这意味着整个系统正在该 SD 卡上运行,该 SD 卡在待机状态下被移除。
我还发现另一个用户在完全不同的设备上遇到了同样的问题,但也使用可移动 SD 卡作为主存储。他通过启用内核选项/参数解决了这个问题
MMC_UNSAFE_RESUME
。
现在我的问题:如何设置/启用/激活此参数?需要重新编译内核吗?
答案1
我认为你必须重新编译内核。 Grepping 3.11 源代码,在 中没有提及[src]/Documentation/kernel-parameters
,这是内核命令行参数的文档记录。其他文档中也没有提及。
当然,可能有一个参数并没有字面上提到MMC_UNSAFE_RESUME。有一些记录在案的选项可用于调整休眠/睡眠状态下的恢复,但为了假设其中之一以这种方式有用,它们可能需要以某种方式连接到源中的 MMC_UNSAFE_RESUME。
因此,它在 中声明[src]/drivers/mmc/core/core.c
,并用于设置导出符号 的值。mmc_assume_removable
它唯一使用的地方是在 中,[src]//include/linux/mmc/host.h
用于影响内联函数的返回值。
这远不是一个结论性的分析——当然可能还有另一种方式来获得你想要的东西,一个/proc
设置等等——但是看看一些关于此的开发讨论,我非常怀疑它与MMC_UNSAFE_RESUME有什么关系;在大多数情况下,大多数人都希望不惜一切代价避免这种情况,特别是因为各个驱动程序可以在每个设备的基础上完成相同的事情(而该开关是全局的)。
答案2
是的,通常内核会在进入睡眠状态时卸载可移动媒体上的文件系统,因为担心您会在系统睡眠时拔出卡。然后,它会在恢复时重新安装。
如果您“承诺”不会移除 MMC 卡,则可以设置 MMC_UNSAFE_RESUME 内核选项。这实际上会告诉内核您将 MMC 驱动器视为永久存储。因此它不会卸载并重新安装设备。
但你确实需要为此重建内核。
如果您仍然无法从睡眠中恢复,另一件事就是将“debug”添加到内核启动参数中。这将向控制台添加详细输出,并且许多驱动程序将在醒来时报告其状态。因此,如果一位司机的简历挂了,您也许能够识别出是哪一位司机。