在我的 Ubuntu 12.04 中,休眠选项运行良好。但是,我最近在另一个分区上安装了 Debian,当我再次尝试启动 Ubuntu 时,我在启动启动屏幕上收到一条消息:
/ 的磁盘驱动器尚未准备好或不存在。继续等待;或者按 s 跳过安装或按 M 进行手动恢复。
登录Ubuntu之后,我发现我的休眠选项不见了。
有什么方法可以恢复休眠选项吗?
编辑:我解决了磁盘驱动器问题,并恢复了休眠选项。当我执行“sudo pm-hibernate”时,我的系统进入休眠状态。但是,再次开机时,系统正常启动,因此没有休眠效果。
如何纠正这个问题?
EDIT1:系统 - 联想ideapad s10-2。
编辑2:/etc/fstab
编辑3:我的硬盘的屏幕截图。
答案1
我假设您已经以使用自己单独的交换分区的方式安装了 Debian。如果没有,我建议您这样做(创建另一个交换分区并/etc/fstab
相应地更改文件),因为太多不同的操作系统写入同一个交换分区可能会丢弃其他操作系统存储在该分区上的休眠数据。
然后,您必须确保要使用休眠功能的操作系统(通常是两者)写入正确的分区。这在文件中配置/etc/initramfs-tools/conf.d/resume
。您必须在其中输入正确交换分区的 UUID(用于sudo blkid /dev/$device_name
获取 UUID)。最后,您需要更新初始 ramdisk:
sudo update-initramfs -u -k all
这应该可以解决问题。
答案2
不幸的是,休眠在许多情况下不起作用,如果您希望在重新打开计算机时重新打开文档和应用程序,则可能会导致您丢失数据。因此,默认情况下禁用休眠。
测试休眠是否有效
笔记:休眠前务必保存你的工作
您应该在休眠计算机之前保存所有工作,以防出现问题并且再次打开计算机时无法恢复打开的应用程序和文档。
您可以使用命令行来测试休眠功能是否在您的计算机上运行。
Ctrl通过按+ Alt+T或在 Dash 中搜索终端来打开终端 。
sudo pm-hibernate
在终端中 输入并按Enter。
出现提示时输入您的密码。计算机关闭后,重新打开。您打开的应用程序是否重新打开了?
如果休眠不起作用,请检查交换分区是否至少与可用 RAM 一样大。
启用休眠
sudo pm-hibernate
如果休眠测试有效,那么当您想要休眠时可以继续使用该命令。
您还可以在菜单中启用休眠选项。为此,请使用您最喜欢的文本编辑器创建/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla
。将以下内容添加到文件并保存:
[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate; org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=yes
重启后休眠状态又回来了!
或者运行killall unity-panel-service
即可重置菜单。
一些用户随后需要运行sudo update-grub
才能在电源菜单中使用休眠选项。一些用户可能还必须至少注销然后登录才能使其出现在(右上方)电源菜单中。
答案3
尝试nobootwait
向中添加选项/etc/fstab
,如下所示:
/dev/sda1 / ext4 rw,nobootwait 0 1
答案4
据我所知,包括 Ubuntu 在内的 Linux 都应该安装 2 倍于 RAM 的交换空间。
不知何故,我的自定义计算机配置无法使用休眠模式,尽管我有足够的交换空间。
如果你认为交换空间拖慢了你的速度,你可以使用我在网上找到的这个脚本。它可以清理交换空间。
#!/bin/bash
free_data="$(free)"
mem_data="$(echo "$free_data" | grep 'Mem:')"
free_mem="$(echo "$mem_data" | awk '{print $4}')"
buffers="$(echo "$mem_data" | awk '{print $6}')"
cache="$(echo "$mem_data" | awk '{print $7}')"
total_free=$((free_mem + buffers + cache))
used_swap="$(echo "$free_data" | grep 'Swap:' | awk '{print $3}')"
echo -e "Free memory:\t$total_free kB ($((total_free / 1024)) MB)\nUsed swap:\t$used_swap kB ($((used_swap / 1024)) MB)"
if [[ $used_swap -eq 0 ]]; then
echo "Congratulations! No swap is in use."
elif [[ $used_swap -lt $total_free ]]; then
echo "Freeing swap..."
swapoff -a
swapon -a
else
echo "Not enough free memory. Exiting."
exit 1
fi