Ubuntu 已经支持 Raspberry Pi(树莓派)4 Model B 的 4GB 和 8GB 内存版本(自 Ubuntu 20.10 版本支持)。现在 Ubuntu 团队计划进一步降低 Ubuntu 的硬件门槛,让即将发布的 Ubuntu 22.04 LTS 版本能在只有 2MB RAM 的Raspberry Pi 4 上运行。
然而,让 Ubuntu 这样一个完整的 Linux 系统在内存过低的硬件设备上正常运行是很困难的,那 Ubuntu 是如何做到的呢?那就不得不提到一个名为 zswap 的 Linux 内核特性。
在提及 zswap 特性之前,先来说说 Linux 的虚拟内存文件: swap file 。任何类型的 Linux 系统都会在硬盘或 SD 卡上分配一个 swap 文件,它充当 RAM(运行内存) 的一种溢出,在系统的可用内存不足的时候,swap 文件会缓存部分页面,释放内存给活跃的进程使用,这样系统即使在几乎用完所有 RAM 时也能继续工作。(另外提一下,Win 10 的系统盘也有 swapfile.sys 文件)
但是,使用 swap 文件的性能不如直接使用 RAM,因为访问硬盘的速度比起使用内存实在是太慢了,因此在这个过程中引入了 Zswap 特性。
zswap 本质上是一个压缩工具。当一个进程即将被移动到 swap 文件里面时,zswap 会对其进行压缩,并检查压缩过的新页面是否仍需要移动,或者说可以保留在 RAM 中。如果压缩过的页面可以留在 RAM 中,那就等再次访问的时候对它进行解压。解压一个“zswap”页面比访问 swap 文件要快得多,所以 zswap 特性非常适合低内存的硬件设备。
如何开启此特性?
由于 Ubuntu 默认支持 zswap ,因此可以打开终端模拟器,通过一行简单的命令
sudo sed -i -e 's/$/zswap.enabled=1/' /boot/firmware/cmdline.txt
然后重启板子,即可开启特性。
事实上,zswap 只是降低 Ubuntu 硬件门槛的手段之一,此外还包括 z3fold 和 lz4 压缩等一系列特性,这些优化内容将包含在 4 月发布的 Ubuntu 22.04 ,且在所有 Raspberry Pi 4 设备中默认开启。