SD kartlarla salt okunur moda kilitleme nerede uygulanır ? Bu, kartın içinde fiziksel olarak mı, okuyucuların yazılımında mı yoksa işletim sisteminde mi yapılıyor? (Başka bir yer?)
SD kartlarla salt okunur moda kilitleme nerede uygulanır ? Bu, kartın içinde fiziksel olarak mı, okuyucuların yazılımında mı yoksa işletim sisteminde mi yapılıyor? (Başka bir yer?)
Yanıtlar:
SD Spesifikasyonları Bölüm 1 Fiziksel Katman Basitleştirilmiş Spesifikasyonu okuduysanız , bölüm 4.3.6 "Yazma Koruma Yönetimi" diyor
SD Bellek Kartında aşağıdaki gibi üç yazma koruma yöntemi desteklenir:
- Mekanik yazma koruma anahtarı (yalnızca Ana makine sorumluluğu)
- Kart dahili yazma koruması (Kartın sorumluluğu)
- Parola koruma kartı kilitleme işlemi.Mekanik Yazma Koruma Anahtarı
Belirli bir kartın yazmaya karşı korumalı olup olmadığını belirtmek için kullanıcı tarafından kartın yan tarafındaki bir mekanik kayar tablet (Bölüm 1 Mekanik Addenda'ya bakın) kullanılacaktır. Kayar tablet, pencere açık olacak şekilde yerleştirilirse, kart yazma korumalı demektir. Pencere kapalıysa, kart yazmaya karşı korumalı değildir. Soket tarafındaki uygun, eşleşen bir anahtar, ana bilgisayara kartın yazmaya karşı korumalı olup olmadığını gösterir. Kartı korumak ev sahibinin sorumluluğundadır. Yazmaya karşı koruma anahtarının konumu, kartın dahili devresi tarafından bilinmemektedir.
(benim vurgum)
Bir TOSHIBA SD Kart Spesifikasyonu diyor
CMD28 SET_WRITE_PROT - Dahili Yazma Koruması uygulanmadı.
CMD29 CLR_WRITE_PROT - Dahili Yazma Koruması uygulanmadı.
CMD30 SEND_WRITE_PROT - Dahili Yazma Koruması uygulanmadı.
...
2) Desteklenmeyen Fonksiyonlar:
Kartın Dahili Yazma Koruması (FİZİKSEL KATMAN ÖZELLİKLERİNDE Opsiyonel 4.3.5.)
İşimde SD kartları gömülü bir sistemde kullanıyoruz. Kilitli bir kartla önyükleme yaparsak, bir çekirdek paniği alırız. Çok gevşek yazma anahtarları olan bir grup SD kart elde edene kadar bu büyük bir anlaşma değildi: kartı okuyucuya takma işlemi bazen anahtarı hareket ettirmek ve kartı kilitlemek için yeterliydi. Birçok kişi bunu önlemek için her SD karta bir parça bant yapıştırmak gibi mekanik seçenekler bulmaya başladı, ancak sonunda Linux çekirdeğindeki bir kaynak kod satırını değiştirerek bunu düzelttik. Şimdi, anahtar salt okunur olarak ayarlanmış bir SD kart algılandığında, anahtarı görmezden gelir ve istediğimiz zaman karta veriyi mutlu bir şekilde yazarız.
Bu, backport'ların çılgınca yanlış masamasından geliyor, bu yüzden bu yamanın her yerde temiz bir şekilde uygulanacağından şüpheliyim, ancak kendi çekirdeğinizi denemek istiyorsanız, bu iyi bir başlangıç noktasıdır:
--- 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)
Bir Linux çekirdeğini yamalamak ve oluşturmak istemiyorsanız, ancak bir Canon P&S kameranız varsa, yazma korumalı bir SD karta dosya (resim) yazmak için CHDK kullanabilirsiniz (kamera açıldığında, OF anahtarının durumu; RO ayarlandığında ne zaman olacak SD karttan otomatik yüklenen firmware Bu doğrudan CHDK içine çizme yapmasını sağlar;. o karta hala yazma resimler böylece daha sonra CHDK anahtarının durumunu göz ardı; bkz mesela http : //chdk.wikia.com/wiki/Bootable_SD_card ).
Ayrıca, salt okunur bayrağı kapatarak hdparm
ve yeniden takarak Linux'ta yazmaya karşı korumalı bir SD karta yazabilirsiniz :
$ 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
$
Okuyucuya bağlıdır. Okuyucu yazma koruma sekmesini yoksayabilir. Okuyucu, yazmaya karşı koruma sekmesi etkinleştirilirse yazmayı devre dışı bırakan bellenim içerebilir. Okuyucunun yazmaya karşı koruma sekmesi etkinleştirilmişse yazmayı devre dışı bırakan bir yazılım sürücüsü olabilir. Uygulamada, okuyucuların büyük çoğunluğu bunu bellenimde yapıyor.
Donanım tabanlı bir anahtar. Bu özellik sadece yazma işlemlerini engeller.
Değiştirilirse şunları yapamazsınız:
Dosyaları SD Karttan / SD Karta taşıma
SD Karttan dosya kaldırma
SD Karta dosya kopyalama
SD Kartı Biçimlendir
DÜZENLEME daha Okuma burada .