Tôi thấy một số đề cập ở đây về việc tạo thẻ SD có định dạng ext4, nhưng không có hướng dẫn. Câu hỏi liên quan chặt chẽ này cho thấy không có cách nào để làm điều đó, nhưng câu hỏi của tôi khác ở chỗ điện thoại của tôi được bắt nguồn cụ thể.
Tôi định dạng thẻ của mình là ext4 (bảng phân vùng GUID); điện thoại Cyanogenmod của tôi gắn nó tại /mnt/fuse/sdcard1
. Tôi đã làm theo hướng dẫn ở đây để gắn thẻ tại /storage/sdcard1
, bằng cách tạo tập lệnh sau tại/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 &
Tôi đã khởi động lại và cố gắng sao chép một tệp (sử dụng ES File Explorer) và dán nó vào thư mục mẹ của nó, nhưng không thành công:
/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).
Tôi thực sự có thể chơi các tập tin tốt, vì vậy tôi có thể mở nó. FWIW, khi tôi thử sao chép từ điểm gắn kết ban đầu ( /mnt/fuse/sdcard1
), tôi gặp một lỗi hơi khác:
Failed to copy the file bar.mp3
Tôi đang sử dụng Samsung Galaxy S3 với Cyanogenmod 10.2.0-i9300.
== CHỈNH SỬA ==
su
ls -l /mnt/fuse
drwxrwxr-x media_rw media_rw 2014-03-04 22:08 sdcard1
Đó là tất cả. Không có sdcard1_real
trong thư mục này, vì vậy tôi cho rằng kịch bản bị lỗi?
== EDIT2 ==
Tôi đã cố gắng sửa đổi tập lệnh để khắc phục sự cố. Kịch bản bắt đầu tốt, nhưng sau đó không thành công mkdir "$REALMNT"
với lỗi /data/local/userinit.sh[6]: : not found
.
== EDIT3 ==
Tôi biết rằng kịch bản không hoạt động, vì vậy việc sửa nó có thể giải quyết câu hỏi của tôi, nhưng tôi nghĩ những điều sau đây thật thú vị. Tôi định dạng thẻ SD của mình trong máy tính Linux và chuyển một số tệp vào nó. Thật kỳ lạ, lỗi cấp phép chỉ xảy ra trong các thư mục con mà tôi đã tạo. Trong thư mục gốc của phân vùng (thông qua /storage/sdcard1
), tôi đã có quyền ghi.
su
vào terminal để lấy root. Bạn có thể cần xác nhận cấp quyền trên điện thoại, nếu bạn thực hiện lần đầu tiên.
echo Script executed > /mnt/fuse/sdcard1/test.log
, và kiểm tra xem nó có đang chạy không. Nếu vậy, hãy tạo dòng từ trước đến cuối mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT" 2> /mnt/fuse/sdcard1/test.log
và kiểm tra thông báo lỗi. Hoặc thực thi tập lệnh bằng tay để xem : su /data/local/userinit.sh
.
touch
cho thấy tập lệnh đang chạy. Tôi đã thử thực hiện kịch bản thủ công với su /data/local/userinit.sh
, nhưng điều này không thành công. Tôi cũng đã thử su echo foo
và nhận được một lỗi tương tự : Unknown id: echo
.
echo
để xuất từng lệnh trước khi thực thi và chuyển hướng đầu ra lỗi với 2>>
.
ls -l /mnt/fuse/
vàls -l /mnt/fuse/sdcard1_real
. Sau đó chỉnh sửa câu hỏi của bạn để bao gồm các kết quả. Tôi đoán là "quyền truy cập tập tin sai" - cho gắn kết hoặc chofoo/
thư mục trên thẻ. Hãy nhớ rằng, ext4 hỗ trợ quyền truy cập tệp * nix đầy đủ, bao gồm. người dùng và các nhóm.