मैं सही अनुमतियों (रूट के साथ) में एक एक्सटाप 4-स्वरूपित एसडी कार्ड कैसे माउंट कर सकता हूं?


9

मैं यहाँ कुछ उल्लेख देखता हूँ एक ext4 स्वरूपित एसडी कार्ड बनाने के लिए, लेकिन कोई गाइड नहीं। यह निकट से संबंधित प्रश्न बताता है कि ऐसा करने का कोई तरीका नहीं है, लेकिन मेरा प्रश्न इस बात में भिन्न है कि मेरा फोन विशेष रूप से निहित है।

मैंने अपना कार्ड 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 File Explorer का उपयोग करके) को फिर से शुरू किया और इसे अपनी मूल निर्देशिका में पेस्ट किया, जो विफल रही:

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

मैं वास्तव में फ़ाइल को ठीक से खेल सकता हूं, इसलिए मैं इसे खोल सकता हूं । FWIW, जब मैं मूल आरोह बिंदु ( /mnt/fuse/sdcard1) से कॉपी करने की कोशिश करता हूं, तो मुझे थोड़ी अलग त्रुटि मिलती है:

Failed to copy the file bar.mp3

मैं एक सैमसंग गैलेक्सी S3 का उपयोग Cyanogenmod 10.2.0-i9300 के साथ कर रहा हूं।

== संपादित करें ==

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

बस यही था। sdcard1_realइस निर्देशिका में कोई भी नहीं है, इसलिए मुझे लगता है कि स्क्रिप्ट विफल हो रही है?

== EDIT2 ==

मैंने स्क्रिप्ट को समस्या निवारण के लिए संशोधित करने का प्रयास किया। स्क्रिप्ट ठीक शुरू होती है, लेकिन फिर mkdir "$REALMNT"त्रुटि के साथ विफल हो जाती है /data/local/userinit.sh[6]: : not found

== EDIT3 ==

मुझे पता है कि स्क्रिप्ट काम नहीं करती है, इसलिए इसे ठीक करने से मेरा प्रश्न हल हो सकता है, लेकिन मुझे लगा कि निम्नलिखित दिलचस्प था। मैंने अपने एसडी कार्ड को अपने लिनक्स कंप्यूटर में स्वरूपित किया, और उसमें कुछ फाइलें स्थानांतरित कीं। विचित्र रूप से पर्याप्त है, अनुमति त्रुटियां केवल उन उपनिर्देशिकाओं में होती हैं जो मैंने बनाई थीं। विभाजन की जड़ में (के माध्यम से /storage/sdcard1), मेरे पास पहले से ही लिखित अनुमति है।


1
रूट के रूप में, कृपया निष्पादित करें ls -l /mnt/fuse/और ls -l /mnt/fuse/sdcard1_real। फिर परिणामों को शामिल करने के लिए अपने प्रश्न को संपादित करें। मेरा अनुमान "गलत फ़ाइल अनुमति" है - या तो माउंट के लिए, या foo/कार्ड पर निर्देशिका के लिए । याद रखें, ext4 पूर्ण * निक्स फ़ाइल अनुमतियों का समर्थन करता है, incl। उपयोगकर्ता और समूह।
इज़ी

आप suरूट प्राप्त करने के लिए टर्मिनल में टाइप करते हैं। यदि आप पहली बार ऐसा कर रहे हैं, तो आपको फोन पर अनुमति देने की पुष्टि करने की आवश्यकता हो सकती है।
चाक

या तो स्क्रिप्ट विफल हो रही है, या इसे बिल्कुल भी निष्पादित नहीं किया गया है। आप कुछ डिबग आउटपुट जोड़ना चाहते हैं, उदाहरण के लिए 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:।
इज़ी

@ इज़ी touchदिखाती है कि स्क्रिप्ट चल रही है। मैंने स्क्रिप्ट को मैन्युअल रूप से निष्पादित करने का प्रयास किया su /data/local/userinit.sh, लेकिन यह विफल रहा। मैंने भी कोशिश की su echo foo, और एक समान त्रुटि मिली Unknown id: echo:।
स्पार्कहॉक

आपके EDIT3 के लिए, मेरी पहली टिप्पणी देखें: ext4 पूर्ण * nix फ़ाइल अनुमतियों, incl का समर्थन करता है। उपयोगकर्ता और समूह । आपने उन निर्देशिकाओं को एक उपयोगकर्ता के साथ बनाया है जो आपके एंड्रॉइड डिवाइस पर मौजूद नहीं हैं, इसलिए वे "अज्ञात उपयोगकर्ता / अज्ञात समूह" से संबंधित हैं। यदि आप "दुनिया" तक पहुंच लिखना नहीं देते हैं, तो केवल रूट ही लिख सकता है। पोर्टेबल मीडिया पर इस तरह की फ़ाइल प्रणाली का उपयोग करते समय आपको उन * निक्स बेसिक्स से खुद को परिचित करना चाहिए;) स्क्रिप्ट के अनुसार, मैं फिर से कुछ और डिबग जानकारी जोड़ने का सुझाव देता हूं, जैसे echoकि निष्पादित होने से पहले प्रत्येक कमांड को आउटपुट करने के लिए उपयोग करना, और त्रुटि के साथ आउटपुट रीडायरेक्ट करना 2>>
इज़ी

