Что у меня есть: я знаю место в файловой системе, где монтируется карта microSD, например /storage/sdcard1
Что мне нужно: чтобы узнать, какой папке устройства она соответствует, например /sys/class/mmc_host/mmc0
(которая является ссылкой на /sys/devices/msm_sdcc.1/mmc_host/mmc0
) против /sys/class/mmc_host/mmc1
(это ссылка на /sys/devices/msm_sdcc.2/mmc_host/mmc1
).
Мне нужно найти правильный каталог, чтобы я мог получить содержимое файлов в нем, таких как cid
, serial
, oemid
и так далее.
Можно предположить, что /sys/class/mmc_host/mmc1
соответствует карте microSD, установленной в /storage/sdcard1
, но на некоторых устройствах Android это mmc0
.
Поскольку мы находимся на Android, у нас есть некоторые ограничения относительно более типичного Linux:
- файлы
/etc/mtab
или/etc/fstab
существуют - нет команд
hwinfo
илиhdparm
dmesg
не запускается (klogctl: операция не разрешена)df
не выводит столбец "установлен на"- нет доступа к
stat()
или другим вызовам низкого уровня; по крайней мере, без некоторой разработки NDK, которая представляет собой глубокий бассейн для погружения, требующий архитектурно-специфических сборок
Вот вывод df
относящийся к карте microSD:
Filesystem Size Used Free Blksize
/storage/sdcard1 29.0G 2.0G 27.0G 32768
(что сбивает с толку, потому что я думал, и mount
указывает, что /storage/sdcard
- это точка монтирования, а не файловая система).
И соответствующий вывод mount
:
/dev/block/vold/179:65 /mnt/media_rw/sdcard1 vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1023,gid=1023,fmask=0007,dmask=0007,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/fuse /storage/sdcard1 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
Выше показано, что файловая система, смонтированная в /storage/sdcard1
является /dev/fuse
. Но /dev/fuse
монтируется в трех местах:
$ mount | grep fuse
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/fuse /storage/emulated/legacy fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/fuse /storage/sdcard1 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
и в любом случае я до сих пор не вижу способа выяснить, какой каталог /sys/class/
... или /sys/devices/
... соответствует /storage/sdcard1
.
Таким образом, один из способов ответить на первоначальный вопрос, вероятно, будет ответить на подвопрос: Как я могу найти запись /sys /class или /sys /devices для FUSE -монтированной файловой системы? Это должно как минимум ответить на вопрос для этого случая (но я не знаю, все ли устройства Android монтируют карты microSD одинаково).
Любые предложения приветствуются.