有时我的SD卡“损坏”,这导致许多读取/写入错误。通常,将SD卡连接到Windows 7并选择“错误检查”(右键单击驱动器>“工具”>“错误检查”),即可找到损坏并进行修复。

是否有任何工具或应用程序用于检查SD卡是否存在驱动器错误并从android本身内部修复该错误?

我还想提到我在安装了busybox的根目录上。

评论

您是否尝试过使用终端应用程序,执行su并运行/system/bin/fsck.exfat?

@Izzy没有给我这样的文件或目录

检查不同的位置,也许是在/ system / xbin中?尝试cding进入目录,然后使用ls fsc *检查可用的目录。必须在某处:)

究竟。 Busybox尝试变得更苗条。用“ man mount”尝试Google姑妈,效果很好:)并在下面查看我的答案。如果有不清楚的地方,请在此处评论(或在聊天中看到我-尽管接下来的几个小时我将不在那里,但仍有其他认识的成员可以帮助您:)

如果您的SD卡反复出现错误,则应使用H2testw(仅以德语链接,以德语和英语链接软件。尽管外观相反,我相信这是官方网站),才能确保它确实具有指定的容量。错误的SD卡将自动损坏。

#1 楼

您可以借助root和终端仿真器(例如Android终端仿真器(或使用adb shell)来解决此问题。执行此工作的二进制文件称为fsck,通常位于/system/xbin/system/bin中。有时您需要它的特殊变体,例如,可能称为fsck.exfat等。因此,首先确保我们找到正确的二进制文件:

cd /system/xbin
ls fsc*


如果找不到,请重复/system/bin我会假设它是在第一位找到的,简称为fsck(如果不是这种情况,请相应调整以下内容)。

由于fsck来自“ Linux核心”,因此请查阅其手册页中的语法。尽管可能有些选项在Android上不起作用,但最基本的应该。请参阅链接的手册页以了解详细信息(或运行Linux VM并在页面消失时使用man fsck)-我将遵循以下基本原则:

首先,我们需要找到您的SD卡可用的设备d to。如果已安装,则mount命令将为我们提供帮助:

mount


就这样,基本上:检查输出并查看SD卡的位置。通常这是使用vold进行的操作,但是在设备之间有所不同。输出可能包含类似/dev/block/vold/179:17 on /mnt/storage/sdcard的内容-在这种情况下,我报价的第一部分是我们的设备。为了修复“驱动器”,您需要先卸下它。这可以通过设置菜单来完成,或者就像在终端一样,通过发出

umount /dev/block/vold/179:17


,现在我们可以进行维修工作了。基本语法是:

fsck [options] [-t fstype] <filesystem> [fsoptions]


因此,我们首先尝试最简单的方法,并希望fsck找出所有内容:

fsck -C -r /dev/block/vold/179:17


基本上,这意味着:显示进度(-C),并始终要求用户维修(-r)/dev/block/vold/179:17上的任何错误。如果仍然无法解决,请查看链接的手册页以获取更多选项。

评论


如果需要,还可以通过从当前工作目录中使用ls / system / bin / fsc *和ls / system / xbin / fsc *来保存cd步骤。您甚至可以使用ls / system / xbin / fsc * / system / bin / fsc *将两者合并为一个命令。

–eldarerathis
13年1月31日在16:52



不,我不会混淆,我不知道的是这个问题实际上与SD卡有关。是的,我确实确实混淆了一些事情。严格来说,您也可以将SD卡格式化为ext,因此这可能适用于这样做的人。

– Lie Ryan
13年11月9日,12:57



点了。尽管“普通用户”(或一个“有疑问的人”)可能更好地坚持使用FAT,至少出于互操作性考虑。至少在大多数操作系统上都容易地支持ExtFS之前,默认情况下它不需要任何其他驱动程序(猜测Windows将会像往常一样是这里的陷阱)。

– Izzy♦
2013年11月9日13:08

感谢您的回答,我认为这是我所需要的。我在umount上遇到错误,您必须是root用户吗?

–有机大理石
16/12/26在13:35

@OrganicMarble是的,当然–对于上述所有命令,否则您将无法以这种方式访问​​设备(所有以/ dev开头的设备)。

– Izzy♦
16/12/27在20:50

#2 楼

谢谢你,这节省了我的一天:)

