Android - lock/unlock bootloader

Android - lock/unlock bootloader_android unlock-CSDN博客文章浏览阅读3.1k次,点赞12次,收藏15次。在执行 adb remount 时高版本经常会提示失败此时就需要对设备的进行解锁操作。记录两个部分,Google解锁和展锐解锁。_android unlock https://blog.csdn.net/qq_38909786/article/details/141463226

在执行 adb remount 时高版本经常会提示失败

 此时就需要对设备的进行解锁操作。记录两个部分,Google解锁和展锐解锁。

目录

一、Google解锁

二、展锐解锁

三、补充跳过按键检测的方案

一、Google解锁
官网介绍的unlock方法如下:锁定/解锁引导加载程序  |  Android Open Source Project

简单总结一下需要的步骤如下:

1、进入引导加载程序

adb reboot bootloader
2、解锁引导加载程序(设备处于lock状态,进行unlock)

fastboot flashing unlock
3、锁定引导加载程序(设备处于unlock状态,进行lock)

fastboot flashing lock
二、展锐解锁
我们使用的是展锐的芯片,根据以上步骤操作会提示未知的命令,如下图:

查阅了相关的 《Android 12.0 Secure Boot使用指南V1.0.pdf》、《Android 14 Secure Boot使用指南V1.0.pdf》 都有介绍详细流程。这里根据自己理解记录下需要的操作。

 1、进入引导加载程序

adb reboot bootloader
2、获取当前手机的id  

fastboot oem get_identifier_token


 3、生成解锁凭证 certificate.bin(ubuntu环境下)

脚本路径为:vendor/sprd/tools/packimage_scripts

秘钥路径为:bsp/tools/secureboot_key/config/rsa4096_vbmeta.pem

vendor/sprd/tools/packimage_scripts$ ./signidentifier_unlockbootloader.sh 上一步获取到的id ../../../../bsp/tools/secureboot_key/config/rsa4096_vbmeta.pem certificate.bin
4、PC上执行如下的解锁指令,需要在设备侧按音量下键确认

fastboot flashing unlock_bootloader certificate-b.bin


然后重启设备即可。

 5、PC上执行如下的锁定指令

fastboot flashing lock
注意:需要使用平台编译生成的 fastboot,编译指令为 make fastboot。生成路径为out/host/windows-x86

三、补充跳过按键检测的方案
bsp/bootloader/lk
 
diff --git a/app/sprdboot/fastboot.c b/app/sprdboot/fastboot.c
index 7291950a..679bb2b8 100755
--- a/app/sprdboot/fastboot.c
+++ b/app/sprdboot/fastboot.c
@@ -3137,12 +3137,15 @@ void fb_cmd_flashing(const char *arg, void *data, uint64_t sz)
                        fastboot_okay("Bootloader has been locked!\n");
                        return;
                }
-
+               // lichang 忽略按键选项,直接lock 
+               /*@start*/
                lcd_printf("\n   Warning: lock device may erase user data.\n");
+               lcd_printf("\n   Ignore key.\n");
+               /*
                lcd_printf("   Press volume down button to confirm that.\n");
                lcd_printf("   Press volume up button to cancel.\n");
                while(!butt_check) {
-                       /* continue check till button pressed */
+                       *//* continue check till button pressed *//*
                        key_code = wait_for_keypress();
                        if (key_code == KEY_VOLUMEDOWN) {
                                butt_check = true;
@@ -3151,7 +3154,8 @@ void fb_cmd_flashing(const char *arg, void *data, uint64_t sz)
                                fastboot_okay("Info:user cancel lock bootloader!   ");
                                return;
                        }
-               }
+               }*/
+               /*@end*/
                lcd_printf("   Begin to erase user data...\n");
                if (0 != common_raw_erase("userdata", 0, 0)) {
                        debugf("erase userdata failed\n");
@@ -3191,11 +3195,15 @@ void fb_cmd_flashing(const char *arg, void *data, uint64_t sz)
                        return;
                }
 
+               // lichang 忽略按键选项,直接lock 
+               /*@start*/
                lcd_printf("\n   Warning: lock device may erase user data.\n");
+               lcd_printf("\n   Ignore key.\n");
+               /*
                lcd_printf("   Press volume down button to confirm that.\n");
                lcd_printf("   Press volume up button to cancel.\n");
                while(!butt_check) {
-                       /* continue check till button pressed */
+                       *//* continue check till button pressed *//*
                        key_code = wait_for_keypress();
                        if (key_code == KEY_VOLUMEDOWN) {
                                butt_check = true;
@@ -3204,7 +3212,8 @@ void fb_cmd_flashing(const char *arg, void *data, uint64_t sz)
                                fastboot_okay("Info:user cancel lock bootloader!   ");
                                return;
                        }
