问题描述
我无法从Kingston 32 GB Micro SD卡中删除只读属性。我想擦拭整个卡。
我得到了Raspberry Pi 3、32 GB的Micro SD卡和一个Echo。当我买到Micro SD卡时,它是刚出厂的。我下载了一个新的Ubuntu 16.04映像,并在Windows 10上使用Etcher对该卡进行了格式化。完成后,我插入了所有功能以使Raspberry正常工作,但没有任何反应。我开始有些恐慌,然后对自己说:“干得好,Scrat,你真傻。为什么你不能等一会儿,然后去谷歌搜索一个令人生畏的教程。”
我在Google上搜索了可能出了问题的地方以及应该做的事情,不得不发现您不能只在上面放任何随机的Ubuntu映像。它必须是创建者提供的图像之一(在我的情况下为Ubuntu Mate或Raspbian)。
尝试使用Windows修复
当尝试通过right-clicking重新格式化并通过Windows资源管理器重新格式化时,我遇到的第一件事是该卡处于只读模式。尝试在Windows资源管理器中访问它只会向我显示EFI目录,我对此并不感到惊讶。
我在互联网上发现的第一件事是关于卡上的开关/锁定,但是我的卡根本没有任何锁定。我既不使用卡本身也不使用我所使用的Robson迷你读卡器。
之后我试图记住如何编辑磁盘,当时我仍然在使用Windows 10,因为我必须从外部驱动器复制旧的VM-Ware和系统映像,但我不知道该在哪里是。
我打开命令行,运行diskpart,然后通过列出所有磁盘
list disk
哪个输出我的931 GB HDD,我的119 GB SSD(安装了Windows)和29 GB的Micro SD卡:
Datenträger ### Status Größe Frei Dyn GPT
--------------- ------------- ------- ------- --- ---
Datenträger 0 Online 119 GB 0 B *
Datenträger 1 Online 931 GB 0 B *
Datenträger 2 Online 29 GB 29 GB
根据获得的信息,我知道Datenträger2 aka Disk 2是我要通过以下操作进行编辑的卡:
select disk 2
到目前为止,一切都很好。然后,我想通过执行以下操作来删除只读属性:
attributes disk clear readonly
其中也成功执行。
但是当我尝试做的时候:
clean
我收到“硬件错误消息”(用德语,这就是为什么我不在这里复制它,但实际上它仅表示硬件错误)。尝试创建主分区或执行其他操作时,也会发生该错误。
在这一点上,我的恐慌开始变得越来越多。但是我试图保持镇静,因为我仍然袖手旁观。
我尝试使用以下程序:EaseUS Partition Master,Etcher(再次)和SD卡格式化程序,由于卡受保护而全部失败(只读,write-protected)。
我还尝试使用注册表编辑器通过创建密钥(尚不存在)来更改Windows对存储设备的行为:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies
并创建一个新关键字(DWORD WriteProtect)并将其设置为0,这表示没有只读关键字。
尝试使用Linux修复
那也不起作用,我开始对Windows感到不安,所以我下了屁股,搜索了我的外部驱动器,安装了VM-Ware并运行了我用于学校的Ubuntu 16.04虚拟机。
启动VM时,我已经注意到Ubuntu可以比Windows提供更多帮助(或者至少我是这样认为的,因为我的Linux技能在这方面受到限制)。我首先看到的是桌面上与该卡链接的图标,名称为“ Ubuntu 16.04.2 LTS amd64”,其中包含Ubuntu要工作的各种东西seen in the image here。
但这对我没有帮助。因此,我继续前进,启动了一个终端,并写道:
lsblk
哪个确认卡是可见的(sdb):
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
└─sda1 8:1 0 30G 0 part /
sdb 8:16 1 29,2G 1 disk
├─sdb1 8:17 1 1,5G 1 part /media/pose/Ubuntu 16.04.2 LTS amd64
└─sdb2 8:18 1 2,4M 1 part
sr0 11:0 1 1024M 0 rom
但是lsblk并不是很精确,所以我也使用了我们在学校学到的命令:
fdisk -l
精确一点:
Disk /dev/sda: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xa14a8cb2
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 62914559 62912512 30G 83 Linux
Disk /dev/sdb: 29,2 GiB, 31306285056 bytes, 61145088 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x15e2543d
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 0 3035519 3035520 1,5G 0 Empty
/dev/sdb2 14432 19295 4864 2,4M ef EFI (FAT-12/16/32)
我欣喜若狂,因为我以为我终于破解了该死的达文西密码或其他东西,所以我跑了
gparted
立即打开并显示错误消息:
The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes.
我忽略了它,因为我认为这没什么大不了的,但是在忽略了上一个之后,就弹出了下一条错误消息:
Partition(s) 1 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
因此,我按照消息告诉我的方式进行了操作,然后重新启动。但这也没有用,因为相同的两个错误再次弹出。这次我都忽略了它们,而我从学校得知的旧的可信赖的老式窗户就打开了。
一旦更改为/dev /sdb,它就会变得非常混乱。正如您所看到的here,事情很奇怪,因为现在sdb被以某种方式视为我的SSD而不是卡,但是卡中的映像仍然挂载。在这一点上,我太着急了,无法继续做任何事情,以免担心也会意外弄坏我的笔记本电脑。
顺便说一句,我还尝试赋予自己访问磁盘的权限,并尝试使用dd
命令,但是出现了相同的错误消息(访问被拒绝,只读或某些方式,我不确定,但在此内容中,方向)。
我已经从亚马逊订购了另一张32 GB的Micro SD卡,以防旧的存储卡不再有希望。但是我还没有放弃。
(对不起,有些东西是德语,但我认为这些东西大部分是不言而喻的。)
最佳方案
好吧,您的帖子肯定很有趣。感谢那。
我知道这不是您要找的答案。但是,看起来SD卡确实停留在只读模式。您已竭尽所能。确实没有那么困难。
就像卡上有一个write-protect开关一样。听起来您已确认没有,但也许只是仔细检查一下,再来一次?我想到的可能是您在mini-sd到sd适配器中使用了mini-SD卡。也许您查看了适配器,但没有看mini-sd卡本身?我不知道,只是把它扔在那里。如果有适配器,也许适配器本身坏了?我不记得您是否提到过尝试其他读卡器。读者可能变坏了吗?
除此之外,对于”fail”这样的只读模式,这是很常见的故障。所以,我的直觉告诉我卡片坏了。
看起来您处在正确的轨道上,只需对其进行替换即可。也许您可以在保修期内将坏货换掉,因为它是新的。让我们知道您的想法。
次佳方案
当我使用iso-images时,此类只读问题一直在我身上发生。
我如何解决此类问题:
请注意,<yoursdcard>
是设备而不是分区,因此例如sdc
-
引导某种Linux
-
打开一个终端
-
找出您的SD卡是什么设备,并使用
sudo fdisk /dev/<yoursdcard> -l
进行验证,或者也要获取设备名称,您也可以使用sudo parted /dev/<yoursdcard> -l
警告:以下命令将破坏/dev/<yoursdcard>
上的所有数据,因此请确保<yoursdcard>
是正确的设备!!!
-
执行
sudo dd if=/dev/zero of=/dev/<yoursdcard> bs=1000000 count=50
-
执行
sudo fdisk /dev/<yoursdcard>
-
现在使用命令
o
在sdcard上创建一个新的MSDOS分区表,然后使用n
命令添加一个新的分区并使用w
将更改写入到sdcard并退出fdisk -
现在使用
sudo mkfs -t <filesystem you want> /dev/<yoursdcard>1
格式化分区 -
现在,您的sdcard应该可以再次使用
如果这样不起作用:
-
打开终端
-
找出
<yoursdcard>
是什么设备 -
执行
sudo su
-
执行
echo "0" > /sys/block/<yoursdcard>/ro
第三种方案
请记住,该卡可能只是被损坏了。他们有一些闪光灯和一个板上控制器。如果卡认为有问题,则它将完全脱机;如果没有足够的可用闪存单元来写入,则它将变为只读。有时,控制器会保留闪存芯片的记帐信息,该信息可能会损坏,导致其以安全模式启动并且不允许任何操作。要克服此类问题,您需要’true’ SD卡读取器,而不是Mass Storage-only读取器。 ‘real’ SD接口可以访问控制器,并且可以为您提供所需的信息。