![是否可以将休眠配置为在具有多个内核或系统“快照”的单个操作系统、单次引导中安全使用?](https://linux22.com/image/8330/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%B0%86%E4%BC%91%E7%9C%A0%E9%85%8D%E7%BD%AE%E4%B8%BA%E5%9C%A8%E5%85%B7%E6%9C%89%E5%A4%9A%E4%B8%AA%E5%86%85%E6%A0%B8%E6%88%96%E7%B3%BB%E7%BB%9F%E2%80%9C%E5%BF%AB%E7%85%A7%E2%80%9D%E7%9A%84%E5%8D%95%E4%B8%AA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E3%80%81%E5%8D%95%E6%AC%A1%E5%BC%95%E5%AF%BC%E4%B8%AD%E5%AE%89%E5%85%A8%E4%BD%BF%E7%94%A8%EF%BC%9F%20.png)
这是我一天中关于冬眠的第三个问题,继第一个问题之后关于在具有共享交换的双启动中休眠,还有另一个关于在具有共享可写分区的双引导中休眠。
我意识到休眠的危险也与单引导机器有关。例如,您可能会休眠、启动计算机并从 GRUB 菜单中选择错误的内核。如果我理解正确的话,这可能会严重损坏您的系统。此外,在 NixOS 中,启动时您不仅选择启动内核,还选择多个独立“快照”中的完整系统。
在我看来,一系列无辜且常见的操作(用户甚至没有收到警告)可能会破坏系统,这看起来非常错误。因此,在我看来,如果没有某种保障,休眠是一个不受欢迎的功能。
有人找到解决这个问题的方法吗?有什么解决方法吗?
在我看来,最合乎逻辑的解决方案是禁止加载休眠系统以外的任何系统,或者让系统在启动时清除交换数据,这是不匹配的。
为了说得更清楚,让我强调一下,我正在谈论的问题是“单启动”设置,其中同一系统的多个版本(内核、快照)可以存在并加载。
答案1
我确实认为共享文件系统的情况有点邪恶:(。可以通过不同措施的拼凑来缓解这种情况,但毫无疑问,你可能会遇到很多漏洞。
所共享的分割这种情况有点好,因为一旦你知道它非常危险,你就可以“只是”避免以这种方式设置系统。不管它多么有用,如果它不是那么危险的话。然而,像我的 Thinkpad 中的存储卡插槽或普通 USB 记忆棒之类的东西有点难以控制。
最常见、最简单的情况:Windows 和单个 Linux 操作系统之间的双引导,最终迫使 NTFS-3G 来解决问题。如果您尝试安装包含休眠映像的 Windows 系统分区,它应该会发出很大的警告。
我不确定辅助 NTFS 分区。肯定有一个潜在的机制(“脏”位)。我认为至少某些版本的 NTFS-3G 可以首先发出警告,但我肯定想在假设之前进行测试。链接:搜索“脏”。
(这并不意味着使用 NTFS 在不同的 Linux 安装之间共享必然是一个好主意。IIRC 一旦您的 NTFS 被标记为脏,建议的确保其修复的方法是使用 Windows。或者重新格式化它:)。
选择错误的内核版本但正确的操作系统会不是造成的损害比停电更大。有一个内核版本检查以避免这导致任何微妙的问题。 Linux 休眠软件过去会给您一个提示,以便您可以重新启动并重试(如果您愿意),但最近它似乎只是继续并擦除休眠映像。您会注意到,当您的笔记本电脑电池意外耗尽时,现代系统软件不会自毁。有些应用软件难免写得不好。
使用 udisk 进行安装(例如通过 GUI)应该
errors=remount-ro
默认包含该选项。一旦文件系统真正注意到损坏,它将停止向其中写入任何进一步的数据。这并不能完全防止文件系统损坏。然而,在许多情况下,它将避免最坏的情况,即您在不知情或困惑的情况下继续运行,并且随着文件系统的继续写入,大规模损坏会蔓延。我想 Nix 快照可能会导致更严重的问题,但前提是您使用以下命令创建了快照不同的交换(休眠)分区。如果他们两个都还存在的话。我认为这是不幸的,但不会经常发生。 Nix 的主要原因是包管理。这些条件显示了如何排除它:只需先删除旧的交换分区即可。
从概念上讲,修复 Linux 文件系统并不困难,即从休眠状态恢复失败而不是导致几乎确定的文件系统损坏。 AFAIK 只是还没有完成。可以使用脏位对大多数文件系统进行基本检查,尽管其本身还不够强大,因为当前 Linux 操作系统安装的 FAT 文件系统一旦由于电源故障而被标记为脏,则往往会保持脏状态。
我认为基于 GNOME 的操作系统不会很快尝试使共享文件系统 + 休眠真正可用,因为这是一个很难解决的冲突。如果文件系统上的任何文件打开,则无法卸载该文件系统。如果某些应用程序打开的文件被撤销,它们的响应可能会很差。理论上,您可以像其他交错访问一样处理它(通过不同的程序,或通过网络上的文件系统访问)。实际上,这需要在内核上进行大量工作仍然当您忘记有一个休眠的应用程序正在访问同一文件时,您会感到有些惊讶。
答案2
休眠的目的是关闭硬件电源。它并不能真正帮助您在同一硬件上运行多个操作系统。您可以这样做,但前提是操作系统完全独立(或足够接近。
如果您只有一个操作系统,则需要小心不要休眠已删除的内核。在准备好重新启动之前最好不要进行内核升级。
双启动是相当邪恶。如果要运行多个操作系统,请在虚拟机中运行它们。