O mecanismo de bloqueio do hardware, firmware ou software do cartão SD é aplicado (driver, SO)?

16

Onde a trava para o modo somente leitura é aplicada com cartões SD? Isso é feito dentro do próprio cartão fisicamente, no firmware dos leitores ou no sistema operacional? (Algum outro lugar?)

Jane Panda
fonte

Respostas:

20

Se você ler a especificação simplificada da camada física das especificações SD, parte 1 , a seção 4.3.6 "Gerenciamento de proteção contra gravação" diz

Três métodos de proteção contra gravação são suportados no cartão de memória SD, como segue:
- Chave mecânica de proteção contra gravação (somente responsabilidade do host
)
- Proteção interna contra gravação do cartão (responsabilidade do cartão) - Operação de bloqueio do cartão de proteção por senha.

Interruptor de proteção contra gravação mecânica

Uma mesa deslizante mecânica na lateral do cartão (consulte os Adendos Mecânicos da Parte 1) será usada pelo usuário para indicar que um determinado cartão está protegido contra gravação ou não. Se a mesa deslizante estiver posicionada de forma a abrir a janela, significa que o cartão está protegido contra gravação. Se a janela estiver fechada, o cartão não está protegido contra gravação. Um interruptor adequado e correspondente no lado do soquete indicará ao host que o cartão está protegido contra gravação ou não. É de responsabilidade do host proteger o cartão. A posição do interruptor de proteção contra gravação é desconhecida no circuito interno do cartão.

(minha ênfase)

Uma especificação do cartão SD da TOSHIBA diz

CMD28 SET_WRITE_PROT - A proteção contra gravação interna não está implementada.
CMD29 CLR_WRITE_PROT - A proteção contra gravação interna não está implementada.
CMD30 SEND_WRITE_PROT - A proteção contra gravação interna não está implementada.

...

2) Funções não suportadas:
Proteção interna contra gravação do cartão (opcional em ESPECIFICAÇÃO DE CAMADA FÍSICA 4.3.5.)

RedGrittyBrick
fonte
Mas eu me pergunto como
tsenapathy
14

No meu trabalho, usamos cartões SD em um sistema incorporado. Se tentarmos inicializar com uma placa que está bloqueada, teremos um pânico no kernel. Isso não foi grande coisa até termos um lote de cartões SD com interruptores de gravação muito frouxos: o ato de inserir o cartão no leitor às vezes era suficiente para mover o comutador e travar o cartão. Muitas pessoas começaram a tentar opções mecânicas para evitar isso, como colar um pedaço de fita em cada cartão SD, mas no final, consertamos isso alterando uma linha de código-fonte no kernel do Linux. Agora, quando um cartão SD é detectado com o comutador configurado como somente leitura, simplesmente ignoramos o comutador e gravamos dados no cartão sempre que desejamos.

Isso é do nosso louco quebra de backports, então duvido que esse patch se aplique de maneira limpa em qualquer lugar, mas se você quiser experimentar seu próprio kernel, este é um bom ponto de partida:

--- 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 você não deseja aplicar patches e criar um kernel Linux, mas possui uma câmera Canon P&S, pode usar o CHDK para gravar arquivos (fotos) em um cartão SD protegido contra gravação (quando a câmera é ligada, o OF verifica estado do comutador; quando definido como RO, ele carrega automaticamente o firmware do cartão SD. Isso permite que os usuários inicializem diretamente no CHDK; depois, o CHDK ignora o estado do comutador para que ainda possa gravar imagens no cartão; consulte, por exemplo, http : //chdk.wikia.com/wiki/Bootable_SD_card ).

Você também pode gravar em um cartão SD protegido contra gravação no Linux desativando o sinalizador somente leitura hdparme remontando o cartão:

$ 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
$ 

fonte
3

Depende do leitor. O leitor pode ignorar a guia de proteção contra gravação. O leitor pode ter um firmware que desabilite a gravação se a guia de proteção contra gravação estiver ativada. O leitor pode ter um driver de software que desabilite a gravação se a guia de proteção contra gravação estiver ativada. Na prática, a grande maioria dos leitores faz isso no firmware.

David Schwartz
fonte
Eu acho que você está errado. Por favor, poste uma fonte.
Wizlog 6/11
@ wizlog: Sem saber do que você pensa que estou errado, não sei para qual reivindicação postar uma fonte.
9788 David Schwartz
O leitor pode ignorar a patilha de protecção contra
wizlog
3
"Como o entalhe é detectado apenas pelo leitor, a proteção pode ser substituída, se desejado (e se suportada pelo leitor)." # Wikipedia
David Schwartz
-3

É um switch baseado em hardware. É um recurso que apenas bloqueia qualquer operação de gravação.

Se alternado, você não pode:

  • Mover arquivos de ou para o cartão SD

  • Remova os arquivos do cartão SD

  • Copie arquivos para o cartão SD

  • Formate o cartão SD

EDIT Leia mais aqui . Observe o círculo laranja fraco ...

wizlog
fonte
2
Um interruptor no lado esquerdo. Só para a op sabe onde
canadense Luke
2
Você tem certeza de que o bloqueio realmente aplica isso? Eu li que existem câmeras que podem (por coincidência) ignorar isso e gravar no cartão de qualquer maneira.
Jane Panda
O link que você está citando diz "Alguns cartões SD também possuem proteção contra gravação embutida no cartão". Alguns - não todos. Se você comparar as outras respostas, parece que isso é uma exceção. Bastante chocante, eu acho - parece que eles não pensaram em segurança e vírus. 8- {
Hans-Peter Störr
1
por que essa resposta é tão votada para baixo?
Wizlog 24/07