/ etc / fstab에 해당하는 Android는 무엇입니까?


26

때때로 나는 그들이 리눅스를 그렇게 엉망으로 만들지 않았 으면 좋겠다. 나는이 알고 /etc/fstab거기 어딘가에 있지만, 어디?

대체 파일 시스템으로 일부 파티션을 마운트하고 싶습니다 (FAT32가 마음에 들지 않기 때문에).

답변:


19

Android를 크게 수정 된 Linux 배포판으로 생각하지 마십시오. 그렇지 않기 때문입니다. 안드로이드가 리눅스 배포판과 공유하는 거의 유일한 것은 커널입니다. 그리고이 구성 요소조차도 수정되었습니다. libc와 같은 다른 핵심 구성 요소도 다릅니다.

안드로이드는 없다 /etc/fstab

/etc/fstab파티션을 마운트 할 필요가 없습니다 . 그러나 IIRC mount명령도 없습니다. dev_mount작동해야합니다 (루트 필요). 질문 제목에 대답하려면 : 모든 시작 시스템 마운팅은 /etc/vold.fstab도우미 스크립트를 사용하여 수행됩니다 .


내가 정말로 희망적인 매모 사용자라고 생각합니다. 네, 리눅스와는 아주 거리가 멀어요. vold.fstab에 대한 포인터 감사합니다!
barrymac

3
Vold.fstab은 내 넥서스 1에 sd 카드 만 가지고 있습니다
gcb

7

fstab 파일은에 /있습니다.

칩셋의 카테고리 또는 핸드셋 자체로 식별되는 핸드셋의 지문 속성을 기반으로하는 /fstab.$systemname.rc위치 라고 $systemname합니다.


3
이는 종속적이며 ROM마다 다릅니다. AOSP에서 /etc/vold.fstab. :)
t0mm13b

CM10의 경우에는 /fstab.p1c가 있지만 재부팅 중에는 아직 파악하지 못한 것으로 덮어 씁니다.
jcomeau_ictx

3
source.android.com/devices/storage/config.html 에 따르면 Android 4.2.2 및 이전 버전 vold.fstab에서는 4.3 이상에서는 /fstab.<device>입니다.
LarsH

