Recovery升级过程,通常会从两个地方获取升级包update.zip升级,一般在线升级,会把升级包下载到cache分区,本地升级会从usb或者tf卡中升级。本文讨论下,本地USB升级时,无法挂载USB设备的问题。
无法挂载USB设备的时候,可以按照以下流程分析:
4.1 手动挂载
我们先确定是否能够手动挂载USB设备
busybox mount -t vfat /dev/block/sda1 /udisk
-t vfat 是U盘的格式,根据U盘具体格式加参数
/dev/block/sda1是U盘的逻辑分区,可能是/dev/blcok/sd**
/udisk 是挂载点
如果是可以手动挂载可以,那么说明USB驱动是好的,升级的时候挂载太早,可能/dev/block/sd**节点还未生成导致,可在挂载之前增加延时,保证挂载时候USB设备节点已经生成。
4.2 查看内核是否支持格式
输入命令:cat /proc/filesystems
确认kernel已经支持U盘对应的文件系统,从上图可知,是不支持ntfs格式的U盘的,那么NTFS格式的USB可能是不识别的。
4.3 确认驱动是否存在
common\fs下面是否有对应的驱动:
如果没有对应的驱动代码,需要驱动上增加支持
4.4 如果驱动有了,查看是否配置文件已经打开:
common\arch\arm64\configs\meson64_defconfig
或者通过menuconfig配置打开对USB设备文件系统的支持。
4.5 确认ko是否插入
如果USB的驱动是以ko的形式存在,则需要在内核起来之后,在init.rc中insmod usb.ko,这样才能保证识别USB设备
4.6 总结
当无法识别USB设备的时候,我们需要从上而下分析,从逻辑分析到驱动实现,逐级排查,是哪里导致的USB无法挂载。