当前位置: 首页>>技术教程>>正文


linux – Ubuntu映像后无法删除Micro SD卡的只读属性

, , , ,

问题描述

我无法从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

  1. 引导某种Linux

  2. 打开一个终端

  3. 找出您的SD卡是什么设备,并使用sudo fdisk /dev/<yoursdcard> -l进行验证,或者也要获取设备名称,您也可以使用sudo parted /dev/<yoursdcard> -l

警告:以下命令将破坏/dev/<yoursdcard>上的所有数据,因此请确保<yoursdcard>是正确的设备!!!

  1. 执行sudo dd if=/dev/zero of=/dev/<yoursdcard> bs=1000000 count=50

  2. 执行sudo fdisk /dev/<yoursdcard>

  3. 现在使用命令o在sdcard上创建一个新的MSDOS分区表,然后使用n命令添加一个新的分区并使用w将更改写入到sdcard并退出fdisk

  4. 现在使用sudo mkfs -t <filesystem you want> /dev/<yoursdcard>1格式化分区

  5. 现在,您的sdcard应该可以再次使用

如果这样不起作用:

  1. 打开终端

  2. 找出<yoursdcard>是什么设备

  3. 执行sudo su

  4. 执行echo "0" > /sys/block/<yoursdcard>/ro

第三种方案

请记住,该卡可能只是被损坏了。他们有一些闪光灯和一个板上控制器。如果卡认为有问题,则它将完全脱机;如果没有足够的可用闪存单元来写入,则它将变为只读。有时,控制器会保留闪存芯片的记帐信息,该信息可能会损坏,导致其以安全模式启动并且不允许任何操作。要克服此类问题,您需要’true’ SD卡读取器,而不是Mass Storage-only读取器。 ‘real’ SD接口可以访问控制器,并且可以为您提供所需的信息。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10218.html,未经允许,请勿转载。