在 Linux kernel 2.6 之後,Linux 已經採用 udev 來管理各種 device 的新增、移除,但是在 Android 中,Google 並未使用 udev 的機制,而是採用 vold 來取代 udev的工作。
Vold 的trace 可以參考下面文章的分析,trace 跟原理都寫得很詳細。
http://blog.csdn.net/datangsoc/article/details/5928132
PS: 最早的 Android 並沒有 vold,而是更單純的 mountd
udev/vold 的架構簡單來說就是,kernel 會在新增 device 時,透過socket 發出 uevent 到 userspace, vold 則是負責去接收這些 event 並且做出相對應的處理。
Google 之所以不在 Android 採用 udev 的原因,可能是因為早期的 Android 最多也只能插入 SD card,所以 vold 內,主要負責的是 SD card 的處理。
在 Android Tablet 推出後,許多廠商加入了標準 USB port,這樣一來,可以使用的 device 就更多了,只是由於缺乏 udev的機制,實作上就會比較混亂。
參考文章:
* Volume service
* udev 官網: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
* udev - 強大的 device node 管理系統
* uevent 分析
* udev rules
* mastering udev