红米Note7 Pro使用LineageOS 16过程中遇到了若干问题,经过摸索后问题已解决,这里给自己备忘一下,同时也能方便其他同学少走弯路或一起讨论更好的解决方法。
1. TWRP无法启动
状态:已解决
现象:解除Bootloader锁后,使用fastboot刷入官方TWRP后,TWRP启动卡住。
原因:MIUI系统的userdata分区(包括/data和/sdcard)默认使用了加密的f2fs,官方的TWRP目前不能直接挂载加密的/data和/sdcard,导致recovery系统初始化失败。
修复:TWRP启动卡住时,使用adb shell访问设备,使用命令清除userdata分区并重启:
dd if=/dev/zero of=/dev/block/bootdevice/by-name/userdata bs=1m count=10
dd if=/dev/zero of=/dev/block/bootdevice/by-name/userdata bs=1m count=10
2. LineageOS无法启动
状态:已解决
现象:刷入LineageOS后,首次启动卡在系统启动动画界面。
原因:LineageOS(device violet)对userdata分区的文件系统默认为f2fs,并且启用了加密,不匹配导致了/data无法读写。
修复:修复方案可能有两种:
1. 使用TWRP重建userdata分区的文件系统为f2fs并且启用加密。
2. 使用TWRP重建userdata分区为f2fs但关闭加密,修改LineageOS的/vendor/etc/fstab.qcom同样关闭加密。
方案1没有验证过,我直接采用了方案2,具体步骤为:
1. TWRP中“清除数据”,“高级选项”,“变更文件系统”,将data分区初始化为f2fs。
2. TWRP中挂载vendor分区,修改/vendor/etc/fstab.qcom的userdata挂载配置。
-/dev/block/bootdevice/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier latemount,wait,check,fileencryption=ice,wrappedkey,reservedsize=128M
+/dev/block/bootdevice/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier latemount,wait,check,wrappedkey,reservedsize=128M
-/dev/block/bootdevice/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier latemount,wait,check,fileencryption=ice,wrappedkey,reservedsize=128M
+/dev/block/bootdevice/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier latemount,wait,check,wrappedkey,reservedsize=128M
3. LineageOS、TWRP相互干扰启动
状态:已解决
现象:刷入LineageOS后TWRP无法启动
原因:violet设备将内核的devicetree配置放在独立的分区dtbo中,官方TWRP的内核是与MIUI同源的,而与LineageOS不同,所以在刷入LineageOS的dtbo.img后,TWRP内核就没有匹配的devicetree配置。
修复:使用官方TWRP时,要先刷入MIUI线刷包中的dtbo.img;使用LineageOS系统时,要先刷入LineageOS线刷包中的dtbo.img。
4. LineageOS系统普通App调用su(root)失败
状态:已解决
现象:刷入su addon后,在普通App(例如terminal)中调用su命令有段错误。
原因:su命令中有map操作,但在SELinux的配置中未允许普通App(untrusted_app)的map访问。
修复:解决该问题需要修改LineageOS的源代码,详见补丁,争取推到上游社区中。
5. 听筒输出的通话中,对方听到回音
状态:已解决
现象:在使用听筒输出声音的通话中,对方有明显的回音干扰。
原因:ro.vendor.audio.sdk.fluencetype配置为none。
修复:解决该问题有两种方案:1. 直接编辑/vendor中的build.prop文件。2. 修改LineageOS源代码。详见补丁
6. VoLTE视频无法连接
状态:已解决
现象:使用VoLTE通话过程中,视频信道无法正常建立连接。
原因:LineageOS默认的apns-conf.xml中不包含中国三大运营商的ims类型APN配置。
修复:手工创建一个新的APN,名称为IMS,APN为:ims,APN类型为:ims。
boot.img // 内核
dtbo.img // DeviceTree
recovery.img // TWRP (已适配LineageOS的dtbo.img)
system.img // 系统
vbmeta.img // Verify-Boot元数据
vendor.img // Vendor
安装方法:
1. 使用fastboot刷入对应分区。
2. 启动至recovery,清除cache,清除或重建Data分区,文件系统格式为f2fs。
Over!