내가 가지고있는 것 : 나는 파일 시스템에 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
.
우리가 안드로이드에 있기 때문에 좀 더 전형적인 리눅스에 비해 몇가지 제약이 있습니다 :
- 아니
/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
3 곳에 설치됩니다.
$ 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 카드를 탑재하는지는 알 수 없습니다).
모든 제안을 부탁드립니다.