sh:echo:pm-suspend Ubuntu 14.04上的I / O错误

在Opensuse长时间停顿后,我刚刚在我的Fujitsu Lifebook U772上安装了Ubuntu 14.04,安装后,看起来pm-suspend开箱即用。 然而,稍后设置几天,暂停停止工作,菜单选项Suspend仅导致屏幕暂时变黑,然后返回锁定屏幕。

我手动尝试使用sudo pm-suspend从终端暂停机器,但仍无济于事。 我开始查看/var/log/pm-suspend.logpm-suspend日志,我注意到一些奇怪的事情:

 Running hook /usr/lib/pm-utils/sleep.d/00logging suspend suspend: Linux deathbook 3.13.0-30-generic #55-Ubuntu SMP Fri Jul 4 21:40:53 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux Module Size Used by vboxpci 23194 0 vboxnetflt 27613 0 vboxnetadp 25670 0 vboxdrv 339502 3 vboxnetadp,vboxnetflt,vboxpci pci_stub 12622 1 ctr 13049 1 ccm 17773 1 bnep 19624 2 rfcomm 69160 0 bluetooth 395423 10 bnep,rfcomm binfmt_misc 17468 1 nls_iso8859_1 12713 1 arc4 12608 2 iwldvm 232285 0 intel_rapl 18773 0 uvcvideo 80885 0 hid_generic 12548 0 x86_pkg_temp_thermal 14205 0 videobuf2_vmalloc 13216 1 uvcvideo intel_powerclamp 14705 0 videobuf2_memops 13362 1 videobuf2_vmalloc coretemp 13435 0 videobuf2_core 40664 1 uvcvideo videodev 134688 2 uvcvideo,videobuf2_core kvm_intel 143060 0 mac80211 626557 1 iwldvm usbhid 52570 0 kvm 451511 1 kvm_intel i2400m_usb 36521 0 hid 106148 2 hid_generic,usbhid i2400m 107913 1 i2400m_usb wimax 34704 1 i2400m crct10dif_pclmul 14289 0 snd_hda_codec_hdmi 46207 1 crc32_pclmul 13113 0 ghash_clmulni_intel 13216 0 aesni_intel 55624 2 snd_hda_codec_realtek 61438 1 aes_x86_64 17131 1 aesni_intel i915 783703 4 snd_hda_intel 52355 3 snd_hda_codec 192906 3 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel lrw 13286 1 aesni_intel iwlwifi 169932 1 iwldvm snd_hwdep 13602 1 snd_hda_codec snd_pcm 102099 3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel gf128mul 14951 1 lrw drm_kms_helper 53081 1 i915 snd_page_alloc 18710 2 snd_pcm,snd_hda_intel snd_seq_midi 13324 0 glue_helper 13990 1 aesni_intel drm 303102 5 i915,drm_kms_helper cfg80211 484040 3 iwlwifi,mac80211,iwldvm ablk_helper 13597 1 aesni_intel snd_seq_midi_event 14899 1 snd_seq_midi cryptd 20359 3 ghash_clmulni_intel,aesni_intel,ablk_helper snd_rawmidi 30144 1 snd_seq_midi i2c_algo_bit 13413 1 i915 snd_seq 61560 2 snd_seq_midi_event,snd_seq_midi snd_seq_device 14497 3 snd_seq,snd_rawmidi,snd_seq_midi snd_timer 29482 2 snd_pcm,snd_seq mei_me 18627 0 mei 82276 1 mei_me snd 69238 17 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec,snd_hda_intel,snd_seq_device,snd_seq_midi rtsx_pci_ms 18151 0 soundcore 12680 1 snd memstick 16966 1 rtsx_pci_ms joydev 17381 0 mac_hid 13205 0 lpc_ich 21080 0 fujitsu_laptop 18947 0 video 19476 1 i915 serio_raw 13462 0 parport_pc 32701 0 ppdev 17671 0 lp 17759 0 parport 42348 3 lp,ppdev,parport_pc rtsx_pci_sdmmc 23274 0 e1000e 254433 0 psmouse 102222 0 ahci 25819 5 libahci 32168 1 ahci rtsx_pci 45956 2 rtsx_pci_ms,rtsx_pci_sdmmc ptp 18933 1 e1000e pps_core 19382 1 ptp total used free shared buffers cached Mem: 3905144 2586540 1318604 356556 6452 531508 -/+ buffers/cache: 2048580 1856564 Swap: 8190472 0 8190472 /usr/lib/pm-utils/sleep.d/00logging suspend suspend: success. Running hook /usr/lib/pm-utils/sleep.d/00powersave suspend suspend: /usr/lib/pm-utils/sleep.d/00powersave suspend suspend: success. Running hook /etc/pm/sleep.d/10_grub-common suspend suspend: /etc/pm/sleep.d/10_grub-common suspend suspend: success. Running hook /etc/pm/sleep.d/10_unattended-upgrades-hibernate suspend suspend: /etc/pm/sleep.d/10_unattended-upgrades-hibernate suspend suspend: success. Running hook /usr/lib/pm-utils/sleep.d/50unload_alx suspend suspend: /usr/lib/pm-utils/sleep.d/50unload_alx suspend suspend: success. Running hook /usr/lib/pm-utils/sleep.d/60_wpa_supplicant suspend suspend: Selected interface 'wlan0' OK /usr/lib/pm-utils/sleep.d/60_wpa_supplicant suspend suspend: success. Running hook /usr/lib/pm-utils/sleep.d/75modules suspend suspend: Unloading kernel module vboxdrv...Done. /usr/lib/pm-utils/sleep.d/75modules suspend suspend: success. Running hook /usr/lib/pm-utils/sleep.d/90clock suspend suspend: /usr/lib/pm-utils/sleep.d/90clock suspend suspend: not applicable. Running hook /usr/lib/pm-utils/sleep.d/94cpufreq suspend suspend: /usr/lib/pm-utils/sleep.d/94cpufreq suspend suspend: success. Running hook /usr/lib/pm-utils/sleep.d/95anacron suspend suspend: stop: Unknown instance: /usr/lib/pm-utils/sleep.d/95anacron suspend suspend: success. Running hook /usr/lib/pm-utils/sleep.d/95hdparm-apm suspend suspend: /usr/lib/pm-utils/sleep.d/95hdparm-apm suspend suspend: not applicable. Running hook /usr/lib/pm-utils/sleep.d/95led suspend suspend: /usr/lib/pm-utils/sleep.d/95led suspend suspend: not applicable. Running hook /usr/lib/pm-utils/sleep.d/98video-quirk-db-handler suspend suspend: Kernel modesetting video driver detected, not using quirks. /usr/lib/pm-utils/sleep.d/98video-quirk-db-handler suspend suspend: success. Running hook /usr/lib/pm-utils/sleep.d/99video suspend suspend: kernel.acpi_video_flags = 0 /usr/lib/pm-utils/sleep.d/99video suspend suspend: success. Running hook /etc/pm/sleep.d/novatel_3g_suspend suspend suspend: /etc/pm/sleep.d/novatel_3g_suspend suspend suspend: success. Fri Jul 11 07:17:01 PHT 2014: performing suspend sh: echo: I/O error Fri Jul 11 07:17:03 PHT 2014: Awake. Fri Jul 11 07:17:03 PHT 2014: Running hooks for resume Running hook /etc/pm/sleep.d/novatel_3g_suspend resume suspend: /etc/pm/sleep.d/novatel_3g_suspend resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/99video resume suspend: /usr/lib/pm-utils/sleep.d/99video resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/98video-quirk-db-handler resume suspend: /usr/lib/pm-utils/sleep.d/98video-quirk-db-handler resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/95led resume suspend: /usr/lib/pm-utils/sleep.d/95led resume suspend: not applicable. Running hook /usr/lib/pm-utils/sleep.d/95hdparm-apm resume suspend: /dev/sda: setting Advanced Power Management level to 0xfe (254) APM_level = 254 /dev/sdb: setting Advanced Power Management level to 0xfe (254) APM_level = 254 /usr/lib/pm-utils/sleep.d/95hdparm-apm resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/95anacron resume suspend: /usr/lib/pm-utils/sleep.d/95anacron resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/94cpufreq resume suspend: /usr/lib/pm-utils/sleep.d/94cpufreq resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/90clock resume suspend: /usr/lib/pm-utils/sleep.d/90clock resume suspend: not applicable. Running hook /usr/lib/pm-utils/sleep.d/75modules resume suspend: Reloaded unloaded modules. /usr/lib/pm-utils/sleep.d/75modules resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/60_wpa_supplicant resume suspend: Selected interface 'wlan0' OK /usr/lib/pm-utils/sleep.d/60_wpa_supplicant resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/50unload_alx resume suspend: /usr/lib/pm-utils/sleep.d/50unload_alx resume suspend: success. Running hook /etc/pm/sleep.d/10_unattended-upgrades-hibernate resume suspend: /etc/pm/sleep.d/10_unattended-upgrades-hibernate resume suspend: success. Running hook /etc/pm/sleep.d/10_grub-common resume suspend: /etc/pm/sleep.d/10_grub-common resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/00powersave resume suspend: /usr/lib/pm-utils/sleep.d/00powersave resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/00logging resume suspend: /usr/lib/pm-utils/sleep.d/00logging resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/000record-status resume suspend: /usr/lib/pm-utils/sleep.d/000record-status resume suspend: success. Running hook /usr/lib/pm-utils/sleep.d/000kernel-change resume suspend: /usr/lib/pm-utils/sleep.d/000kernel-change resume suspend: success. Fri Jul 11 07:17:04 PHT 2014: Finished. 