1
내 Moto E에서이 파일은 읽기 전용으로 마운트 된 파일 시스템에 있습니다 :(
Anton Krosnev

5

충돌하는 정보가 있습니다. 한 리소스는 하드 코딩 되어 있으므로 사용자 측을 변경할 수있는 것은 아닙니다.

Android 특정 init 프로그램은 device / system / init에 있습니다. device / system / init / init.c에 정의 된 LOG 매크로의 잠재적 문제점을 디버그하는 데 도움이되는 LOG 메시지를 추가하십시오.

init 프로그램은 sysfs 파일 시스템을 조사하여 생성 된 하드 코드 파일 이름 또는 장치 이름을 사용하여 모든 파일 시스템과 장치를 직접 마운트합니다 (따라서 Android에서 / etc / fstab 파일이 필요하지 않음).

다른 곳 /etc/vold.fstab/etc/vold.conf언급된다. CM 7.1 아래의 장치에 있지만 어떻게 사용되는지 잘 모르겠습니다.


3
그것은 하드 코딩되어 있지만 그렇지 않습니다. 있다 init.rc당신이 당신의 boot.img를 당겨 당신의 램 디스크를 추출, 다음을 수정할 수 있도록 램 디스크의 삶 해당 파일이 init.rc다시 재 포장 (간략하게 논의 여기티아마트의 소스 에서 마운트 포인트를 설정하는 좋은 예입니다 init.rc)
eldarerathis

5

다음을 실행하여 실행 가능하도록 외부 저장소를 다시 마운트 할 수 있습니다

mount -o remount, rw /mnt/sdcard

이것은 noexec, nosuid 및 nodev 플래그를 제거하지만 여전히 vfat fs입니다. 이 fs에 대한 링크는 만들 수 있지만 내부에서는 사용할 수 없습니다. vold.fstab 파일을 읽고 noexec 플래그를 사용하여 재부팅 할 때 다시 마운트되기 때문에 다시 마운트는 재부팅 후에도 지속되지 않습니다.

외부 저장소를 vfat 이외의 형식으로 다시 포맷하면 재부팅시 다시 탑재되지 않으며 외부 저장소로 이동 한 앱은 사용할 수 없습니다. 앱에 외부 저장소를 사용하지 않으려면 외부 저장소를 마운트 해제 busybox mke2fs DEVICE하고 ext2로 만드는 데 사용할 수 있습니다. 사용 busybox newfs_msdos DEVICEVFAT로 돌아가 다시 사용할 수 있도록.

메모 busybox mkfs.vfat가 깨졌습니다.

lseek : 정의 된 데이터 유형에 비해 너무 큰 값

시간을 낭비하지 마십시오. 이 모든 것은 당신이 루팅되고 작동중인 busybox 바이너리를 가지고 있다고 가정합니다.


2

나는 이것이 오래된 주제라는 것을 알고 있지만 여기에있는 답변 중 일부는 fstabAndroid 에 대한 나의 노력을 방해했습니다 .Android 의 fstab상황이 다른 Linux 배포판과 매우 다르다는 것을 암시하기 때문 입니다. 내가 말할 수있는 것은 그렇지 않습니다.

그러나 여기에서 다른 응답을 읽으면 장치 fstab에 어떤 파일이나 파일이 있습니까?

" Android에 / etc / fstab이 없습니다 "라는 점을 알고 잠시 후퇴 한 것은 이미 알고 있었기 때문에 OP에 도움이되지 않을 것입니다. 이것이 사실이 아니라면 (Android에 해당하는 /etc/fstab것이 무엇인지 묻는) 그들의 질문 은 의미가 없습니다. 반면 @Flow는 Android에 해당하는 '도우미 스크립트'라는 이름을 언급했기 때문에 Android에 해당하는 것이 없음을 암시하려고하지 않았습니다 /etc/vold.fstab.

@Flow의 게시물에서 가져온 것은 일부 시스템에는 파일 ( "도우미 스크립트"일 가능성이 있습니다-전화에서 확인할 수 없음) /etc/vold.fstab이 있고 해당 시스템 에서이 파일은 에 가장 가까운 것과 같습니다 /etc/fstab.

내 기기에 대해 궁금해지기 시작하면서 OP의 나이에도 불구하고 여러 가지 이유로 내 조사 결과를 여기에 게시하려고합니다.

  • 첫째, 문서화 할 모두fstab내 전화, 픽셀 2XL에서 찾을 수있는 스타일 파일을.
  • 둘째, 사람들, 특히 Linux / Android 초보자에게 자신의 장치에서 이러한 파일을 쉽게 찾을 수 있음을 보여주고 싶습니다 ( "물고기를 가르칩니다").
  • 셋째, 내 조사 결과를 작성하는 것이 도움이됩니다 (보너스 : StackExchange에서 항상 다시 찾을 수 있습니다!).
  • 마지막으로 Google은 여전히이 페이지를 제공하고 있으므로 다른 사람에게 도움이 될 가능성이 있습니다.

이 모든 것에서 배운 모든 것을 요약 해 보겠습니다.

Android 또는 적어도 내가 액세스 할 수있는 변형은 fstab스타일 파일 을 사용 합니다. 그러나이 파일의 정확한 이름, 위치 및 기능은 배포판에 따라 다릅니다. 즉, Android 버전 및 장치와 사용자 정의 ROM을 사용하는 경우 ROM에 따라 다릅니다.

, 시스템에 이러한 파일을 찾을 같은 터미널 에뮬레이터를 열려면 tmux또는 adb shell이 뭔가를 실행합니다 find / -type f -iname '*fstab*' 2>/dev/null. 파일 2 ( stderr)를 리디렉션 /dev/null하면 출력 오류 메시지를 무시할 수 있기 때문에 출력을 훨씬 더 깨끗하게 만들 find수 있습니다 root.

내 시스템 (Pixel 2XL, 코드 이름 "taimen")에서 세 개의 후보 파일을 찾았습니다.

taimen:/ # find / -type f -iname '*fstab*' 2>/dev/null

/sbin/.core/mirror/vendor/etc/fstab.taimen
/vendor/etc/fstab.taimen
/data/data/com.android.omadm.service/files/dm/dmt_data/fstab

처음 두 개는 다른 파일에 대한 하드 링크 나 심볼릭 링크가 아니라는 별도의 파일이지만, 파일이 같으면 diff동일하다는 것을 알 수 있습니다. 좀 더 깊게 살펴보면 stat파일에서 실행 하면 동일한 Device 및 Inode 값이 있음을 알 수 있습니다.

taimen:/ # stat /sbin/.core/mirror/vendor/etc/fstab.taimen /vendor/etc/fstab.taimen

  File: `/sbin/.core/mirror/vendor/etc/fstab.taimen'
  Size: 1326     Blocks: 16      IO Blocks: 512 regular file
Device: fc00h/64512d     Inode: 925      Links: 1
Access: (644/-rw-r--r--)        Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-01-01 02:00:00.000000000
Modify: 2009-01-01 02:00:00.000000000
Change: 2009-01-01 02:00:00.000000000

  File: `/vendor/etc/fstab.taimen'
  Size: 1326     Blocks: 16      IO Blocks: 512 regular file
Device: fc00h/64512d     Inode: 925      Links: 1
Access: (644/-rw-r--r--)        Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-01-01 02:00:00.000000000
Modify: 2009-01-01 02:00:00.000000000
Change: 2009-01-01 02:00:00.000000000

stat이 두 파일 이름은 각각 하나의 링크 만있는 일반 파일로보고합니다 (따라서 하드 링크 나 기호 링크는 포함되지 않음). 나는 파일 시스템 전문가는 아니지만 여기서 일어난 일은 동일한 장치가 두 번 마운트되었다는 것입니다. 다음 명령의 출력에서이를 확인할 수 있습니다. 여기서 두 출력 행 사이의 유일한 차이점은 마운트 지점 ( "on"바로 다음 부분)입니다.

taimen:/ $ mount | grep vendor

/dev/block/dm-0 on /vendor type ext4 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr)
/dev/block/dm-0 on /sbin/.core/mirror/vendor type ext4 (ro,seclabel,relatime,block_validity,delalloc,barrier,user_xattr)

세 번째 파일은 루트로 로그인 한 경우에만 나에게 표시되므로 내 장치와 동일한 장치를 사용하는 경우 휴대 전화가 루팅되지 않는 한이 파일을 찾거나 액세스 할 수 없습니다. 이 파일은 Open Mobile Alliance Device Management라는 서비스와 관련이 있지만, 내가 아는 바는 거의없는 서비스이므로 여기서 언급 할 것입니다. 원하는 경우 Google에 자세한 내용을 알려줄 수 있습니다.


1
이전 주제는 실제로 ROM을 빌드 한 대부분의 장치가 /system/etc또는 에 독립 실행 형 fstab 파일을 가질 정도로 상당히 변경되었습니다 /vendor/etc. 신선한 정보를 가져 주셔서 감사합니다.
Andy Yan

이 게시물에서 mount가 오류를 반환하는 이유를 검색했습니다 mount: bad /etc/fstab: No such file or directory. 이에 대한 생각이나 해결책이 있습니까?
Michael
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.