在Apple Silicon设备上禁用swap

步骤

64G内存不用就是浪费,日常开一个16G的ramdisk用于存放一些日常工作中频繁生成的临时文件、图片等。

注意:

  1. 搭载Apple Silicon芯片设备上的默认系统安全策略变得更加保守,内核启动时会忽略自定义的启动参数(boot-args)。

  2. 使用此方法会导致安全等级降低至Permissive Security,从而导致无法运行任何iOS app

Permissive Policy Error

因为我没有运行iOS app的需求,所以这一点对我没有任何影响。

# 关机,长按电源键,选择进入Recovery
> bputil -a # Enables sending custom boot args to the kernel

# 设置boot-args
> nvram 40A0DDD2-77F8-4392-B4A3-1E7304206516:boot-args=vm_compressor=2

重启,进入系统后使用如下命令,观察禁用swap是否生效:

> sysctl vm.compressor_mode
vm.compressor_mode: 2

恢复默认设置:

# 关机,长按电源键,选择进入Recovery
> bputil -f
> nvram -d boot-args

参考文献

  1. https://twitter.com/s1guza/status/1364209938223009795
  2. https://github.com/apple/darwin-xnu/blob/main/iokit/Kernel/IONVRAM.cpp#L152-L275
  3. https://windsketch.cc/macbook-disable-swap/
  4. https://opensource.apple.com/source/xnu/xnu-7195.141.2/osfmk/vm/vm_pageout.h.auto.html#:~:text=%23define%20VM_PAGER_NOT_CONFIGURED%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%200x0,swap%20support%20too.*/
  5. https://support.apple.com/guide/security/contents-a-localpolicy-file-mac-apple-silicon-secc745a0845/web