올바른 권한 (루트 포함)으로 ext4 형식의 SD 카드를 마운트하려면 어떻게해야합니까?


9

여기에 ext4 형식의 SD 카드를 만드는 것에 대한 언급이 있지만 안내서는 없습니다. 밀접하게 관련된 질문은 그것을 할 수있는 방법이 없다는 것을 암시하지만 내 질문은 내 전화가 구체적으로 뿌리를두고 있다는 점에서 다릅니다.

내 카드를 ext4 (GUID 파티션 테이블)로 포맷했습니다. 내 Cyanogenmod 전화가에 설치되었습니다 /mnt/fuse/sdcard1. 여기/storage/sdcard1다음 스크립트를 작성하여 카드를 마운트하는 지침을 따르 십시오 ./data/local/userinit.sh

#!/system/bin/sh
REALMNT=/mnt/fuse/sdcard1_real
if ! [ -d "$REALMNT" ]; then
  mkdir "$REALMNT" || exit 1
fi
mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT"
sdcard "$REALMNT" /storage/sdcard1 1023 1023 &

ES 파일 탐색기를 사용하여 파일을 다시 시작하고 복사하려고 시도하여 실패한 상위 디렉토리에 붙여 넣었습니다.

/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).

실제로 파일을 잘 재생할 수 있으므로 열 수 있습니다. FWIW, 원래 마운트 지점 ( /mnt/fuse/sdcard1) 에서 복사하려고 하면 약간 다른 오류가 발생합니다.

Failed to copy the file bar.mp3

Cyanogenmod 10.2.0-i9300과 함께 Samsung Galaxy S3를 사용하고 있습니다.

== 편집 ==

su
ls -l /mnt/fuse
drwxrwxr-x media_rw media_rw   2014-03-04 22:08 sdcard1

그게 전부였다. 더 없다 sdcard1_real내가 스크립트가 실패 가정하므로,이 디렉토리에?

== 편집 2 ==

문제를 해결하기 위해 스크립트를 수정하려고했습니다. 스크립트는 정상적으로 시작되지만 mkdir "$REALMNT"오류가 발생하면서 실패합니다 /data/local/userinit.sh[6]: : not found.

== 편집 3 ==

스크립트가 작동하지 않는다는 것을 알고 있으므로 문제를 해결하면 다음과 같은 내용이 흥미 로웠다고 생각합니다. Linux 컴퓨터에서 SD 카드를 포맷하고 일부 파일을 전송했습니다. 이상하게도 권한 오류는 내가 만든 하위 디렉토리에서만 발생합니다. 를 통해 파티션의 루트에서 /storage/sdcard1이미 쓰기 권한이 있습니다.


1
루트로서 ls -l /mnt/fuse/및을 실행하십시오 ls -l /mnt/fuse/sdcard1_real. 그런 다음 결과를 포함하도록 질문을 편집 하십시오. 내 생각 엔 마운트 나 foo/카드 의 디렉토리에 대한 "잘못된 파일 권한" 입니다. ext4는 모든 * nix 파일 권한을 지원합니다. 사용자 및 그룹.
Izzy

su루트를 얻으려면 터미널을 입력하십시오 . 처음으로 전화를하는 경우 전화에 대한 권한 부여를 확인해야 할 수 있습니다.
Chahk

스크립트가 실패했거나 전혀 실행되지 않았습니다. 예를 들어 echo Script executed > /mnt/fuse/sdcard1/test.log, 디버그 출력을 추가하고 실행 중인지 확인할 수 있습니다. 그렇다면 이전-마지막 줄을 mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT" 2> /mnt/fuse/sdcard1/test.log만들고 오류 메시지를 확인하십시오. 또는 스크립트를 수동으로 실행하여 다음을 확인하십시오 su /data/local/userinit.sh..
Izzy

@Izzy touch는 스크립트가 실행 중임을 나타냅니다. 로 스크립트를 수동으로 실행하려고 시도 su /data/local/userinit.sh했지만 실패했습니다. 또한 시도했지만 su echo foo비슷한 오류가 발생했습니다 Unknown id: echo.
Sparhawk

EDIT3에 대해서는 첫 번째 의견을 참조하십시오 : ext4는 전체 * nix 파일 권한을 포함하여 지원합니다. 사용자 및 그룹 . Android 기기에 존재하지 않는 사용자로 해당 디렉토리를 만들었으므로 "알 수없는 사용자 / 알 수없는 그룹"에 속합니다. "world"에 대한 쓰기 액세스 권한을 부여하지 않으면 루트 만 쓸 수 있습니다. 휴대용 미디어에서 이러한 파일 시스템을 사용할 때 이러한 * nix 기본 사항을 숙지해야합니다.) 스크립트에 대해서는 다시 echo명령을 실행하기 전에 각 명령을 출력하고 오류 출력을 2>>.
Izzy

