ฉันเห็นบางคนกล่าวถึงที่นี่ในการสร้างการ์ด SD ในรูปแบบ 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
ฉันใช้ Samsung Galaxy 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
ฉันรู้ว่าสคริปต์ไม่ทำงานดังนั้นการแก้ไขอาจช่วยแก้คำถามของฉันได้ แต่ฉันคิดว่าสิ่งต่อไปนี้น่าสนใจ ฉันฟอร์แมตการ์ด SD ในคอมพิวเตอร์ Linux และถ่ายโอนไฟล์บางไฟล์ไป ข้อผิดพลาดในการอนุญาตเกิดขึ้นผิดปกติในไดเรกทอรีย่อยที่ฉันสร้างขึ้นเท่านั้น ในรูทของพาร์ติชัน (ผ่าน/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 รองรับการอนุญาตไฟล์ * nix แบบเต็มรวม ผู้ใช้และกลุ่ม