जवाबों:


6

यह माना जाता है कि कई महीने पहले तय किया गया था, लेकिन लोग अभी भी समस्याओं की रिपोर्ट कर रहे हैं। मैं कार्ड पर आइटम पढ़ सकता हूं, लेकिन लिखने की अनुमति नहीं है। इसे ठीक करने के लिए, मैंने कुछ स्रोतों से रणनीति बनाई

  1. MS-DOS विभाजन तालिका और ext4 फाइल सिस्टम के साथ विभाजन कार्ड। मैंने अपने (लिनक्स) डेस्कटॉप कंप्यूटर पर GParted का उपयोग किया।
  2. अपने फ़ोन में कार्ड डालें। (आपके पास अब शायद पहुंच नहीं होगी।)
  3. CyanogenMod में डिफ़ॉल्ट रूप से स्थापित टर्मिनल एमुलेटर खोलें ।
  4. निम्नलिखित में टाइप करें (मैं पाठ के बड़े ब्लॉकों के लिए वाईफाई कीबोर्ड की सिफारिश करता हूं )। एमुलेटर रूट विशेषाधिकार दें जब यह उन्हें अनुरोध करता है।

$और #संकेतों का संकेत मिलता है, इसलिए उन्हें में टाइप न करें।

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

यह एसडी कार्ड की अनुमतियों को बदलता है। मालिक और समूह से बदल जाता systemहै media_rw, और यह समूह को लिखने की पहुँच भी देता है।


जरूरत -R रिकर्सिफ़ के लिए- chown -R media_rw: media_rw / mnt / media_rw / sdcard1
m3asmi

1

निश्चित नहीं है कि यह कोई मदद है, लेकिन संभवतः मुद्दा यह है कि आप गलत जगह पर माउंट करने की कोशिश कर रहे हैं? यह मेरी वर्किंग स्क्रिप्ट है जो CM11 के साथ S3 मिनी पर काम करती है:

#!/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।
स्पार्कवॉक

@ श्रावक: निश्चित नहीं है कि आप किस CYM संस्करण का उपयोग करते हैं, लेकिन मेरा SD कार्ड स्वचालित रूप से माउंट नहीं किया गया है।
लुइस ए। फ्लोरिट

@ लुइस.फ्लिट मुझे यकीन नहीं है अगर आपको इस जवाब का जवाब देना है । वैसे भी, मैं 11-20140804-SNAPSHOT-M9-i9300 का उपयोग कर रहा हूं। मैंने दूसरे उत्तर में अधिक जानकारी पोस्ट की है ।
स्परहॉक

@ श्रावक: मेरा कार्ड भी माउंट नहीं किया गया है, और सेटिंग्स में माउंट प्रक्रिया विफल हो जाती है। हो सकता है कि problme यहाँ मेरे सवाल से संबंधित है ( suमाउंट करने में विफल रहता है ): android.stackexchange.com/questions/82089/... । `मैं cm-11-20140804-SNAPSHOT-M9-mondrianwifi.zip का उपयोग
लुइस ए Florit

@ लुइस.फ्लोरिट वास्तव में निश्चित नहीं है। शायद एक नया प्रश्न पूछें?
स्पार्कवॉक

0

एडसडैस्ड द्वारा पोस्ट किया गया एक उत्तर था जिसे मैं स्वीकार करना चाहता था, लेकिन तब से हटा दिया गया है। मैं इसे नीचे पुन: पेश करूंगा, और मेरा उत्तर स्वीकार करूंगा, लेकिन यदि एडसैडसड रिफ़रफेस, कृपया रीपोस्ट करें और मैं इसे हटा दूंगा और आपका स्वीकार करूंगा।

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

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

डिफ़ॉल्ट रूप से निश्चित? गीथूब में नया बदलाव।


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

आप "extSdCard" को "sdcard1" की तरह बदल सकते हैं जहां आपका बाहरी sdcard माउंट किया गया है

Iam ने Kingroot के साथ स्टॉकरोम का उपयोग किया, लेकिन मैं बढ़ते फाइल सिस्टम के साथ सुपरसु को अपनी परेशानी की कोशिश करता हूं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.