Dove viene applicato il blocco in modalità di sola lettura con le schede SD? Questo viene fatto all'interno della scheda stessa fisicamente, nel firmware dei lettori o nel sistema operativo? (Qualche altro posto?)
Dove viene applicato il blocco in modalità di sola lettura con le schede SD? Questo viene fatto all'interno della scheda stessa fisicamente, nel firmware dei lettori o nel sistema operativo? (Qualche altro posto?)
Risposte:
Se leggi il Specifiche SD Parte 1 Specifica semplificata del livello fisico , dice la sezione 4.3.6 "Gestione della protezione da scrittura"
Nella scheda di memoria SD sono supportati tre metodi di protezione dalla scrittura come segue:
- Interruttore di protezione da scrittura meccanico (solo responsabilità dell'host
)
- Protezione da scrittura interna della scheda (responsabilità della scheda) - Operazione di blocco della scheda di protezione con password.Interruttore di protezione da scrittura meccanico
Una tavoletta meccanica scorrevole sul lato della scheda (fare riferimento all'Addenda meccanica parte 1) verrà utilizzata dall'utente per indicare che una determinata scheda è protetta da scrittura o meno. Se il tablet scorrevole è posizionato in modo tale che la finestra sia aperta, significa che la scheda è protetta da scrittura. Se la finestra è chiusa, la scheda non è protetta da scrittura. Un interruttore adeguato, abbinato, sul lato del socket indicherà all'host che la scheda è protetta dalla scrittura o meno. È responsabilità dell'host proteggere la carta. La posizione dell'interruttore di protezione dalla scrittura non è nota ai circuiti interni della scheda.
(la mia enfasi)
Una specifica della scheda SD TOSHIBA dice
CMD28 SET_WRITE_PROT - La protezione da scrittura interna non è implementata.
CMD29 CLR_WRITE_PROT - La protezione da scrittura interna non è implementata.
CMD30 SEND_WRITE_PROT - La protezione da scrittura interna non è implementata.
...
2) Funzioni non supportate:
protezione da scrittura interna della scheda (opzionale nella specifica dello strato fisico 4.3.5.)
Nel mio lavoro, utilizziamo le schede SD in un sistema incorporato. Se proviamo a fare il boot con una scheda bloccata, avremo il panico del kernel. Questo non è stato un grosso problema fino a quando non abbiamo ottenuto un lotto di schede SD con interruttori di scrittura molto sciolti: l'atto di inserire la scheda nel lettore era talvolta sufficiente per spostare l'interruttore e bloccare la scheda. Molte persone hanno iniziato a cercare opzioni meccaniche per evitarlo, come attaccare un pezzo di nastro su ogni scheda SD, ma alla fine abbiamo risolto questo problema cambiando una riga di codice sorgente nel kernel Linux. Ora quando viene rilevata una scheda SD con l'interruttore impostato in sola lettura, semplicemente ignoriamo l'interruttore e scriviamo felicemente i dati sulla scheda ogni volta che vogliamo.
Questo deriva dalla nostra folle discrepanza di backport, quindi dubito che questa patch si applicherebbe in modo pulito ovunque, ma se vuoi sperimentare il tuo kernel, questo è un buon punto di partenza:
--- 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)
Se non hai voglia di patchare e costruire un kernel Linux ma hai una fotocamera Canon P&S, puoi usare CHDK per scrivere file (immagini) su una scheda SD protetta da scrittura (quando la fotocamera si accende, OF controlla stato dell'interruttore; quando impostato su RO caricherà automaticamente il firmware dalla scheda SD. Ciò consente agli utenti di eseguire l'avvio direttamente in CHDK; quindi CHDK ignora lo stato dell'interruttore in modo che possa ancora scrivere le immagini sulla scheda; vedere ad es. http : //chdk.wikia.com/wiki/Bootable_SD_card ).
Puoi anche scrivere su una scheda SD protetta da scrittura in Linux disattivando il flag di sola lettura hdparm
e rimontando la scheda:
$ 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
$
Dipende dal lettore. Il lettore può ignorare la scheda di protezione dalla scrittura. Il lettore può disporre di un firmware che disabilita la scrittura se la scheda di protezione dalla scrittura è attiva. Il lettore può disporre di un driver software che disabilita la scrittura se la scheda di protezione dalla scrittura è attiva. In pratica, la stragrande maggioranza dei lettori lo fa nel firmware.
È uno switch basato su hardware. È una funzione che blocca qualsiasi operazione di scrittura.
Se commutato, non puoi:
Sposta i file dalla o sulla scheda SD
Rimuovere i file dalla scheda SD
Copia i file sulla scheda SD
Formattare la scheda SD
EDIT Leggi di più qui .