जवाबों:
यदि आप SD विनिर्देश भाग 1 भौतिक परत सरलीकृत विशिष्टता को पढ़ते हैं , तो खंड 4.3.6 "राइट प्रोटेक्ट मैनेजमेंट" कहता है
एसडी मेमोरी कार्ड में तीन राइट प्रोटेक्ट मेथड का समर्थन किया गया है:
- मैकेनिकल राइट प्रोटेक्ट स्विच (केवल होस्ट जिम्मेदारी)
- कार्ड इंटरनल राइट
प्रोटेक्ट (कार्ड की जिम्मेदारी) - पासवर्ड प्रोटेक्शन कार्ड लॉक ऑपरेशन।यांत्रिक लिखें रक्षा स्विच
कार्ड के किनारे एक यांत्रिक स्लाइडिंग टैबलेट (भाग 1 मैकेनिकल एडेंडा के लिए देखें) का उपयोग उपयोगकर्ता द्वारा यह इंगित करने के लिए किया जाएगा कि किसी दिए गए कार्ड को संरक्षित लिखा गया है या नहीं। यदि स्लाइडिंग टैबलेट को इस तरह से तैनात किया जाता है कि खिड़की खुली हो तो इसका मतलब है कि कार्ड संरक्षित है। यदि विंडो बंद है तो कार्ड राइट-प्रोटेक्टेड नहीं है। सॉकेट की तरफ एक उचित, मिलान किया गया स्विच, होस्ट को इंगित करेगा कि कार्ड राइट-प्रोटेक्टेड है या नहीं। यह कार्ड की सुरक्षा के लिए मेजबान की जिम्मेदारी है। कार्ड की आंतरिक सर्किटरी में राइट प्रोटेक्ट स्विच की स्थिति अज्ञात है।
(मेरा जोर)
एक TOSHIBA एसडी कार्ड विनिर्देश कहते हैं
CMD28 SET_WRITE_PROT - आंतरिक लिखें सुरक्षा लागू नहीं है।
CMD29 CLR_WRITE_PROT - आंतरिक लिखें सुरक्षा लागू नहीं है।
CMD30 SEND_WRITE_PROT - आंतरिक लिखें सुरक्षा लागू नहीं है।
...
2) गैर समर्थित कार्य:
कार्ड की आंतरिक लिखें सुरक्षा (PHAYICAL LAYER विनिर्देशन में वैकल्पिक 4.3.5।)
मेरे काम में, हम एक एम्बेडेड सिस्टम में एसडी कार्ड का उपयोग करते हैं। अगर हम लॉक किए गए कार्ड से बूट करने की कोशिश करते हैं, तो हमें कर्नेल घबराहट होगी। यह तब तक बड़ी बात नहीं थी जब तक हमें एसडी कार्ड का एक बैच नहीं मिला, जिसमें बहुत ही ढीले-ढाले लेखन स्विच थे: कार्ड को रीडर में डालने का कार्य कभी-कभी स्विच को स्थानांतरित करने और कार्ड को लॉक करने के लिए पर्याप्त था। बहुत से लोग इसे रोकने के लिए यांत्रिक विकल्पों के साथ आने की कोशिश करने लगे, जैसे प्रत्येक एसडी कार्ड पर टेप का एक टुकड़ा चिपकाना, लेकिन अंत में हमने लिनक्स कर्नेल में स्रोत कोड की एक पंक्ति को बदलकर इसे ठीक किया। अब जब केवल पढ़ने के लिए स्विच सेट के साथ एक एसडी कार्ड का पता लगाया जाता है, तो हम केवल स्विच को अनदेखा करते हैं और जब भी चाहें कार्ड को खुशी से डेटा लिखते हैं।
यह हमारे बैकस्पोर्ट्स के क्रेजी मिस्मैश से है इसलिए मुझे संदेह है कि यह पैच कहीं भी साफ-सुथरा होगा, लेकिन अगर आप अपने कर्नेल के साथ प्रयोग करना चाहते हैं, तो यह एक अच्छा शुरुआती बिंदु है:
--- 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)
अगर आपको लिनक्स कर्नेल को पैच करने और बनाने का मन नहीं है, लेकिन आपके पास एक कैनन पी एंड एस कैमरा है, तो आप एक राइट-प्रोटेक्टेड एसडी कार्ड में फाइल (चित्र) लिखने के लिए सीएचडीके का उपयोग कर सकते हैं (जब कैमरा चालू होता है, तो चेक की खोज) स्विच की स्थिति; जब RO पर सेट किया जाता है तो यह एसडी कार्ड से फर्मवेयर को ऑटो-लोड करेगा। यह उपयोगकर्ताओं को सीधे CHDK में बूट करने की अनुमति देता है; तो CHDK स्विच की स्थिति को अनदेखा कर देता है, इसलिए यह अभी भी कार्ड में चित्र लिख सकता है; उदाहरण के लिए http देखें : //chdk.wikia.com/wiki/Bootable_SD_card )।
आप लिनक्स में राइट-प्रोटेक्टेड एसडी कार्ड को भी लिख सकते हैं 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
$
यह पाठक पर निर्भर करता है। पाठक लेखन सुरक्षा टैब को अनदेखा कर सकता है। पाठक के पास फर्मवेयर हो सकता है जो लेखन को अक्षम करता है यदि राइट प्रोटेक्ट टैब लगी हुई है। पाठक के पास एक सॉफ़्टवेयर ड्राइवर हो सकता है जो लेखन को अक्षम करता है यदि राइट प्रोटेक्ट टैब लगी हुई है। व्यवहार में, अधिकांश पाठक इसे फर्मवेयर में करते हैं।
इसका हार्डवेयर आधारित स्विच है। इसकी एक विशेषता किसी भी लिखने के संचालन को अवरुद्ध करती है।
यदि स्विच किया गया है, तो आप नहीं कर सकते:
फ़ाइलों को एसडी कार्ड से या स्थानांतरित करें
एसडी कार्ड से फाइलें निकालें
एसडी कार्ड में फाइल कॉपी करें
एसडी कार्ड को फॉर्मेट करें
EDIT यहां और पढ़ें ।