Nexus5 Swap Boom

0x81 Android的Swap支持

所幸这一次没有那么糟糕了,唯一麻烦的就是去找一个支持Swap功能的内核。我们都知道交换分区是诸多Linux发行版上的一个常见的功能,绝大部分Linux在安装时都会让你创建Swap分区以提高操作系统运行性能,亦或者是提供一个swapfile来作为交换区域。交换分区可以理解为Windows上的虚拟内存的概念,它旨在提供足够的内存空间以弥补物理内存的不足,在Linux上可以使用swapiness参数来控制内核对交换分区使用的积极性,0为尽量不使用交换分区。Android运行在Linux内核之上,并且该内核的版本通常在出厂后就不会再更改了,比如我的老伴侣Nexus5的内核版本是3.4.0,既然Android运行在Linux内核之上,那应该也是支持Swap的,但是很遗憾,由于手机闪存的特殊性,持续性读写同一个位置会对闪存的寿命存在一定的影响,因此Android的内核通常是已除了这一特性的,在挂载swapfile时会告诉你内核没有对该功能进行实现,当然想要开启我们只需要找一个支持Swap的内核刷如就可以了。

0x82 开启Swap内存

得益于Nexus5这个不再亲的亲儿子,我在XDA上找了Franco Kernel,它支持的特性非常多,用TWRP刷入后正常开机,按照在Linux上开启的方式开启即可:

  1. 创建swapfile
    dd if=/dev/zero of=swapfile bs=4m count=100

    使用dd命令创建一个块大小是4m的400m交换文件。

  2. 转换swap格式
    mkswap swapfile

    使用mkswap命令将空文件转换成swap支持的组织格式,执行完毕会返回转换的基本信息。

  3. 挂载swapfile
    swapon swapfile

    这次使用swapon程序就不会提示没有实现了,成功启用后在free命令中就可以看到效果了

Nexus5用了快3年了,这个手机只有2G的内存,但是由于我使用力度不大,它现在仍然能满足我的使用需求,唯一不足的地方就是电池不耐用了。这款2013年10月发布的手机真的是物超所值,性价比也很高,用它我实验和学习了不少东西,不过这么高性价比的手机Google估计是不会再发布了,Pixel代替了Nexus产品线走向高端,而社区的热度仍旧不高,也许折腾Android的搞机之路也该停下了。