답변:


6

이는 한 가정으로 몇 개월 전에 고정,하지만 사람들은 여전히 문제를보고하고있다. 카드의 항목을 읽을 수 있지만 쓰기 권한이 없습니다. 문제를 해결하기 위해 몇 가지 소스의 전략을 결합했습니다 .

  1. MS-DOS 파티션 테이블 및 ext4 파일 시스템이있는 파티션 카드. (Linux) 데스크탑 컴퓨터에서 GParted를 사용했습니다.
  2. 휴대 전화에 카드를 삽입하십시오. (지금 쓰기 권한이 없을 것입니다.)
  3. Cyanogenmod에 기본적으로 설치된 터미널 에뮬레이터를 엽니 다 .
  4. 다음을 입력하십시오 ( 큰 텍스트 블록에는 WiFi 키보드 를 권장 합니다). 에뮬레이터에게 요청할 때 루트 권한을 부여하십시오.

$#그래서 그들을 입력하지 않는 메시지를 나타냅니다.

$ su
# chown media_rw:media_rw /mnt/media_rw/sdcard1
# chmod g+w /mnt/media_rw/sdcard1

SD 카드의 권한이 변경됩니다. 소유자와 그룹이에서 (으) system로 변경되고 media_rw그룹에 쓰기 권한도 부여됩니다.


recursif chown에 -R 필요 -R media_rw : media_rw / mnt / media_rw / sdcard1
m3asmi

1

그것이 도움이되는지 확실하지 않지만 문제는 잘못된 위치에 마운트하려고한다는 것입니다. 이것은 CM11이있는 S3 mini에서 작동하는 작업 스크립트입니다.

#!/system/bin/sh
REALMNT=/mnt/media_rw/sdcard1
if ! [ -d "$REALMNT" ]; then
mkdir "$REALMNT" || exit 1
fi
mount -t ext4 -o rw,noatime /dev/block/mmcblk1p1 "$REALMNT"
sdcard "$REALMNT" /storage/sdcard1 1023 1023 

REALMNT 위치는 이미 존재하므로 mkdir은 호출되지 않았습니다. media_rw / sdcard1은 이미 media_rw가 소유하고 있습니다.

또한 다음을 포함하도록 /etc/permissions/platform.xml을 업데이트해야 <group id="media_rw"/> 했습니다. <permission name="android.permission.WRITE_EXTERNAL_STORAGE">


감사. 스크립트에서 배터리 사용률이 높았 기 때문에 다소 포기했습니다. 트렁크에 고정되어 있으므로 더 이상 해결 방법이 필요하지 않습니다. 감사합니다. +1
Sparhawk

@Sparhawk : 사용중인 CYM 버전이 확실하지 않지만 SD 카드가 자동으로 마운트되지 않습니다.
Luis A. Florit

@ LuisA.Florit 이 답변 에 회신 할 것인지 잘 모르겠습니다 . 어쨌든 11-20140804-SNAPSHOT-M9-i9300을 사용하고 있습니다. 다른 답변 에 더 많은 정보를 게시했습니다 .
Sparhawk

@Sparhawk : 내 카드가 마운트되지 않아 설정의 마운트 절차가 실패합니다. 어쩌면 문제가 내 질문과 관련이있을 수 있습니다 ( android.stackexchange.com/questions/82089/su 마운트하지 못했습니다 ... `cm-11-20140804-SNAPSHOT-M9-mondrianwifi.zip 사용):
Luis A. Florit

@ LuisA.Florit 확실하지 않습니다. 새로운 질문이 있을까요?
Sparhawk

0

adasdadasd 가 게시하고 싶었지만 삭제 된 답변이있었습니다 . 아래에서이를 재현하고 답변을 수락하지만, adasdadasd resurfaces가 있으면 다시 게시하고이를 삭제하고 귀하의 의견을 수락하겠습니다.

https://jira.cyanogenmod.org/browse/CYAN-332

https://github.com/CyanogenMod/android_packages_providers_MediaProvider/commit/faf3f77b9222554227740aed8127714ea9e3f407

기본적으로 수정 되었습니까? github의 새로운 변화.


0

여기 simpeline

#!/system/bin/sh
REALMNT="/mnt/media_rw/extSdCard"
mount -t ext4 -o rw,noatime /dev/block/mmcblk1p1     "$REALMNT"
sdcard "$REALMNT" /storage/extSdCard 1023 1023 &

외부 SD에 쓰기 가능한 ext4

#!/system/bin/sh
chown media_rw:media_rw /mnt/media_rw/extSdCard
chmod g+w /mnt/media_rw/extSdCard

외부 sdcard가 마운트 된 "sdcard1"과 같이 "extSdCard"를 변경할 수 있습니다.

Iam은 Kingroot에서 stockrom을 사용했지만 파일 시스템을 마운트하는 데 문제가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.