首页
关于 About
网站安全性 Security
Search
1
Chrome/Chromium 在 Linux 平台的视频硬解方案
1,545 阅读
2
将 USB 设备连接到 WSL2
302 阅读
3
关闭 Intel VMD 解决 INACCESSIBLE_BOOT_DEVICE 蓝屏
273 阅读
4
Android 14 平台程序开发中文件共享权限问题
200 阅读
5
为河北邯郸被害少年发声
199 阅读
数字安全
教程
公告
默认
高通设备开发
登录
Search
标签搜索
Linux
Windows
Qualcomm
QCS8250
SM8250
高通
Chromium
Chrome
AppArmor
PKI
Android
OpenWrt
NVIDIA
CertificateTransparency
X509
Python
pip
Docker
Electron
WSL
日暮清林
累计撰写
22
篇文章
累计收到
11
条评论
首页
栏目
数字安全
教程
公告
默认
高通设备开发
页面
关于 About
网站安全性 Security
搜索到
22
篇与
的结果
2025-02-19
GKI 2.0 内核启动时加载模块报错 Permission Denied 的解决方案
前言android15-6.6 内核编译后,打包镜像、DTB、内核模块到 AOSP,刷入后开机报错。查看日志发现 init 刚进入第一阶段,正在加载所有内核模块,结果第一个模块就报错,于是中止。研究发现内核模块的加载是错误码-EACCESS,查看代码分析发现是内核模块 exports protected symbol。该符号是定义在 abi_gki_protected_exports_aarch64 文件中的。因此要解决问题可以采用三个方案:built-in 内核模块修改该符号表禁用检查解决方案先尝试直接内置模块代码,不单独作为模块编译,结果其他模块都报错...估计是模块依赖的问题,要这样一个一个解决的话还不如把所有模块都内置了...于是果断选择方案三:禁用 CONFIG_MODULE_SIG_PROTECT。
2025年02月19日
37 阅读
0 评论
0 点赞
2025-02-12
感谢 skk 送的“一堆” 9eSIM!
感谢 skk 无偿包邮赠送的一堆 9eSIM 卡:9eSIM v0 x29eSIM v2 x19eSIM v3 x1谢谢 skk,爱来自 Soviet Union~
2025年02月12日
12 阅读
0 评论
0 点赞
2025-02-07
高通设备编译生成分区表
环境准备高通分区表使用 ptool.py 工具解析分区表文件生成,工具需要使用 Python 2。准备包含所有分区的 partition.xml 分区表文件。生成分区表要生成可刷入 GPT 分区表 Binary 和 QFIL 线刷包使用的 rawprogram、patch 文件,使用命令:python ptool.py -x partition.xml随后会在当前目录下生成所有分区表文件:gpt_backup0.bin gpt_both4.bin gpt_main2.bin rawprogram0_BLANK_GPT.xml rawprogram3_WIPE_PARTITIONS.xml wipe_rawprogram_PHY2.xml gpt_backup1.bin gpt_both5.bin gpt_main3.bin rawprogram0_WIPE_PARTITIONS.xml rawprogram3.xml wipe_rawprogram_PHY4.xml gpt_backup2.bin gpt_empty0.bin gpt_main4.bin rawprogram0.xml rawprogram4_BLANK_GPT.xml wipe_rawprogram_PHY5.xml gpt_backup3.bin gpt_empty1.bin gpt_main5.bin rawprogram1_BLANK_GPT.xml rawprogram4_WIPE_PARTITIONS.xml wipe_rawprogram_PHY6.xml gpt_backup4.bin gpt_empty2.bin patch0.xml rawprogram1_WIPE_PARTITIONS.xml rawprogram4.xml wipe_rawprogram_PHY7.xml gpt_backup5.bin gpt_empty3.bin patch1.xml rawprogram1.xml rawprogram5_BLANK_GPT.xml zeros_1sector.bin gpt_both0.bin gpt_empty4.bin patch2.xml rawprogram2_BLANK_GPT.xml rawprogram5_WIPE_PARTITIONS.xml zeros_5sectors.bin gpt_both1.bin gpt_empty5.bin patch3.xml rawprogram2_WIPE_PARTITIONS.xml rawprogram5.xml gpt_both2.bin gpt_main0.bin patch4.xml rawprogram2.xml wipe_rawprogram_PHY0.xml gpt_both3.bin gpt_main1.bin patch5.xml rawprogram3_BLANK_GPT.xml wipe_rawprogram_PHY1.xml
2025年02月07日
13 阅读
0 评论
0 点赞
2025-02-05
高通设备开发问题汇总(含Bootloader开发、HLOS开发)
前言本文汇总所有本人在基于 SM8250 处理器的高通参考设计移动平台开发时遇到的所有问题及其解决方案。不定期更新。Questions & Solutions新版本 UEFI ABL (uefi.lnx.5.0) 内存访问越界导致 UEFI panic 的相关问题前言:设备一直使用的是 LE.UM. 开头的 ABL 仓库代码,高通表示这是给 Ubuntu 用的(也能解释安全启动相关代码中的 VB_LE 的优先级最高了),不能用于 Android 启动(事实上成功启动了,但是 VerifiedBoot 是废的),于是研究决定采用高通官方提供的 LA. 开头的 ABL。(高通这个代码命名好抽象,LE.UM 是 Debian 等发行版、LA 是 Android、UBUN 是 Ubuntu...)。刚开始用的是 SoC BSP 里内核推荐的版本 uefi.lnx.4.0,但是开机运行到某个函数有玄学问题,随后代码比对发现 uefi.lnx.5.0 中的该函数签名和 LE.UM. 开头的 ABL 的仓库代码中一致,觉得用 5.0 更有戏,然后就开始折腾了...关键词: data fault/panic/mmu/avb设备在 Bootloader 阶段默认允许访问地址从 0x80000000 开始,XBL 中有对设备所有 Bootloader 阶段的内存定义。分析新版本 ABL 中的 AVB 启动流程,vbmeta、boot、dtbo、vendor_boot 分区都是由 avb_slot_verify() 负责加载到内存,并且存在代码的 loaded_partitions,随后核心函数 BootLinux() 调用 GetImage() 函数,而 GetImage() 函数则将启动参数结构体中的 ImageBuffer 指向 loaded_partitions[0].image_buffer(代码均是写死的,除非内核在 recovery 分区(某些 Android 版本是这样设计的),否则 boot 分区永远第一)。然后开机发现,出现 data fault panic 了,查看寄存器中的地址,后续调试发现与 DtSingleHdr 指针地址一致,该指针计算方法为 ImageBuffer + DtbOffset(新版本 UEFI 根据启动头版本判断是否小于 1 再加 PageSize),与旧版 ABL 启动日志比对发现,DtbOffset 和 PageSize 均未变化,唯一有变化且为巨大变化的是 ImageBuffer 的地址。随后发现 AllocateZeroPool() 函数不知道为什么分配了一个 0x2XXXXXXX 的地址。该地址在 UEFI 中肯定是不允许访问的,而且 MMU 检测到 CPU 越界访问直接 Panic...至此问题明了(一句话带过一天一夜的心酸努力),调整为 UEFI DXE 分配的内存地址和大小后,刷入顺利开机。Android 启动失败,init 进程找不到默认 fstab根据结果,逆向查找问题原因:发现 Ramdisk 已正确挂载,init 找不到这几个 prop:fstab_suffix, hardware, hardware.platform,无法获取到正确的默认 fstab 文件名。查看 init 代码发现,这几个 props 是从内核 cmdline 或 bootconfig 获取,高通在 HDR v4 通过 bootconfig 提供这几个参数。观察启动日志,注意到 Failed to parse bootconfig: Value is redefined at 错误,发现内核未能正确处理 bootconfig,有重复定义的值,经过检查,发现 bootconfig 中确实存在重复值 androidboot.boot_devices。但是高通的设备树中又定义了这个值,删去后问题解决。查询重复原因,发现 ABL 会向 bootconfig 中添加 androidboot.boot_devices,因此无需在设备树中再次添加。Android 启动失败,init 进程找不到默认 super 分区检查 Bootloader 向后传递的启动参数中的soc/是否更正为soc@0/
2025年02月05日
13 阅读
0 评论
0 点赞
2025-02-03
高通设备固件签名
环境准备高通 Sectools 需要使用 Python 2.固件签名 (secimage)查询 Chipsetsectools.py secimage -h --chipset=LIST查询 Sign IDsectools.py secimage -h --chipset=sm8250 --sign_id=LIST签名固件需要注意 config_path 和 chipset 参数二者只用提供一个即可。以签名 QCS8250 的 ABL 独立固件为例,使用高通测试签名进行签名:sectools.py secimage --config_path=QCS8250.LA.2.0/common/sectools/config/sm8250/sm8250_secimage.xml --sign_id=abl -i abl.elf -s随后可在 Sectools 目录的子目录 secimage_output 中,找到已签名的固件。本例中为QCS8250.LA.2.0/common/sectools/secimage_output/sm8250/abl/abl.elf已知问题与解决方案编译好的 ABL 刷入不开机,开机日志显示:pil-abl failed to validate firmware metadata return Device Error查询 BSP 中的 XBL 源码可知:在 PilValidateMetadata() 函数中,将 ABL 映像信息通过 PilScmStdCall() 发送给安全环境中的 TA 校验,校验通过后,TA 才会将 ABL 加载到安全内存中。结合高通设备启动流程:<Power On> -> PBL -> XBL Sec (Start QSEE) -> XBL Core [XBL] -> ABL (Fastboot/LinuxLoader) -> Linux Kernel -> HLOS (Android/Debian/Ubuntu)。对比高通提供的 Bootloader 包中的 abl.elf 文件发现,自己编译的 ABL 固件缺少签名。由于设备暂未开启安全启动,因此使用高通测试签名进行签名并刷入测试。经过测试,固件可以开机并加载。
2025年02月03日
58 阅读
0 评论
0 点赞
1
2
...
5