ABL2ESP 测试
本文最后更新于 2025年8月19日 下午
本文章仅限unfuse高通设备,如果你不知道unfuse是是什么意思,
或者你的设备是fused,请勿轻易尝试。
ABL2ESP 测试
项目地址:https://github.com/qualcomm/abl2esp
编译
- 环境: Linux
- 工具:rustup/cargo
安装工具链
国内安装工具链的时候推荐配置镜像源1
2
3
4
5# USTC Mirror
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
# Install ARM64 Toolchain
rustup target add aarch64-unknown-uefi拉代码
1
2git clone https://github.com/qualcomm/abl2esp --depth=1
cd abl2esp构建
1
cargo build --target aarch64-unknown-uefi
打包
参考README中的代码1
2
3
4
5
6
7
8# 初始化EDK2环境
git clone https://github.com/tianocore/edk2.git --depth=1
cd edk2
git submodule update --init --depth=1
make -C BaseTools
. edksetup.sh
# 打包
./package.sh构建完成之后,可以看到目录下生成了
abl-unsigned.elf文件。签名
github有个开源的sectools平替来着,参考项目qtestsign。
使用sectools签名abl-unsigned.elf
1
2# sectools v1
python2.7 sectools.py secimage -p rennell -i abl-unsigned.elf -g abl -sa1
2# sectools v2
./ext/Linux/sectools secure-image --sign --security-profile security_profile.xml --outfile abl-signed.elf --signing-mode TEST abl-unsigned.elf --image-id ABL
测试
上面已经签名完成了,现在使用fastboot/edl刷写abl2esp到abl分区,并且确保已经在开发板的任意FAT分区存放bootaa64.efi
1 | |
刷写完成后,重启进行测试,日志如下:
1 | |
我才用的是HDK,我这没屏幕,所以只能看看日志了,看起来已经正常加载GRUB了,但是由于按键映射问题,PWR等按键没有被映射到回车和上下,所以无法正常切换启动项,只能等待倒计时完成之后自动启动。
使用abl2esp启动LinuxLoader.efi?
LinuxLoader.efi是默认abl中的efi application,现在尝试使用abl2esp加载存放在esp分区里面的LinuxLoader.efi,应该会很有意思。
从原机的abl.elf中解包LinuxLoader.efi,尝试用Grub chainload Linuxloader。
1 | |
重启系统,测试:
测试一下getvar命令,看起来没啥问题,应该是可以用了。
1 | |
编译GRUB
为了兼容电源按键到回车的映射,需要修改代码,并重新编译grub,或者注册一个服务拦截原来的输入发布新的输入,这里选择简单的修改GRUB。
1 | |
经过测试后,可以正常使用按键了。
附录
测试了一下启动Linux,能正常启动,不过不能启动Windows bootmgr,会直接gg。
用QRD720测试了一下,图形界面是正常的
之后去测试了一下高通最近又开源的一个fastboot.efi项目,丢grub里面一起测试一下,参考下一篇文章。