星期五, 12月 31, 2010

vold小記

  • 根據 /system/etc/vold.fstab 去monitor可移除裝置。dev_mount label 掛載點 auto或第n個partition /sys下的路徑,要扣掉/sys
  • NetlinkManager以netlink和kernel建立溝通管道以取得裝置insert/remove事件並做處置(NetlinkHandler)。
  • NetlinkHandler內實際上是呼叫VolumeManager做進一步處理
  • VolumeManager
    1. 管理的是Volume,DirectVolume是其子類別,這裡用了template pattern
    2. 負責mount/umount/share/unshare/format以及secure container
  • 以CommandListener去listen以接收指令,也就是跟上層溝通的管道。(CommandListener, VoldCommand, Process, ResponseCode)。

  • Volume/DirectVolume::mountVol 看來是個適合填 android usb gadget 所需資訊的地方。因為
    1. 有檢查狀態
    2. 可知道是哪一個partition或disk
    3. 可得知insert/remove狀態

  • 需要/dev/device-mapper,所以kernel要把此部份打勾。這邊的設定還蠻多的:
    CONFIG_MD=y
    CONFIG_BLK_DEV_DM=y
    CONFIG_DM_DEBUG=y
    CONFIG_DM_CRYPT=y
    CONFIG_DM_UEVENT=y
    CONFIG_CRYPTO_AEAD=y
    CONFIG_CRYPTO_AUTHENC=y
    CONFIG_CRYPTO_CBC=y
    CONFIG_CRYPTO_PCBC=y
    CONFIG_CRYPTO_HMAC=y
    CONFIG_CRYPTO_MD5=y
    CONFIG_CRYPTO_DES=y
    CONFIG_CRYPTO_TWOFISH=y
    CONFIG_CRYPTO_TWOFISH_COMMON=y


參考資料:

沒有留言: