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無法掛載。