Gdzie jest blokada w trybie tylko do odczytu wymuszona za pomocą kart SD? Czy odbywa się to w samej karcie, w oprogramowaniu układowym czytników lub w systemie operacyjnym? (Jakieś inne miejsce?)
Gdzie jest blokada w trybie tylko do odczytu wymuszona za pomocą kart SD? Czy odbywa się to w samej karcie, w oprogramowaniu układowym czytników lub w systemie operacyjnym? (Jakieś inne miejsce?)
Odpowiedzi:
Jeśli czytasz Specyfikacje SD Część 1 Uproszczona specyfikacja warstwy fizycznej , rozdział 4.3.6 „Zarządzanie ochroną przed zapisem” mówi
Na karcie pamięci SD obsługiwane są trzy metody ochrony przed zapisem:
- Mechaniczny przełącznik ochrony przed zapisem (tylko odpowiedzialność hosta)
- Wewnętrzna ochrona przed zapisem karty (odpowiedzialność karty)
- Operacja blokady karty hasłem.Mechaniczny przełącznik zabezpieczenia przed zapisem
Mechaniczny przesuwny tablet z boku karty (patrz część Dodatek mechaniczny 1) zostanie użyty przez użytkownika do wskazania, że dana karta jest chroniona przed zapisem lub nie. Jeśli przesuwany tablet jest ustawiony w taki sposób, że okno jest otwarte, oznacza to, że karta jest chroniona przed zapisem. Jeśli okno jest zamknięte, karta nie jest chroniona przed zapisem. Właściwy, dopasowany przełącznik po stronie gniazda wskaże hostowi, że karta jest chroniona przed zapisem lub nie. Za ochronę karty odpowiada gospodarz. Położenie przełącznika zabezpieczenia przed zapisem jest nieznane wewnętrznym obwodom karty.
(mój nacisk)
CMD28 SET_WRITE_PROT - Wewnętrzna ochrona przed zapisem nie jest zaimplementowana.
CMD29 CLR_WRITE_PROT - Wewnętrzna ochrona przed zapisem nie jest zaimplementowana.
CMD30 SEND_WRITE_PROT - Wewnętrzna ochrona przed zapisem nie jest zaimplementowana.
…
2) Nieobsługiwane funkcje:
wewnętrzna ochrona przed zapisem karty (opcjonalnie w SPECYFIKACJI WARSTWY FIZYCZNEJ 4.3.5.)
W mojej pracy używamy kart SD w systemie wbudowanym. Jeśli spróbujemy uruchomić komputer z zablokowaną kartą, wpadniemy w panikę jądra. To nie była wielka sprawa, dopóki nie dostaliśmy partii kart SD, które miały bardzo luźne przełączniki zapisu: włożenie karty do czytnika czasami wystarczało, aby przesunąć przełącznik i zablokować kartę. Wiele osób próbowało wymyślić mechaniczne opcje, aby temu zapobiec, takie jak przyklejenie kawałka taśmy na każdej karcie SD, ale ostatecznie naprawiliśmy to, zmieniając jeden wiersz kodu źródłowego w jądrze Linuksa. Teraz, gdy zostanie wykryta karta SD z przełącznikiem ustawionym na „tylko do odczytu”, po prostu ignorujemy przełącznik i chętnie zapisujemy dane na karcie, kiedy tylko chcemy.
Wynika to z naszego szalonego niedopasowania backportów, więc wątpię, by ta łatka miała zastosowanie wszędzie, ale jeśli chcesz eksperymentować z własnym jądrem, to dobry punkt wyjścia:
--- 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)
Jeśli nie masz ochoty na łatanie i budowanie jądra Linux, ale masz aparat Canon P&S, możesz użyć CHDK do zapisywania plików (zdjęć) na zabezpieczonej przed zapisem karcie SD (po włączeniu aparatu OF sprawdza stan przełącznika; po ustawieniu na RO automatycznie ładuje oprogramowanie układowe z karty SD. Pozwala to użytkownikom na rozruch bezpośrednio do CHDK; następnie CHDK ignoruje stan przełącznika, aby mógł nadal zapisywać zdjęcia na karcie; patrz np. http : //chdk.wikia.com/wiki/Bootable_SD_card ).
Możesz także pisać na chronionej przed zapisem karcie SD w systemie Linux, wyłączając flagę tylko do odczytu hdparm
i ponownie instalując kartę:
$ 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
$
To zależy od czytelnika. Czytnik może zignorować zakładkę ochrony przed zapisem. Czytnik może mieć oprogramowanie układowe, które wyłącza zapis, jeśli włączona jest karta ochrony przed zapisem. Czytnik może mieć sterownik oprogramowania, który wyłącza pisanie, jeśli włączona jest karta ochrony przed zapisem. W praktyce zdecydowana większość czytelników robi to w oprogramowaniu układowym.
Jest to przełącznik sprzętowy. Jest to funkcja po prostu blokująca wszelkie operacje zapisu.
Po zmianie nie możesz:
Przenieś pliki z lub na kartę SD
Usuń pliki z karty SD
Skopiuj pliki na kartę SD
Sformatuj kartę SD
EDYCJA Przeczytaj więcej tutaj .