Где замок в режиме только для чтения в исполнение с SD картами? Это делается внутри самой карты физически, в прошивке ридеров или в ОС? (Какое-то другое место?)
Где замок в режиме только для чтения в исполнение с SD картами? Это делается внутри самой карты физически, в прошивке ридеров или в ОС? (Какое-то другое место?)
Ответы:
Если вы читаете спецификацию SD, часть 1, Упрощенная спецификация физического уровня , в разделе 4.3.6 «Управление защитой от записи» говорится
Три карты защиты от записи поддерживаются на карте памяти SD следующим образом:
- Механический переключатель защиты от записи (только для хоста)
- Внутренняя защита от записи (для карты)
- Блокировка карты с помощью пароля.Механический переключатель защиты от записи
Пользователь будет использовать механическую скользящую табличку на боковой стороне карты (см. Механические дополнения части 1), чтобы указать, что данная карта защищена от записи или нет. Если скользящий планшет расположен таким образом, что окно открыто, это означает, что карта защищена от записи. Если окно закрыто, карта не защищена от записи. Правильный, согласованный переключатель на стороне сокета будет указывать хосту, что карта защищена от записи или нет. Хозяин несет ответственность за защиту карты. Положение переключателя защиты от записи неизвестно внутренней схеме платы.
(мой акцент)
Спецификация TOSHIBA SD карта говорит
CMD28 SET_WRITE_PROT - Внутренняя защита от записи не реализована.
CMD29 CLR_WRITE_PROT - Внутренняя защита от записи не реализована.
CMD30 SEND_WRITE_PROT - Внутренняя защита от записи не реализована.
...
2) Неподдерживаемые функции:
внутренняя защита карты от записи (опционально в ФИЗИЧЕСКОМ УРОВНЕ СПЕЦИФИКАЦИИ 4.3.5.)
На моей работе мы используем SD-карты во встроенной системе. Если мы попытаемся загрузиться с карты, которая заблокирована, мы получим панику ядра. Это не имело большого значения, пока мы не получили партию SD-карт, у которых были очень свободные переключатели записи: иногда достаточно было вставить карту в считыватель, чтобы переместить переключатель и заблокировать карту. Многие люди начали пытаться придумать механические опции, чтобы предотвратить это, например приклеить кусок ленты на каждую SD-карту, но в конце мы исправили это, изменив одну строку исходного кода в ядре Linux. Теперь, когда SD-карта обнаружена с переключателем, установленным только для чтения, мы просто игнорируем переключатель и с радостью записываем данные на карту, когда захотим.
Это из-за нашей безумной ошибки в бэкпортах, поэтому я сомневаюсь, что этот патч будет применяться везде, но если вы хотите поэкспериментировать с собственным ядром, это хорошая отправная точка:
--- 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)
Если вам не нужно вносить исправления и собирать ядро Linux, но у вас есть камера Canon P & S, вы можете использовать CHDK для записи файлов (изображений) на SD-карту с защитой от записи (когда камера включается, OF проверяет состояние коммутатора; при установке значения RO он автоматически загружает микропрограмму с SD-карты, что позволяет пользователям загружаться непосредственно в CHDK, затем CHDK игнорирует состояние коммутатора, поэтому он все еще может записывать изображения на карту; см., например, http : //chdk.wikia.com/wiki/Bootable_SD_card ).
Вы также можете выполнить запись на SD-карту с защитой от записи в Linux, отключив флаг readonly с помощью hdparm
и повторно установив карту:
$ 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
$
Это зависит от читателя. Читатель может игнорировать вкладку защиты от записи. Считыватель может иметь встроенное ПО, которое отключает запись, если активирована вкладка защиты от записи. Считыватель может иметь программный драйвер, который отключает запись, если активирована вкладка защиты от записи. На практике подавляющее большинство читателей делают это в прошивках.
Это аппаратный переключатель. Его функция просто блокирует любые операции записи.
Если переключено, вы не можете:
Переместить файлы с или на SD-карту
Удалить файлы с SD-карты
Скопируйте файлы на SD-карту
Отформатируйте SD-карту
РЕДАКТИРОВАТЬ Подробнее здесь .