-               }
+               }*/
+               /*@end*/
                lcd_printf("   Begin to erase user data...\n");
                if (0 != common_raw_erase("userdata", 0, 0)) {
                        debugf("erase userdata failed\n");
@@ -3259,10 +3268,14 @@ void fb_cmd_flashing(const char *arg, void *data, uint64_t sz)
         //memset(product_sn_signature, 0, sizeof(product_sn_signature));
 
                lcd_printf("\n   Warning: Unlock device may erase user data.\n");
+               //lichang 忽略按键,直接unlock
+               /*@start*/
+               /*
+               lcd_printf("   Ignore key.\n");
                lcd_printf("   Press volume down button to confirm that.\n");
                lcd_printf("   Press volume up button to cancel.\n");
                while(!butt_check) {
-                       /* continue check till button pressed */
+                       *//* continue check till button pressed *//*
                        key_code = wait_for_keypress();
                        if (key_code == KEY_VOLUMEDOWN) {
                                butt_check = true;
@@ -3271,7 +3284,8 @@ void fb_cmd_flashing(const char *arg, void *data, uint64_t sz)
                                fastboot_okay("Info:user cancel unlock bootloader!   ");
                                return;
                        }
-               }
+               }*/
+               /*@end*/
                lcd_printf("   Begin to erase user data...\n");
                if (0 != common_raw_erase("userdata", 0, 0)) {
                        debugf("erase userdata failed\n");
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_38909786/article/details/141463226

<think>我们参考用户提供的引用资料和用户的问题,用户希望了解如何安全地解锁Android设备的Bootloader。根据引用资料[1],解锁Bootloader是root和刷入自定义ROM的第一步,并且在许多手机上官方支持解锁。引用[2]提到在华为手机中,Bootloader解锁允许用户安装非官方系统。引用[3]则说明了Bootloader的核心功能包括设备初始化、安全检查和加载操作系统。结合用户之前的问题(解锁BL的作用及影响)以及本次问题,我们需要提供安全解锁Android设备Bootloader的方法和教程,并强调注意事项。安全解锁Bootloader的一般步骤:1.备份数据:因为解锁过程会清除设备上的所有数据。2.启用开发者选项和OEM解锁。3.获取解锁码(如果需要,例如华为设备可能需要到官网申请)。4.通过fastboot模式解锁。5.验证解锁状态。注意事项:-不同品牌设备步骤可能不同,需查阅具体设备教程。-解锁可能导致保修失效和安全风险。下面我们详细说明:</think>### 安全解锁 Android 设备 Bootloader 的完整教程 #### 🔒 前期准备(关键安全步骤) 1. **备份所有数据** ⚠️ 解锁会触发强制恢复出厂设置,需提前备份: ```bash adb backup -apk -shared -all -f backup.ab # 使用ADB全量备份[^1] ``` - 推荐额外使用云服务/电脑手动备份照片、短信等敏感数据 - 关闭设备锁屏密码(部分机型解锁会失败) 2. **检查设备支持性** - 进入开发者选项(设置→关于手机→连点7次"版本号") - 启用 **"OEM解锁"** 和 **"USB调试"** (若选项灰色不可用,说明厂商禁止解锁,如部分运营商合约机[^3]) 3. **安装必要工具** ```bash # 安装平台工具(含fastboot/adb) sudo apt install android-tools-adb android-tools-fastboot # Linux brew install android-platform-tools # macOS ``` - 下载设备专用USB驱动(品牌官网获取) #### ⚙️ 正式解锁流程(以Pixel为例) ```mermaid graph TD A[关机后长按音量下+电源键] --> B[进入Fastboot模式] B --> C[连接电脑] C --> D{检查解锁状态} D -->|已解锁| E[终止流程] D -->|未解锁| F[执行解锁指令] F --> G[确认操作] G --> H[自动重置设备] ``` 1. **获取设备标识** ```bash fastboot devices # 确认设备连接 fastboot oem device-id # 提取设备ID(华为等需官网申请解锁码[^2]) ``` 2. **执行解锁命令** ```bash fastboot flashing unlock # 通用命令(Pixel/一加等) fastboot oem unlock [解锁码] # 华为/小米等品牌机[^2] ``` - 设备屏幕出现确认提示 → 用音量键选择"UNLOCK" 3. **验证解锁状态** ```bash fastboot getvar unlocked # 返回yes即成功 ``` #### ⚠️ 关键安全注意事项 1. **防变砖措施** - 保持电量 >50%,避免断电导致分区损坏 - 仅使用原厂数据线,USB接口选主板后置端口 - 华为设备需先登录官网账号绑定设备[^2] 2. **安全风险控制** ```bash fastboot oem lock # 紧急恢复锁定时使用 ``` - 解锁后首次开机较慢(需重建安全分区) - 立即启用磁盘加密:设置→安全→加密设备 - 避免安装未签名内核(可验证SHA256摘要) 3. **厂商特殊要求** | 品牌 | 解锁工具 | 等待期 | 保修影响 | |------------|-------------------|-----------|----------------| | 小米 | Mi Unlock Tool | 7-30天 | 部分功能失效 | | 三星 | Odin | 无 | 熔断Knox保修 | | Sony | Fastboot直接解锁 | 无 | 保留DRM密钥 | #### 🔄 恢复锁定状态 需刷回原厂固件后执行: ```bash fastboot flashing lock # 重锁Bootloader ``` - 重锁会再次清除数据 - 部分机型重锁后仍显示"Orange State"警告 > 📌 完整教程参考:[Android官方解锁文档](https://source.android.com/docs/core/ota/bootloader) > 设备专属教程:XDA论坛对应机型板块(如[Pixel版块](https://forum.xda-developers.com/c/google-pixel-7-pro.12553/))
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值