我正在运行一个自定义编译的 3.18.9 内核,我想知道在系统上禁用交换的最佳方法。如果它有所作为,我也会使用 init。
是否足以注释或删除交换行/etc/fstab
以防止交换在启动时工作/挂载,或者我应该重新编译内核而Support for paging of anonymous memory (swap)
不是 100% 确保它没有被启用?
我运行加密分区并希望防止意外泄漏到硬盘。我的系统规格也足够好,可以在无交换环境中生存。
我正在运行一个自定义编译的 3.18.9 内核,我想知道在系统上禁用交换的最佳方法。如果它有所作为,我也会使用 init。
是否足以注释或删除交换行/etc/fstab
以防止交换在启动时工作/挂载,或者我应该重新编译内核而Support for paging of anonymous memory (swap)
不是 100% 确保它没有被启用?
我运行加密分区并希望防止意外泄漏到硬盘。我的系统规格也足够好,可以在无交换环境中生存。
cat /proc/swaps
。swapoff -a
。/etc/fstab
。人交换
过去只
/etc/fstab
自动使用交换分区,但是,systemd 可能会稍微改变一下。您可能需要这样做:(更改 sdXX)到您真正格式化的交换分区,这引出了一个问题,即如果您不想使用交换分区,为什么要使用它...
如果您不使用 systemd,那么从中删除交换条目
/etc/fstab
就足够了(据我所知)。也许真正的解决方案是摆脱交换分区,这样它们就不会被意外使用。要删除交换分区,我会使用 fdisk 将分区类型从交换更改为其他类型,然后重新格式化分区或使用:
dd if=/dev/zero of=/dev/old-swap-partition
以将其归零并防止其使用。另请参阅使用 systemd 设置交换分区的使用。
如果您确实确定要禁用交换(注意:不建议这样做,即使您非常确定物理 RAM 已经足够了),请按照以下步骤操作:
swapoff -a
:这将立即禁用交换/etc/fstab
reboot
系统。如果交换消失了,那很好。如果由于某种原因它仍然存在,则必须删除交换分区。重复步骤 1 和 2,然后使用fdisk
或parted
删除(现在未使用的)交换分区。在这里要特别小心:删除错误的分区将产生灾难性的影响!reboot
在Raspbian 10 (Buster) 上,干净的答案是:
要在下次重新启动之前禁用它,如中所述
*/etc/fstab*
:要在启动时禁用交换:
(事实证明我在任何地方都找不到该信息...)
在我的Linux Mint box(版本 19.3 (Tricia),基于Ubuntu 18.04 (Bionic Beaver))上没有交换分区或根本没有任何交换,systemctl 报告 swapfile.swap 在每次启动时都失败。可以使用以下命令禁用它:
swapfile.swap 是 systemd 的“特殊”部分,您可以使用
man systemd.special
命令在 man 中阅读。当我在 Raspbian 上查看/etc/fstab文件时,我看到一条评论说
但是要完全禁用预配置的交换文件,这可以很好地工作:
这个解决方案对我来说看起来有点快和肮脏,但是,你可以简单地重新启用它:
我知道这可能不是这个问题的正确答案,但要完整:如果您只是想防止在启动时在某些设备上开始交换,而不将它们从 fstab 中删除,您可以在 sw (
sw,noauto
) 之后添加 noauto 作为标志。