Android 4.4 U盤掛載【轉】


本文轉載自:https://blog.csdn.net/mill_li/article/details/50134301

在Android4.4系統下,ES文件瀏覽器讀取不到U盤,但是在設置->存儲里面是可以看到U盤的,另外一塊板子是4.2系統的,一切正常,用串口看了下發現

正常的板子,U盤掛在/mnt/udisk下,不正常的那個在/mnt/media_rw/udisk下,於是乎就想要更改U盤的掛載路徑.

 

百度了一番發現了一片好文章,讓我解決了這個問題

http://blog.csdn.net/jingxia2008/article/details/25787039

 

因為對Android系統並不是很了解,所以沒法講的特別透徹,感興趣的可以去看看上面那篇文章,我大概是改了三個地方

1.init.rc

系統啟動的時候肯定是要從這里啟動的,所以就看了看,發現果然有關於udisk的東西,飛思卡爾的imx6平台下

/project/device/fsl/imx6/etc/init.rc里面有這樣一段話

 

[plain]  view plain  copy
 
  1. mkdir /mnt/media_rw 0751 media_rw media_rw  
  2. mkdir /storage 0751 root sdcard_r  
  3.   
  4. mkdir /mnt/media_rw/extsd 0755 system system  
  5. symlink /mnt/media_rw/extsd /storage/extsd  
  6. mkdir /mnt/media_rw/udisk 0755 system system  
  7. symlink /mnt/media_rw/udisk /storage/udisk  


 

 
        

看來是在這里創建了掛載的目錄,但是這里只是創建了目錄,系統並不知道要掛載到這里,而且為什么要創建兩個連接呢?百度一番后發現Android有Vold這個東西,機制上的東西我就不說了,也講不明白,具體可以百度下,於是乎我將這里改成了

[html]  view plain  copy
 
  1. #mkdir /mnt/media_rw 0751 media_rw media_rw  
  2. mkdir /storage 0751 root sdcard_r  
  3.   
  4. mkdir /mnt/extsd 0755 system system  
  5. symlink /mnt/extsd /storage/extsd  
  6. mkdir /mnt/udisk 0755 system system  
  7. symlink /mnt/udisk /storage/udisk  

2.fstab

系統會在這里面將掛載點告訴Vold,讓他可以去檢測熱插拔事件,如果沒有在這里注冊,Vold就不會去檢測,這里因為我是freescale平台,所以在/project/device/fsl/sabresd_6dq/

這個目錄下有fstab.freescale文件,里面有這樣幾句話

 

[html]  view plain  copy
 
  1. /devices/platform/sdhci-esdhc-imx.2/mmc_host/mmc1 /mnt/media_rw/extsd vfat defaults voldmanaged=extsd:auto  
  2. /devices/platform/fsl-ehci /mnt/media_rw/udisk vfat defaults voldmanaged=udisk:auto  
  3.   
  4.    

第一個是SD卡的注冊,第二個是U盤的注冊

於是將這里改成了

[plain]  view plain  copy
 
  1. /devices/platform/sdhci-esdhc-imx.2/mmc_host/mmc1 /mnt/extsd vfat defaults voldmanaged=extsd:auto  
  2. /devices/platform/fsl-ehci /mnt/udisk vfat defaults voldmanaged=udisk:auto  

3.Vold

上面兩個改了以后發現問題還是沒有解決,於是就在/project/system/vold/目錄下看,發現有Volume.cpp文件,里面這樣寫的

 

[html]  view plain  copy
 
  1. const char *Volume::MEDIA_DIR           = "/mnt/media_rw";  

於是將這個目錄也改了之后問題解決了。。。

 

 

 

最后還有一點,關於U盤的掛載信息,可以用logcat -s Vold MountService看,我就是這樣發現掛載目錄有問題的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM