前言

使用了Lineage OS一段时间了,偶然发现系统默认没有挂载Zram,没有虚拟交换分区。这容易导致内存达到阈值然后开始杀后台,部分应用也没有预备缓存,启动时重新加载。因此在网上找了相关教程来设置Zram。

注意:color:yellow~~此教程仅在xiaomi 8-Lineage OS21-Android14上测试通过~~,MI8 dipper最新版系统分区发生重大改变,手动adb sideload更新到最新版后此方法将不可用,其他机型自行测试,记得备份重要数据。本文只做学习教程,不具备专业性。

Lineage OS22 Android 15 最新教程

准备工作

首先手机需要获取ROOT权限,以更改系统根文件。其次需要一个文件管理器,如RE管理器或者MT管理器。

找到文件

找到修改的文件,文件位于/vendor/etc/fstab.qcom,由于小米8是骁龙845处理器,因此后缀为.qcom。其他处理器自行确认。

fstab文件在Linux系统中是用来存放文件系统的静态信息的文件。文件位于/etc/目录下,可以用以下命令查看。

详情可参考:fatab文件详解

打开后可以看到许多系统启动时跟随挂载的分区。

挂载Zram

编辑fstab.qcom文件,最后一行添加以下内容。

文件结尾再空一行。

参数
1
2
3
4
5
6
7
8
9
10
11
12
13
# /dev/block/zram0: 需要挂载的块
# none: 虚拟交换分区挂载位置通常为none
# swap: 文件系统类型,swap为交换分区
# defaults: 默认挂载选项defaults: rw, suid, dev, exec, auto, nouser, async.
# 常用参数
# auto: 系统自动挂载,fstab默认就是这个选项
# noauto 开机不自动挂载
# nouser 只有超级用户可以挂载
# ro 按只读权限挂载
# rw 按可读可写权限挂载
# user 任何用户都可以挂载
# zramsize: 挂载Zram分区占手机内存的百分比,100%表示挂载与内存同样大小的Zram,系统推荐值100%(推荐值位于: /proc/sys/vm/swappiness)
# 后面两个参数貌似没有生效,可能对于联发科处理器有用,骁龙处理器需要自己编辑/sys/block/zram0文件夹下的文件来更改参数,或者直接终端执行{% copy echo vlu > /sys/block/zram0/xxxx %}更改Zram工作方式(需要重启生效后才能更改)

生效

修改完后保存文件,重启系统。不出意外的话进入系统就有Zram分区了。可通过Devcheck等软件查看。默认压缩算法为lzo,查看/sys/block/zram0/comp_algorithm文件,里面有系统支持的压缩算法。

修改压缩算法为lz4(请先确保系统支持)。

基准测试Benchmarks

Compressor Ratio Compression Decompression
zstd 1.3.4 -1 2.877 470 MB/s 1380 MB/s
zlib 1.2.11 -1 2.743 110 MB/s 400 MB/s
brotli 1.0.2 -0 2.701 410 MB/s 430 MB/s
quicklz 1.5.0 -1 2.238 550 MB/s 710 MB/s
lzo1x 2.09 -1 2.108 650 MB/s 830 MB/s
lz4 1.8.1 2.101 750 MB/s 3700 MB/s
snappy 1.1.4 2.091 530 MB/s 1800 MB/s
lzf 3.6 -1 2.077 400 MB/s 860 MB/s

结尾

开启Zram,确实可以多挂几个后台,并且保持运行。但如果长时间后台运行会受到电源策略限制。部分应用可以预缓存,加快启动速度。经常读取文件也会在预存Zram中,快速读取。

LineageOS 22 Zram设置

原理

通过magisk模块,配置post-fs-data.sh(在文件系统初始化后执行,适合挂载和早期配置)脚本挂载Zram。

声明

该教程在xiaomi 8-Lineage OS22.1-Android15上测试通过。其他设备自行测试。测试前注意备份重要数据。

测试是否支持

查看系统是否存在/sys/block/zram0/disksize文件。如果有,那么在Android终端依次执行如下命令。

1
2
3
4
5
6
# 设置 zram 大小为 4GB (4*1024*1024*1024=4294967296)
echo 4294967296 > /sys/block/zram0/disksize
# 初始化 zram 为交换分区
mkswap /dev/block/zram0
# 启用 zram 交换
swapon /dev/block/zram0

通过上述命令就已经在系统创建并启用了Zram交换分区。
输入下面命令检查交换分区是否启用。

如果上述设置执行成功,那么可以继续教程。

安装Magisk模块

安装Magisk模块在系统启动使自动配置。也可方便停用。
MagiskZram下载

MagiskZram仓库地址

post-fs-data.sh

1
2
3
4
5
6
7
8
9
10
#!/system/bin/sh

# 设置 zram 大小为 4GB(可以自己设置[4*1024*1024*1024],建议不超过系统内存大小)
echo 4294967296 > /sys/block/zram0/disksize

# 初始化 zram 为交换分区
mkswap /dev/block/zram0

# 启用 zram 交换
swapon /dev/block/zram0

本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。



2024 blog.yoier.com