问题:要使用zram需要内核支持,所以我们需要加入ZRAM 的内核编译选项。但是它依赖于ZSMALLOC。在3.4.0内核版本中ZSMALLOC又依赖于x86架构,但是我们的手机又是arm架构。问题就来了!
解决方法:很简单,去该手机对应高版本的内核中找到zsmalloc对应的模块替换当前版本中的部分。
实验配置:
平台:Nexus 5
内核版本:3.4.0
Android系统版本:4.4.4
步骤:
1. google官网上找到了3.14实验版本的内核代码。在kernel/mm/目录下找到了zsmalloc.c,拷贝到3.4.0对应的目录下
2. 将3.14中zsmalloc.c目录下的Makefile和Kconfig文件中与zsmalloc的编译配置选项拷贝到3.4.0中对应的地方
3. 在3.4.0中zram还处在kernel/drivers/staging中,选中编译选项
4. 编译,搞定!
注,要想使用zram,这还不够。还需要在修改Android启动分区配置文件(在Nexus5中是/fstab.hammerhead)。具体可参考:https://source.android.com/devices/tech/low-ram.html