如果您有SD存储卡,pendrive或所需的任何USB存储盘 写保护,在本文中,我们将一步一步地告诉您如何轻松做到这一点。 某些驱动程序允许使用一些防写保护,称为“写保护位»根据它是在1还是0上处于活动状态,它将允许写入该单元或不写入该单元。 此位不应与CPU的标志寄存器的WP混淆,后者通过在类似UNIX的系统上创建分支过程来防止覆盖,从而保护主存储器免于数据写入。 也没有我们在某些SD卡或存储介质中找到的典型保护标签。 在这种情况下,我们指的是在辅助存储介质中实现的保护。
而控制器的 储存介质 USB或SD存储卡或任何手段检测到该位处于活动状态,驱动程序将阻止内核下达写命令,因此它只能读取内容。 当我们存储不想被修改的数据时,这是非常实用的,以防止错误写入或删除。 但是,如果这些受保护的介质之一落入我们的手中,而我们不知道该位的存在,我们可能会浪费时间以为我们的设备已损坏,或者升高和降低某些Pendrive或SD卡必须保护的卡舌他们没有任何结果(锁定/解锁)...
挂载只读或只读介质:
尽管这并不是我们所希望的写保护位,但我们也可以发现已经有一种介质 自动或手动安装为只读,因此我们将无法在其中编写代码。 在某些情况下,这可能会很烦人,并阻止我们修改或存储内容。 好吧,解决这个问题的方法非常简单。
例如,如果在/ etc / fstab文件中,设备配置为使用选项自动安装 ro(只读) 或者如果我们已经使用命令安装了它:
sudo mount -o ro /dev/sda /mnt
在这种情况下,我们只能读取/ dev / sda设备,在这种情况下,它已安装在/ mnt挂载点上。 这样我们就可以再次写:
sudo mount -o remount,rw /dev/sda /mnt
如果这种方法对您不起作用,这是因为我们所谈论的事情正在发挥作用,这就是为什么我们必须使用下面提供的工具的原因。
什么是hdparm?
命令 hdparm是一个低级工具 它用作使用libata库以及旧IDE介质的各种Linux内核驱动程序与SATA / PATA / SAS存储介质之间的接口。 请记住,包括读卡器(例如SD)在内的许多USB存储介质控制器也使用这种类型的控制器进行操作,因此它也与它们兼容。
Su 基本语法 是:
hdparm [选项] [设备]
和礼物 很多选择 尽管我不建议您在不知道做得好的情况下使用它们,但是由于它是低级工具,因此可能严重损坏设备,例如,如果我们操纵某些关键选项(例如-B),可能会严重损坏设备。 但我会告诉您,在其选项中有一些非常有趣的,例如:
- 得到 组态 磁盘的:
sudo hdparm /dev/sdd
- 显示 鉴定 磁盘的:
sudo hdparm -i /dev/sdd
- 检查缓冲区和缓存的读取时间:
sudo hdparm -t /dev/sdd sudo hdparm -T /dev/sdd
永远记得使用 特权,也就是说,以root用户身份运行它们或将sudo放在它们前面,否则它们将无法工作...
使用hdparm删除并设置内存保护位:
知道hdparm工具后,我们可以使用-r选项,通过它可以检查该位的状态 用一个简单的命令。 为此,我们只需要知道存储设备的物理名称即可。 例如,如果调用/ dev / sdd,在这种情况下,我们可以使用:
sudo hdparm -r /dev/sdd
该位的值将显示在屏幕上。 如果其值为1,则表示该模式处于活动状态 只读 或只读,或换句话说,写保护方法处于活动状态,您将无法向内存中写入任何内容。 要取消激活或修改该位,只需执行以下操作:
sudo hdparm -r0 /dev/sdd
现在,如果我们执行第一个命令并使用该状态,我们将看到它已返回到0,因此只读模式已关闭或取消激活。 如果要将其恢复为活动状态,请使用选项 -r1而不是-r0 准备好了例如:
sudo hdparm -r1 /dev/sdd
就是这么简单 启用或禁用此位。 它没有太多的奥秘,但是对于那些不知道这一点的人来说,在取消保护其存储介质时可能会感到头痛。
希望它对您有所帮助,现在您知道如何制作写保护的笔式驱动器,别忘了 发表您的评论小号...
20条评论,留下您的评论
您好!
首先,感谢您的注释! 它们总是非常有用的。
我是Debian 9用户。
在这种情况下,我有一个无法解决的问题。 我有一支“感染”的笔,具有无法删除的写保护。 我已经认为它是物理上的,因为我已经诚实地尝试了所有操作(Windows或底层磁盘的低级格式化,修改分区等),什么也没做。
我以为我要解决这个问题,当按照您的步骤进行操作时,我发现笔式驱动器的写保护处于“开”状态,但是一旦将其更改为“关”,我仍然无法删除或修改其上的任何内容。
可能是哪个? 还有其他解决方法吗? (我不介意丢失我里面的信息)
预先感谢您的帮助。
埃尔南
你好! 我不知道他们是告诉您解决方案还是最终解决了您的问题,但是我和您一样。
你能告诉我吗?
非常感谢。
很好的解释
您好,我有一个系统无法识别的USB,如果您可以帮助我,我会向您发送信息,谢谢
dmesg的
[83384.348839] USB 1-1:使用ehci-pci的新高速USB设备编号8
[83384.506219] USB 1-1:找到新的USB设备,idVendor = 0c76,idProduct = 0005,bcdDevice = 1.00
[83384.506225] USB 1-1:新的USB设备字符串:Mfr = 1,产品= 2,SerialNumber = 0
[83384.506228] USB 1-1:产品:USB大容量存储
[83384.506231] USB 1-1:制造商:GENERIC
[83384.506848] usb-storage 1-1:1.0:检测到USB Mass Storage设备
[83384.508235] scsi主机5:USB存储1-1:1.0
[83385.524951] scsi 5:0:0:0:Direct-Access GENERIC USB Mass Storage 1.00 PQ:0 ANSI:2
[83385.556757] SD 5:0:0:0:附加的SCSI通用SG3类型0
[83385.561706] SD 5:0:0:0:XNUMX:[SDC]附加的SCSI可移动磁盘
根@本地主机:〜#fdisk -l
磁盘/ dev / sda:698.7 GiB,750156374016字节,1465149168扇区
单位:1 * 512 = 512字节的扇区
扇区大小(逻辑/物理):512字节/ 4096字节
I / O大小(最小/最佳):4096字节/ 4096字节
磁盘标签类型:gpt
Disk identifier: 995F9474-C5F1-4EE9-8FD7-13EA790423DC
设备起始端扇区大小类型
/ dev / sda1 2048 1050623 1048576 512M EFI系统
/ dev / sda2 1050624 49879039 48828416 23.3G Linux文件系统
/ dev / sda3 49879040 69410815 19531776 9.3G Linux文件系统
/ dev / sda4 69410816 76107775 6696960 3.2G Linux交换
/ dev / sda5 76107776 80013311 3905536 1.9G Linux文件系统
/ dev / sda6 80013312 1465147391 1385134080 660.5G Linux文件系统
根@本地主机:〜#fdisk -l / dev / sdc
fdisk:无法打开/ dev / sdc:找不到介质
根@本地主机:〜#hdparm / dev / sdc
/ dev / sdc:
SG_IO:错误/丢失的感知数据,sb []:f0 00 02 00 00 00 00 0b 00 00 00 00 3a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 XNUMX XNUMX
多计数= 0(关闭)
只读= 0(关闭)
预读= 256(开启)
根@本地主机:〜#hdparm -C / dev / sdc
/ dev / sdc:
驱动器状态为:待机
根@本地主机:〜#hdparm -I / dev / sdc
/ dev / sdc:
SG_IO:错误/丢失的感知数据,sb []:f0 00 02 00 00 00 00 0b 00 00 00 00 3a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 XNUMX XNUMX
ATA设备,带有不可移动的介质
标准:
可能使用的:1
配置:
逻辑最大电流
气缸0 0
头0 0
扇区/磁道0 0
-
逻辑/物理扇区大小:512字节
M = 1024 * 1024的设备大小:0 MBytes
M = 1000 * 1000的设备大小:0 MBytes
缓存/缓冲区大小=未知
功能:
IORDY不太可能
无法执行双字IO
读/写多扇区传输:不支持
DMA:不支持
IOP:pio0
感谢您的帮助,现在我能够知道我的USB是否反对写入,并且我已验证它是否反对写入,因此这已经是一种低级格式化解决方案,我必须补充一点,该病毒使USB在一分钟内断开连接一两个,而不是它允许采取行动,它没有留下时间,所以我已经知道我给它分配了什么名称,在终端中我以root用户身份将其命名为“ sdc”。
#dd if = / dev / zero | pv | dd = / dev / sdc bs = 1M在这里,您稍等片刻
#dd if = / dev / zero | pv | dd = / dev / sdc bs = 446 count = 1您取出并再次放入USB
#mkfs.vfat -F 32 -n“ anaconda” / dev / sdc,您已完成
对羟基苯甲酸酯! 我对这个主题给出的许多伏特是一个简单的解释。 谢谢Moi。
伟大的。 谢谢你。
最后,对我来说确实有用的东西,谢谢。
您好,我有一个16 GB ADATA类别10 microsd内存
我执行了该过程,它似乎可以正常工作,但是重新插入并重新检查状态会将其恢复为只读状态。
我试图格式化它,但是它不起作用。 我可以看到的是我的文件。
还有其他解决问题的工具或方法吗?
简单,简洁,完善的所有解释和示例,已经非常有用。
您好,我是Kali Linux的最新版本的用户,我已经尝试了十亿种技术(很夸张地说很抱歉),但是这些技术都没有在Linux和Windows中提供给我
就我而言,debian,必须卸下可移动内存…。
太好了,谢谢
我已经设法按照他们的指示恢复了一些促销摘要
您好,它可以工作,但是用户的文件夹有所不同,最好弄清楚它,但是我有一个错误,在命令中它告诉我修改了它,但是当我想将文件夹或任何其他东西放在Pendrive上时,它会告诉您对我来说,它是受写保护的。 如果您可以帮助我解决问题,那就太好了。 问候
接受命令并将其显示为不受保护,则它为r = 0,但是当我要格式化时,它告诉我受保护。 谢谢
你好,美好的一天。 有了这个,我还没有尝试过,但在 Windows 中,我什么都没做。 我的 Pendrive 是写保护的,即使使用 sudo hdparm -r / dev / sdd 它也会给出值 1,但是使用 sudo hdparm -r0 / dev / sdd 它也无法删除写保护。 来自委内瑞拉的感谢和问候。
我的 Linux 版本是 openSUSE Tumbleweed 15.3
过去的信息清晰可靠。 我花了几个小时测试了一些解决方案,这里介绍的是解决阅读和阻止 gravação 问题的最终解决方案。
出色的贡献,一切都如你所说......谢谢
非常感谢,非常有用,这在usb中经常发生,解决方法简单快捷。
非常感谢您的贡献。
就我而言,Ubuntu 23.4 接受所有命令但不解锁保护位。
任何想法?
lorenzo@lorenzo-B85M-D3H:~$ 须藤 hdparm -r /dev/sdc
[sudo] 劳伦斯的密码:
/ dev / sdc:
只读 = 1(开启)
lorenzo@lorenzo-B85M-D3H:~$ 须藤 hdparm -r0 /dev/sdc
/ dev / sdc:
将只读设置为 0(关闭)
只读 = 1(开启)
lorenzo@lorenzo-B85M-D3H:~$
谢谢