Trường hợp khóa ở chế độ chỉ đọc được thi hành bằng thẻ SD? Điều này được thực hiện bên trong thẻ vật lý, trong phần sụn của độc giả hay trong HĐH? (Một số nơi khác?)
Trường hợp khóa ở chế độ chỉ đọc được thi hành bằng thẻ SD? Điều này được thực hiện bên trong thẻ vật lý, trong phần sụn của độc giả hay trong HĐH? (Một số nơi khác?)
Câu trả lời:
Nếu bạn đọc Thông số kỹ thuật SD Phần 1 Đặc tả đơn giản lớp vật lý , phần 4.3.6 "Quản lý bảo vệ ghi" nói
Ba phương thức bảo vệ ghi được hỗ trợ trong Thẻ nhớ SD như sau:
- Công tắc bảo vệ ghi cơ học (Chỉ chịu trách nhiệm máy chủ)
- Bảo vệ ghi nội bộ thẻ (Trách nhiệm của thẻ)
- Hoạt động khóa thẻ bảo vệ mật khẩu.Công tắc cơ bảo vệ
Một máy tính bảng trượt cơ học ở mặt bên của thẻ (tham khảo Phụ lục cơ học phần 1) sẽ được người dùng sử dụng để chỉ ra rằng một thẻ nhất định có được bảo vệ ghi hay không. Nếu máy tính bảng trượt được định vị theo cách mà cửa sổ đang mở, điều đó có nghĩa là thẻ được bảo vệ ghi. Nếu cửa sổ đóng, thẻ không được bảo vệ chống ghi. Một công tắc phù hợp, phù hợp, ở phía ổ cắm sẽ cho chủ nhà biết rằng thẻ có được bảo vệ chống ghi hay không. Trách nhiệm của chủ nhà là bảo vệ thẻ. Vị trí của công tắc bảo vệ ghi không xác định đối với mạch bên trong của thẻ.
(nhấn mạnh của tôi)
Một TOSHIBA SD Card Specification nói
CMD28 SET_WRITE_PROT - Bảo vệ ghi nội bộ không được triển khai.
CMD29 CLR_WRITE_PROT - Bảo vệ ghi nội bộ không được triển khai.
CMD30 SEND_WRITE_PROT - Bảo vệ ghi nội bộ không được triển khai.
Giáo dục
2) Các chức năng không được hỗ trợ:
Bảo vệ chống ghi nội bộ của thẻ (Tùy chọn trong THÔNG SỐ KỸ THUẬT LAYER 4.3.5.)
Trong công việc của tôi, chúng tôi sử dụng thẻ SD trong một hệ thống nhúng. Nếu chúng tôi cố gắng khởi động với thẻ bị khóa, chúng tôi sẽ bị hoảng loạn hạt nhân. Đây không phải là một vấn đề lớn cho đến khi chúng tôi có một loạt thẻ SD có công tắc ghi rất lỏng lẻo: hành động cắm thẻ vào đầu đọc đôi khi đủ để di chuyển công tắc và khóa thẻ. Nhiều người bắt đầu cố gắng đưa ra các tùy chọn cơ học để ngăn chặn điều này, như dán một miếng băng dính trên mỗi thẻ SD, nhưng cuối cùng chúng tôi đã khắc phục điều này bằng cách thay đổi một dòng mã nguồn trong nhân Linux. Bây giờ khi phát hiện thẻ SD với công tắc được đặt thành chỉ đọc, chúng tôi chỉ cần bỏ qua công tắc và vui vẻ ghi dữ liệu vào thẻ bất cứ khi nào chúng tôi muốn.
Đây là từ sự không phù hợp điên rồ của chúng tôi về backport vì vậy tôi nghi ngờ bản vá này sẽ được áp dụng sạch ở bất cứ đâu, nhưng nếu bạn muốn thử nghiệm với hạt nhân của riêng mình, đây là một điểm khởi đầu tốt:
--- include/linux/mmc/card.h (revision 1423)
+++ include/linux/mmc/card.h (revision 1424)
@@ -125,7 +125,7 @@
#define mmc_card_blockaddr(c) ((c)->state & MMC_STATE_BLOCKADDR)
#define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT)
-#define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY)
+#define mmc_card_set_readonly(c) {printk("Ignoring MMC read-only switch\n");}
#define mmc_card_set_highspeed(c) ((c)->state |= MMC_STATE_HIGHSPEED)
#define mmc_card_set_blockaddr(c) ((c)->state |= MMC_STATE_BLOCKADDR)
Nếu bạn không muốn vá và xây dựng nhân Linux nhưng bạn có máy ảnh Canon P & S, bạn có thể sử dụng CHDK để ghi tệp (ảnh) vào thẻ SD được bảo vệ chống ghi (khi máy ảnh bật, OF sẽ kiểm tra trạng thái của công tắc, khi được đặt thành RO, nó sẽ tự động tải firmware từ thẻ SD. Điều này cho phép người dùng khởi động trực tiếp vào CHDK, sau đó CHDK bỏ qua trạng thái của công tắc để nó vẫn có thể ghi ảnh vào thẻ; xem ví dụ http : //chdk.wikia.com/wiki/Bootable_SD_card ).
Bạn cũng có thể ghi vào thẻ SD được bảo vệ chống ghi trong Linux bằng cách tắt cờ chỉ đọc hdparm
và ghi lại thẻ:
$ mount | grep mmc
/dev/mmcblk0p1 on /media/hello type ext3 (ro,nosuid,nodev,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered,uhelper=udisks)
$ touch /media/hello/test
touch: cannot touch `/media/hello/test': Read-only file system
$ sudo hdparm -r /dev/mmcblk0p1
/dev/mmcblk0p1:
readonly = 1 (on)
$ sudo hdparm -r0 /dev/mmcblk0p1
/dev/mmcblk0p1:
setting readonly to 0 (off)
readonly = 0 (off)
$ touch /media/hello/test
touch: cannot touch `/media/hello/test': Read-only file system
$ sudo mount -t ext3 -o rw,remount /dev/mmcblk0p1 /media/hello
$ touch /media/hello/test
$ echo goodbye > /media/hello/test
$ cat /media/hello/test
goodbye
$ sudo umount /dev/mmcblk0p1
$ sudo mount /dev/mmcblk0p1 /mnt
mount: block device /dev/mmcblk0p1 is write-protected, mounting read-only
$ cat /mnt/test
goodbye
$ touch /mnt/test
touch: cannot touch `/mnt/test': Read-only file system
$
Nó phụ thuộc vào người đọc. Người đọc có thể bỏ qua tab bảo vệ ghi. Trình đọc có thể có phần sụn vô hiệu hóa ghi nếu tab bảo vệ ghi được kích hoạt. Trình đọc có thể có trình điều khiển phần mềm vô hiệu hóa ghi nếu tab bảo vệ ghi được kích hoạt. Trong thực tế, đại đa số độc giả làm điều đó trong phần sụn.
Đây là một công tắc dựa trên phần cứng. Đây là một tính năng chỉ chặn mọi thao tác ghi.
Nếu được chuyển đổi, bạn không thể:
Di chuyển tệp từ hoặc đến Thẻ SD
Xóa tệp khỏi Thẻ SD
Sao chép tập tin vào thẻ SD
Định dạng thẻ SD
EDIT Đọc thêm tại đây .