root@android:/ # mount | grep -i sdcard
/dev/block/nandk /mnt/sdcard vfat rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=ascii,shortname=mixed,errors=remount-ro 0 0

root@android:/ # /system/bin/fsck_msdos -y /dev/block/nandk


评论


感谢您发布此答案,它对我有很大帮助。从接受的答案中,我不知道如何修复vfat文件系统。已投票。

–有机大理石
16/12/27在20:42

#3 楼

如果您的SD卡反复出现错误,则应使用H2testw(仅以德语链接,以德语和英语链接软件。尽管外观相反,我相信这是官方网站),才能确保它确实具有指定的容量。错误的SD卡将自动损坏。

评论


感谢您对这个久已忘记的答案的支持。应该是一个评论,但当时我可能没有这个声誉。我现在将其保留在此处,直到评论被发表并可见为止。

–代码
15年7月8日在4:49

我赞成你的评论。

–unforgettableidSupportsMonica
15年11月27日在16:37

@unforgettableid谢谢,只想确保每个人都知道这种风险。丢失数据真的很糟糕。

–代码
15年11月27日在17:17

好的,既然评论已被批准,您可以删除此答案。 :)

–unforgettableidSupportsMonica
16年5月30日在18:50

@unforgettableid将同时保留,以提高可见度

–代码
16年6月6日在23:06

#4 楼

尽管其他答案是正确的(至少是部分正确的),但只需添加一些额外的注释即可。在最新的Android版本上,您不需要手动运行文件系统检查,因为vold会自动处理此问题。请参阅何时应在可移动MicroSD卡上执行一致性检查?

如果要手动执行此操作,则需要一个已root用户的设备,因为无法访问未root用户的设备上的阻止设备。同样,您需要在检查错误之前先卸载文件系统。由于Android 6外部SD卡已安装在/mnt/media_rw/[UUID]上,然后在/mnt/runtime/[VIEW]/[UUID]上进行了仿真。然后将VIEW绑定安装到/storage/[UUID]。请参阅如何将文件保存到外部SD卡中的详细信息。

完全卸载SD卡后,在块设备上运行相应的fsck.*二进制文件。通常init会将SD卡块设备枚举为/dev/block/mmcblk1p*p*表示分区号,通常只是1),而vold/dev/block/vold/[MAJOR:MINOR]中创建另一个设备节点。您需要找到正确的块设备(也可以在卸载文件系统之前通过mount | grep /mnt/media_rw进行检查)。 。如果这些不是您的ROM内置的(exFAT直到最近才是封闭源,所以可能存在许可证问题),则可以使用外部二进制文件。或从(dosfstools或exfat)源代码构建。

运行文件系统检查:

~# fsck.exfat /dev/block/mmcblk1p1


#5 楼

我在市场上找到了可以“修复损坏的sdcard并扫描坏块”的应用程序。

https://play.google.com/store/apps/details?id=com .sylkat.AParted&hl = zh-CN

#6 楼

如果我没记错的话,您可以根据自己的rom进行以下操作,以强制android在重新启动时对内部和外部存储设备进行fsck。
su
touch /forcefsck


然后重新启动。

如果手机没有植根,肯定会失败。

来源:http://forum.xda- developers.com/showpost.php?p=57027579&postcount=20

评论


“取决于ROM”是什么意思?

–unforgettableidSupportsMonica
15年11月27日在16:37

该技巧可能不适用于所有手机。不同的手机可能无能为力。此外,您的手机也需要扎根。

– Trekeyus
15年11月28日在17:59

重新启动后,如何知道fsck是否实际运行?

–unforgettableidSupportsMonica
2015年12月14日在8:12



-1。我对你的帖子不满意。原因如下:我花了更多时间调查此事。您建议的技术可能是100%错误的。它可能欺骗读者以为它会有所帮助,但该技术实际上无能为力。

–unforgettableidSupportsMonica
16-6-3的15:00



touch / forcefsck仅在具有初始化脚本的设备上运行,该脚本检查/ forcefsck文件的存在。我不知道有一个具有此类初始化脚本的Android设备。因此,尽管您的技术可能会在Debian,Ubuntu和Mint设备上运行,但我高度怀疑该技术是否可以在任何Android设备上运行。如果有人发现带有检查/ forcefsck的初始化脚本的单个Android设备,请告诉我!只需回复此评论。

–unforgettableidSupportsMonica
16年3月3日在15:00