问题描述
在使用OnePlus One手机时遇到了一个问题,他们曾成功地解锁了引导加载程序以安装CyanogenMod 12,并随后重新锁定了它。然而,现在他们无法再次解锁引导加载程序。尝试使用fastboot oem unlock
命令只能将设备重启到恢复模式,但引导加载程序仍然保持锁定状态。
解决方案
请注意以下操作可能涉及风险,请在执行前确保备份重要数据。
方案1
使用ADB和root权限重置引导加载程序的tamper和lock位
根据最佳回复,可以通过直接修改引导加载程序中的位来解锁引导加载程序。具体步骤如下:
- 启用ADB root权限:
-
在CM 13系统中,可以通过“开发者选项”启用root访问权限。
-
执行命令重置tamper和lock位:
-
打开终端,输入以下命令:
sh
adb root # 重启ADBD守护进程以获得root权限
adb shell
dd bs=1 count=1 skip=1048080 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | xxd | cut -c 10- # 查看当前lock位状态
echo -ne "\x01" | dd bs=1 count=1 seek=1048080 of=/dev/block/platform/msm_sdcc.1/by-name/aboot # 设置lock位为未锁定状态
dd bs=1 count=1 skip=1048084 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | xxd | cut -c 10- # 查看当前tamper位状态
echo -ne "\x00" | dd bs=1 count=1 seek=1048084 of=/dev/block/platform/msm_sdcc.1/by-name/aboot # 设置tamper位为未篡改状态 -
验证结果:
- 使用
fastboot oem device-info
命令验证引导加载程序的状态:
sh
$ fastboot oem device-info
(bootloader) Device tampered: false
(bootloader) Device unlocked: true
(bootloader) Charger screen enabled: false
(bootloader) Display panel:
(bootloader) console_enabled: 0
(bootloader) exec_console_unconsole: 0
方案2
如果xxd
和cut
命令不可用,使用busybox
进行替换
如果xxd
和cut
命令不在路径中,可以使用busybox
来代替。具体命令如下:
# 查看lock位状态
dd bs=1 count=1 skip=1048080 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | busybox xxd | busybox cut -c 10-
# 设置lock位为未锁定状态
echo -ne "\x01" | dd bs=1 count=1 seek=1048080 of=/dev/block/platform/msm_sdcc.1/by-name/aboot
# 查看tamper位状态
dd bs=1 count=1 skip=1048084 if=/dev/block/platform/msm_sdcc.1/by-name/aboot 2>/dev/null | busybox xxd | busybox cut -c 10-
# 设置tamper位为未篡改状态
echo -ne "\x00" | dd bs=1 count=1 seek=1048084 of=/dev/block/platform/msm_sdcc.1/by-name/aboot
以上方法可以帮助您解锁引导加载程序,以便进行进一步的自定义恢复操作。请确保在操作前备份重要数据。