मैं यहाँ कुछ उल्लेख देखता हूँ एक 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
), मेरे पास पहले से ही लिखित अनुमति है।
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
:।
echo
कि निष्पादित होने से पहले प्रत्येक कमांड को आउटपुट करने के लिए उपयोग करना, और त्रुटि के साथ आउटपुट रीडायरेक्ट करना 2>>
।
ls -l /mnt/fuse/
औरls -l /mnt/fuse/sdcard1_real
। फिर परिणामों को शामिल करने के लिए अपने प्रश्न को संपादित करें। मेरा अनुमान "गलत फ़ाइल अनुमति" है - या तो माउंट के लिए, याfoo/
कार्ड पर निर्देशिका के लिए । याद रखें, ext4 पूर्ण * निक्स फ़ाइल अनुमतियों का समर्थन करता है, incl। उपयोगकर्ता और समूह।