Widzę tu kilka wzmianek o tworzeniu karty SD w formacie ext4, ale bez przewodnika. To ściśle powiązane pytanie sugeruje, że nie ma sposobu, aby to zrobić, ale moje pytanie różni się tym, że mój telefon jest specjalnie zrootowany.
Sformatowałem kartę jako ext4 (tablica partycji GUID); mój telefon Cyanogenmod zamontował go na /mnt/fuse/sdcard1
. Postępowałem zgodnie z instrukcjami , aby zamontować kartę w /storage/sdcard1
, tworząc następujący skrypt o/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 &
Uruchomiłem ponownie i próbuję skopiować plik (przy użyciu Eksploratora plików ES) i wkleić go do katalogu nadrzędnego, co nie powiodło się:
/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).
Mogę właściwie odtworzyć plik, więc mogę go otworzyć. FWIW, gdy próbuję skopiować z oryginalnego punktu montowania ( /mnt/fuse/sdcard1
), pojawia się nieco inny błąd:
Failed to copy the file bar.mp3
Używam Samsunga Galaxy S3 z Cyanogenmod 10.2.0-i9300.
== EDYCJA ==
su
ls -l /mnt/fuse
drwxrwxr-x media_rw media_rw 2014-03-04 22:08 sdcard1
To było wszystko. W sdcard1_real
tym katalogu nie ma , więc przypuszczam, że skrypt nie działa?
== EDIT2 ==
Próbowałem zmodyfikować skrypt, aby rozwiązać problem. Skrypt zaczyna się dobrze, ale potem kończy się niepowodzeniem mkdir "$REALMNT"
z błędem /data/local/userinit.sh[6]: : not found
.
== EDIT3 ==
Wiem, że skrypt nie działa, więc naprawienie go może rozwiązać moje pytanie, ale pomyślałem, że następujące było interesujące. Sformatowałem kartę SD w komputerze z systemem Linux i przesłałem do niej niektóre pliki. Co dziwne, błędy uprawnień występują tylko w podkatalogach, które utworzyłem. W katalogu głównym partycji (przez /storage/sdcard1
) mam już uprawnienia do zapisu.
su
terminal, aby uzyskać root. Może być konieczne potwierdzenie udzielenia zezwolenia przez telefon, jeśli robisz to po raz pierwszy.
echo Script executed > /mnt/fuse/sdcard1/test.log
I sprawdzić, czy w ogóle działa. Jeśli tak, zrób od ostatniego do ostatniego wiersza mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT" 2> /mnt/fuse/sdcard1/test.log
i sprawdź komunikat o błędzie. Lub wykonać skrypt ręcznie zobaczyć: su /data/local/userinit.sh
.
touch
pokazuje, że skrypt jest uruchomiony. Próbowałem wykonać skrypt ręcznie su /data/local/userinit.sh
, ale nie powiodło się. Próbowałem również su echo foo
, i uzyskać podobny błąd: Unknown id: echo
.
echo
do wypisania każdego polecenia przed jego wykonaniem i przekierowanie wyjścia błędu za pomocą 2>>
.
ls -l /mnt/fuse/
ils -l /mnt/fuse/sdcard1_real
. Następnie edytuj swoje pytanie, aby uwzględnić wyniki. Moje przypuszczenie jest „błędne uprawnienia do pliku” - albo na Górze lub dofoo/
katalogu na karcie. Pamiętaj, że ext4 obsługuje pełne uprawnienia do plików * nix, w tym. użytkownik i grupy.