原文网址(转载请注明出处):
源码基于:Android Q
文章目录
1.展锐解锁
1.1进入bootloader
adb reboot bootloader
1.2.获取当前手机的id
fastboot oem get_identifier_token
30313233343536373839414243444546
1.3.生成认证文件certificate.bin
./vendor/sprd/proprietories-source/packimage_scripts/signidentifier_unlockbootloader.sh 30313233343536373839414243444546 vendor/sprd/proprietories-source/packimage_scripts/signimage/sprd/config/rsa4096_vbmeta.pem certificate.bin
1.4.烧录certificate.bin
(这里的fastboot要用源码编译出来的(out目录),系统自带的不支持),会提示按音量-键,然后等待,会提示成功。
./out/host/linux-x86/bin/fastboot flashing unlock_bootloader certificate.bin
1.5.开机,关掉认证,再重启,这时就可以remount了。
fastboot reboot
adb root
adb disable-verity
adb reboot
1.6.如果需要重新上锁,运行如下的命令
adb reboot bootloader
fastboot flashing lock
2.自动化脚本
sprd_remount.sh
project_path=/home/liwl/zhanrui/M1910U/sl8541e_1h10wifi5g_32b_Natv
# 1 cmd
# 2 需要返回的字符串 绝对匹配 -w
# 3 等待时间S
# 成功返回1 失败返回0
wait_cmd_resp() {
count=$3
val=0
while (($count)); do
# echo $count
str=$($1)
# str="runoob is a great sites"
ret=$(echo $str | grep -w "$2") #匹配子串
if [[ $ret != "" ]]; then
echo "检测到设备"
val=1
break
else
if [ $count == $3 ]; then #只输出一次
echo "检测设备中..."
fi
sleep 1
val=0
fi
let "count--" #变量递减
done
return $val
}
create_certificate() {
adb reboot bootloader #进入bootloader
wait_cmd_resp "fastboot devices" "fastboot" 60 #确认存在fastboot设备
if [[ $? == 1 ]]; then
id=$(fastboot oem get_identifier_token) #获取当前手机的id
#30313233343536373839414243444546 #当前手机的id
#生成认证文件certificate.bin
echo "----------手动输入下面命令,替换bootloader id,生成bin----------"
echo "cd $project_path"
echo "./vendor/sprd/proprietories-source/packimage_scripts/signidentifier_unlockbootloader.sh ID vendor/sprd/proprietories-source/packimage_scripts/signimage/sprd/config/rsa4096_vbmeta.pem certificate.bin"
return 1
fi
return 0
}
if [[ $1 == "create" ]]; then # 生成认证
cd $project_path
echo "cd "$(pwd)
create_certificate
elif [[ $1 == "unlock" ]]; then # 使用认证,进行解锁
wait_cmd_resp "adb remount" "succeeded" 2
if [[ $? == 1 ]]; then
echo "设备已remount"
else
cd $project_path
if test -e ./certificate.bin; then
echo "开始解锁"
adb reboot bootloader #进入bootloader
wait_cmd_resp "fastboot devices" "fastboot" 60 #确认存在fastboot设备
if [[ $? == 1 ]]; then
#必须使用源码编译出的fastboot,会提示按音量-键,然后等待,会提示成功。
./out/host/linux-x86/bin/fastboot flashing unlock_bootloader certificate.bin
fastboot reboot
wait_cmd_resp "adb devices" "device" 60
if [[ $? == 1 ]]; then
adb root
wait_cmd_resp "adb disable-verity" "already disabled" 5
if [[ $? == 0 ]]; then
adb reboot
fi
fi
wait_cmd_resp "adb remount" "succeeded" 60
if [[ $? == 1 ]]; then
echo "remount 成功"
fi
fi
else
echo "请先生成认证文件"
fi
fi
fi
使用方法:
./sprd_remount.sh create 生成认证
./sprd_remount.sh unlock 解锁+remount(需要先生成认证)
fastboot烧写
fastboot -S 100M flash system system.img
文件太大,可以增加-S参数,比如-S 100M
3.查看分区信息有2种方法
通过adb查看,比如ls -l dev/block/by-name/可以查看分区信息;
版本里查看,比如pac包里解出分区表或者直接查看分区表
out/target/product/$(board_name)/$(board_name).xml
4.展锐提供方法:
按照以下步骤进行unlock操作:
1.user版本首先root,userdebug版本直接进行第2步;
2. 在开发者选项里,打开oem unlock选项;
3. 执行adb命令进入fastboot模式:adb reboot bootloader;
4. cmd进入到本目录下面,执行以下命令进行解锁,之后按下键确认:fastboot.exe flashing unlock_bootloader signature_file cmd进入到本目录下面,执行以下命令进行解除解锁,之后按下键确认:fastboot.exe flashing lock_bootloader
5. cmd界面提示操作成功后,执行fastboot reboot命令重启手机。