永久禁用 Debian 上的交换

Tay*_*all 8 debian swap fstab

每个指南都提出永久禁用交换,只需注释掉相应的行/etc/fstab即可防止交换在重新启动时安装;然而,这在 Debian 11 中不起作用。

\n

例子:

\n

sudo swapoff -a工作完美,但在重新启动后不会持续存在。

\n

fstab 文件示例,其中行被注释掉:

\n
# /etc/fstab: static file system information.\n#\n# Use 'blkid' to print the universally unique identifier for a\n# device; this may be used with UUID= as a more robust way to name devices\n# that works even if disks are added and removed. See fstab(5).\n#\n# systemd generates mount units based on this file, see systemd.mount(5).\n# Please run 'systemctl daemon-reload' after making changes here.\n#\n# <file system> <mount point>   <type>  <options>       <dump>  <pass>\n# / was on /dev/sda2 during installation\nUUID=6b762cb8-b92b-489a-98cf-2bf200e3c4ae /               ext4    errors=remount-ro 0       1\n# /boot/efi was on /dev/sda1 during installation\nUUID=4847-3887  /boot/efi       vfat    umask=0077      0       1\n# swap was on /dev/sda3 during installation\n# UUID=b9aeb506-ad7d-488d-b2b9-7c68dff21906 none            swap    sw              0       0\n/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0\n
Run Code Online (Sandbox Code Playgroud)\n

手动的

\n

手动关闭交换后:

\n

sudo swapoff -a

\n

lsblk

\n

交换分区仍然挂载,但不再列为交换分区。交换已成功禁用:

\n
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT\nsda      8:0    0   127G  0 disk\n\xe2\x94\x9c\xe2\x94\x80sda1   8:1    0   512M  0 part /boot/efi\n\xe2\x94\x9c\xe2\x94\x80sda2   8:2    0 125.5G  0 part /\n\xe2\x94\x94\xe2\x94\x80sda3   8:3    0   976M  0 part\nsr0     11:0    1  1024M  0 rom\n
Run Code Online (Sandbox Code Playgroud)\n

编辑 Fstab

\n

编辑 fstab 文件、运行sudo systemctl daemon-reload并执行系统重启后,交换仍然存在

\n

lsblk -o +PARTTYPE

\n
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT PARTTYPE\nsda      8:0    0   127G  0 disk\n\xe2\x94\x9c\xe2\x94\x80sda1   8:1    0   512M  0 part /boot/efi  c12a7328-f81f-11d2-ba4b-00a0c93ec93b\n\xe2\x94\x9c\xe2\x94\x80sda2   8:2    0 125.5G  0 part /          0fc63daf-8483-4772-8e79-3d69d8477de4\n\xe2\x94\x94\xe2\x94\x80sda3   8:3    0   976M  0 part [SWAP]     0657fd6d-a4ab-43c4-84e5-0933c84b4f4f\nsr0     11:0    1  1024M  0 rom\n\n
Run Code Online (Sandbox Code Playgroud)\n

显然还少了一步。

\n

GAD*_*D3R 9

它由 systemd 激活。参见man systemd-fstab-generatorman systemd.swap

Archlinux wiki:通过 systemd 激活

systemd基于两种不同的机制激活交换分区。两者都是 /usr/lib/systemd/system-generators 中的可执行文件。生成器在启动时运行并为安装创建本机 systemd 单元。第一个是 systemd-fstab-generator,读取 fstab 以生成单元,包括用于交换的单元。第二个 systemd-gpt-auto-generator 检查根磁盘以生成单元。它仅在 GPT 磁盘上运行,并且可以通过类型 GUID 识别交换分区,有关更多信息,请参阅systemd#GPT 分区自动挂载。

禁用交换

要停用特定交换空间:

# swapoff /dev/sdxy
Run Code Online (Sandbox Code Playgroud)

或者使用 -a 开关停用所有交换空间。

由于swap是由systemd管理的,因此它会在下次系统启动时再次激活。要永久禁用检测到的交换空间的自动激活,请运行systemctl --type swap以查找负责的.swap单元并将其屏蔽

检查状态:

systemctl status *swap
Run Code Online (Sandbox Code Playgroud)

或者 :

systemctl --type swap
Run Code Online (Sandbox Code Playgroud)

然后禁用该服务:

sudo systemctl mask  "dev-*.swap"
Run Code Online (Sandbox Code Playgroud)