更具体地说,它是沿着这些线(这是系统实际执行挂起的部分):

 Fri Jul 11 07:17:01 PHT 2014: performing suspend sh: echo: I/O error Fri Jul 11 07:17:03 PHT 2014: Awake. Fri Jul 11 07:17:03 PHT 2014: Running hooks for resume Running hook /etc/pm/sleep.d/novatel_3g_suspend resume suspend: /etc/pm/sleep.d/novatel_3g_suspend resume suspend: success. 

我认为这里奇怪的部分是sh: echo: I/O error每次系统暂停时都会显示sh: echo: I/O error ,正如您所看到的,系统会在错误发生后立即唤醒。

我尝试了很多解决方法,其中包括以下内容:

  • 禁用Virtualbox的vboxdrv模块,因为我已经读过它们有时会干扰主机暂停的能力
  • 禁用可在/proc/acpi/wakeup系统的所有设备
  • 替换/etc/fstab中的/etc/fstab errors=remount ro选项为errors=continue

尽管所有这些问题仍然存在。 这可能是内核的问题吗? 当我还在使用Opensuse 12.3时,我被困在内核3.7中,现在在Ubuntu 14.04中,我正在使用内核3.13。 虽然我有点怀疑内核可能是问题,因为3.13开箱即用,暂停仍然有效。

