Doğru izinlere sahip (köklü) ext4 biçimli bir SD kartı nasıl takabilirim?


9

Burada ext4 biçimli bir SD kart oluşturmanın bazı belirtilerini görüyorum, ancak kılavuz yok. Bu yakından alakalı soru, bunu yapmanın bir yolu olmadığını gösteriyor, ancak sorumun telefonumun köklü olması farklı.

Kartımı ext4 (GUID bölümleme tablosu) olarak biçimlendirdim; Cyanogenmod telefonum onu ​​monte etti /mnt/fuse/sdcard1. Aşağıdaki komut dosyasını oluşturarak kartı takmak için buradaki talimatları /storage/sdcard1uyguladım./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 &

Yeniden başlattım ve bir dosyayı (ES Dosya Gezgini'ni kullanarak) kopyalamaya ve başarısız olan üst dizinine yapıştırmaya çalışıyorum:

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

Aslında dosyayı gayet iyi oynatabiliyorum, bu yüzden açabiliyorum . FWIW, orijinal bağlama noktasından ( /mnt/fuse/sdcard1) kopyalamayı denediğimde , biraz farklı bir hata alıyorum:

Failed to copy the file bar.mp3

Cyanogenmod 10.2.0-i9300 ile bir Samsung Galaxy S3 kullanıyorum.

== DÜZENLEME ==

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

Hepsi buydu. sdcard1_realBu dizinde yok , bu yüzden betiğin başarısız olduğunu varsayalım?

== EDIT2 ==

Sorun gidermek için komut dosyasını değiştirmeyi denedim. Komut dosyası iyi başlıyor, ancak mkdir "$REALMNT"hatayla başarısız oluyor /data/local/userinit.sh[6]: : not found.

== EDIT3 ==

Betiğin çalışmadığını biliyorum, bu yüzden düzeltmek sorumu çözebilir, ancak aşağıdakilerin ilginç olduğunu düşündüm. SD kartımı Linux bilgisayarımda biçimlendirdim ve bazı dosyaları ona aktardım. İşin garibi, izin hataları yalnızca oluşturduğum alt dizinlerde oluşuyor. Bölümün kökünde (üzerinden /storage/sdcard1) zaten yazma iznim var.


1
Kök olarak, lütfen ls -l /mnt/fuse/ve ls -l /mnt/fuse/sdcard1_real. Ardından , sonuçları dahil etmek için sorunuzu düzenleyin . Benim tahminim "yanlış dosya izinleri" - ya mount için ya foo/da karttaki dizin için. Unutmayın, ext4 tam * nix dosya izinlerini destekler. kullanıcı ve gruplar.
Izzy

Yazdığınız sukök almak için, terminal içinde. İlk kez yapıyorsanız, telefonda izin verdiğinizi onaylamanız gerekebilir.
Chahk

Komut dosyası başarısız ya da hiç çalıştırılmamış. Örneğin echo Script executed > /mnt/fuse/sdcard1/test.log, bazı hata ayıklama çıktıları eklemek ve çalışıp çalışmadığını kontrol etmek isteyebilirsiniz. Öyleyse, bir önceki son satırı yapın mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT" 2> /mnt/fuse/sdcard1/test.logve hata mesajını kontrol edin. Veya görmek elle komut dosyasını çalıştırın: su /data/local/userinit.sh.
Izzy

@Izzy touchbetiğin çalıştığını gösterir. Komut dosyasını el ile yürütmeyi denedim su /data/local/userinit.sh, ancak bu başarısız oldu. Ben de denedim su echo foove benzer bir hata alıyorum: Unknown id: echo.
Sparhawk

EDIT3'ünüze gelince, ilk yorumuma bakın: ext4 tam * nix dosya izinlerini, dahil. kullanıcı ve gruplar . Bu dizinleri Android cihazınızda bulunmayan bir kullanıcıyla oluşturdunuz, bu nedenle "bilinmeyen kullanıcı / bilinmeyen gruba" aitler. Eğer "dünyaya" yazma erişimi vermediyseniz, oraya sadece kök yazabilirdi. Taşınabilir medyada böyle bir dosya sistemi kullanırken bu * nix temelleri hakkında bilgi sahibi olmalısınız;) Betikte olduğu gibi, örneğin echoher komutu çalıştırmadan önce çıktı almak için kullanarak daha fazla hata ayıklama bilgisi eklemenizi ve hata çıktısını 2>>.
Izzy

Yanıtlar:


6

Bu edilmiş sözde birkaç ay önce sabit, ama insanlar hala sorunlar bildiriliyor. Karttaki öğeleri okuyabilirim, ancak yazma iznim yok. Bunu düzeltmek için birkaç kaynaktan gelen stratejileri birleştirdim .

  1. MS-DOS bölüm tablosu ve ext4 dosya sistemli bölüm kartı. GParted'ı (Linux) masaüstü bilgisayarımda kullandım.
  2. Kartı telefonunuza takın. (Muhtemelen şimdi yazma erişiminiz olmayacak.)
  3. Cyanogenmod'a varsayılan olarak kurulan terminal emülatörünü açın .
  4. Aşağıdakileri yazın ( Büyük metin blokları için WiFi Klavye'yi öneririm ). İstediğinde öykünücüye kök ayrıcalıkları verin.

$Ve #böylece onları içinde yazmayın, istemleri göstermektedir.

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

Bu, SD kartın izinlerini değiştirir. Sahibi ve grup değiştirme systemiçin media_rwve aynı zamanda grup yazma erişimi sağlar.


yinelenen chown için -R gerekir -R media_rw: media_rw / mnt / media_rw / sdcard1
m3asmi

1

Herhangi bir yardım olup olmadığından emin değilsiniz, ancak sorun şu ki yanlış yere monte etmeye çalışıyorsunuz? Bu CM11 ile bir S3 mini üzerinde çalışan benim çalışma komut dosyasıdır:

#!/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 konumu zaten vardı, bu yüzden elbette mkdir asla çağrılmadı. Ve media_rw / sdcard1 zaten media_rw'a ait

Ayrıca şunları eklemek için /etc/permissions/platform.xml dosyasını güncellemek zorunda kaldım <group id="media_rw"/> : <permission name="android.permission.WRITE_EXTERNAL_STORAGE">


Teşekkürler. Biraz da vazgeçmiştim, çünkü senaryomda da yüksek pil kullanımı vardı. Bagajda sabit olduğundan, artık geçici bir çözümle uğraşmayacağım. Yine de teşekkürler ve +1.
Sparhawk

@Sparhawk: Hangi CYM sürümünü kullandığınızdan emin değilim, ancak SD kartım otomatik olarak takılı değil.
Luis A. Florit

@ LuisA.Florit Bu yanıtı cevaplamak isteyip istemediğinizden emin değilim . Her neyse, 11-20140804-SNAPSHOT-M9-i9300 kullanıyorum. Başka bir cevapta daha fazla bilgi yayınladım .
Sparhawk

@Sparhawk: Kartım monte edilmedi ve Ayarlar'daki montaj prosedürü başarısız oldu. Belki problme burada sorumu ilişkilidir ( sumount başarısız ): android.stackexchange.com/questions/82089/... . Ben cm-11-20140804-SNAPSHOT-M9-mondrianwifi.zip kullanmak `
Luis A. Florit

@ LuisA.Florit Gerçekten emin değilim. Belki yeni bir soru sorabilirsiniz?
Sparhawk

0

Adasdadasd tarafından kabul etmek istediğim, ancak o zamandan beri silindi. Aşağıda çoğaltacağım ve cevabımı kabul edeceğim, ancak adasdadasd yeniden ortaya çıkarsa, lütfen yeniden yayınlayın ve bunu silip sizinkini kabul edeceğim.

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

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

Varsayılan olarak düzeltildi mi? Github'da yeni değişiklik.


0

İşte basit çizgi

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

Ve burada harici sd'de yazılabilir ext4

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

Harici SD kartınızın takılı olduğu "extSdCard" ı "sdcard1" gibi değiştirebilirsiniz

Kingroot ile stockrom kullandım, ama Supersu'yu dosya sistemi montajındaki sorununu deniyorum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.