更新

我发现导致I / O失败的echo的原因在/usr/lib/pm-utils/pm-functions第321行。 我通过为pm-suspend启用详细日志记录和调试,并禁用所有挂钩(通过将它们临时移动到另一个目录)来实现此目的。

这是有问题的一行:

  do_suspend() { echo -n "mem" >/sys/power/state; } 

据我所知,这个echo是至关重要的,因为它是pm-suspend和处理挂起的内核中的低级函数之间的接口。 现在的问题是为什么在那一刻会发生I / O错误。 我将尝试在终端上手动执行命令,看看是否仍然出现I / O错误。

好吧,我终于找到了这个问题的罪魁祸首,但首先,一点背景:我忽略了提到我的笔记本电脑默认配备了混合硬盘。 它是一个普通的500GB机械硬盘,配以24GB固态硬盘,过去常被Windows 8用于hibernate和缓存。 我使用SSD在OpenSUSE之前存储我的根分区,直到它最终死亡(I / O错误一直向下),提示我将分区移动到HDD同时还安装Ubuntu 14.04。

长话短说:我在待机时遇到的I / O错误是由于我的故障SSD导致的。

我做的就是从/dev删除SSD的块设备。 在我的情况下,我的SSD总是显示为/dev/sdb ,所以我在终端中以root身份输入以下内容(解决方案由这篇有用的文章提供 ):

# echo 1 > /sys/block/sdb/device/delete

务必将’sdb’替换为您认为有问题的设备 。 我只把它作为/dev/sdb因为正如我之前提到的,我的SSD总是先得到它。

“删除”会在每次全新启动时重置,所以我所做的就是将该行添加到我的/etc/rc.local ,这样可以确保/dev/sdb在启动时被删除。 这可能会影响在计算机上插入可移动驱动器的启动,但在我的情况下,SSD实际上是HDD的一部分,因此在HDD获得/dev/sda后它会自动获取/dev/sdb块设备。

这个问题的最可能原因(对于阅读此内容的人)是在笔记本电脑中连接USB记忆棒或SD卡(不一定安装)。 如果已挂载则卸载(I / O错误意味着不太可能)。 一旦你开心它没有安装,删除它并再次尝试pm-suspend

非常感谢@ rey-balgs分享他的研究(并为我节省了很多的悲伤)。

同样的问题: sh: echo: I/O error 14.04中的/var/log/pm-suspend.log中的sh: echo: I/O error (或者更确切地说是Mint 17)。

不同的答案。 我使用’su pm-hibernate’来代替它,它也失败了,有很好的面对面警告,如“冻结任务失败后…”。 然后执行“dmesg | less”并使用“/ Freezing”搜索显示涉及“fuse”的堆栈跟踪。 原因是:在Files / Nautilus / Nemo中打开网络安装。 修复:在GUI中卸载。 然后,使用/ etc / fstab条目来安装网络驱动器。 这更加强大。


 [122274.535148] Freezing user space processes ... [122294.540137] Freezing of tasks failed after 20.009 seconds (1 tasks refusing to freeze, wq_busy=0): [122294.540167] bash D ffff88022ec74480 0 6868 6825 0x00000004 [122294.540178] ffff88021e6ddb50 0000000000000082 ffff8800c8a9e000 ffff88021e6ddfd8 [122294.540180] 0000000000014480 0000000000014480 ffff8800c8a9e000 ffff88021f7c8660 [122294.540181] ffff880034813800 ffff88021e6ddb78 ffff88021f7c8740 ffff88021f7c8660 [122294.540183] Call Trace: [122294.540188] [] schedule+0x29/0x70 [122294.540192] [] __fuse_request_send+0x115/0x280 [122294.540195] [] ? prepare_to_wait_event+0x100/0x100 [122294.540197] [] fuse_request_send+0x12/0x20 

我有类似的问题,它是关于: swapoff

尝试运行:

 sudo swapon -a