如何防止我的Pi的SD卡经常损坏?


47

我在启动时收到I / O错误,然后收到此“错误” :(我正在运行Raspbian的最新版本)

Entering kdb (current=0xca82ac80, pid 1) due to keyboard entry
kdb> _

而且我以前看过它,并被解释为我的SD卡已损坏,因为我没有正确关机。一个星期后,我没有处理此错误,直到电源闪烁三下而现在又无法启动。好像我每天都在重新准备我的SD卡!!!我不喜欢这样,更不用说我爱我的Pi的能力。但是这个“断点”让我发疯了!有什么办法可以防止这种情况或增强某些功能,以便即使断电也不会发生这种情况?有什么建议么?谢谢!

PS我的zip文件未损坏,我的提取服务是Win32DiskImager


2
您的卡片是否在此列表中
黄油

您是否考虑过UPS?
lenik

@lenik您是说我应该有一个电涌保护器之类的东西吗?
user151324 2013年

因为没有正确关机就关闭了电源?
jippie 2013年

1
@coding_corgi更可能是内置有电池的东西,可以在断电后提供5-10分钟的电源,使您可以忽略短暂的电源波动,并在长时间断电后有时间关闭(自动?)计算机。时间。简称为“不间断电源”或UPS。
lenik

Answers:


48

我不会写有关检查硬件和兼容SD卡列表的文章,因为您很可能已经检查了所有这些内容。我要写的是永久性解决方案,可以解决问题,并永久解决问题。

如果您不希望在翻转电源开关时损坏SD卡,则必须以只读模式使用它。如果没有任何内容写入SD卡,则无论您做什么都不会损坏它。

明显(但不可行)的解决方案是尝试翻转SD卡侧面的“只读”开关,但是不幸的是,此操作不起作用,因为示意图显示此开关未布线,并且其位置通常被忽略。

另一种更微妙(但可行)的方法是将您修改/etc/fstab为以只读方式挂载所有分区。这种方法的缺点是您的日志必须写在其他地方(USB记忆棒,RAM驱动器?),并且在使用RAM驱动器的情况下,日志在重新启动期间将不会保留。去做这个:

  1. 使用任何您喜欢的方法将RPi图像复制到SD卡。
  2. 从SD引导,raspi-config将自动启动。不要“扩展文件系统”,只需设置您的时区和国际设置即可。
  3. 运行sudo fdisk /dev/mmcblk0,按“ p”打印当前分区表。然后输入以下命令:

    n        Create a new partition
    [enter]  Make a primary partition
    [enter]  Use the default number
    [#]      1 greater than the end of mmcblk0p2
    [enter]  Expand to the end of the SD card
    w        Write the partition table and exit
    
  4. 编辑/etc/fstab。它看起来应该如下所示:

    proc            /proc     proc    defaults 0 0
    /dev/mmcblk0p1  /boot     vfat    ro       0 0
    /dev/mmcblk0p2  /         ext4    ro       0 0
    /dev/mmcblk0p3  /home     ext4    defaults,errors=remount-ro  0  1
    none            /var/run  ramfs   size=1M  0 0
    none            /var/log  ramfs   size=1M  0 0
    
  5. 运行sudo partprobe以识别新分区。

  6. 使用格式化新分区sudo mkfs --type ext4 /dev/mmcblk0p3
  7. 重启。

如果出于某种原因需要更改系统,则可以使用写访问权限重新挂载只读分区:

sudo mount -o remount,rw /dev/mmcblk0p2

请稍等,如果执行此操作将无法写入SD卡?还是在开机时?
user151324

1
@coding_corgi这应该完全停止写入SD卡。
apnorton

为什么需要写入SD卡?写入SD +掉电= FS损坏,如果需要保存一些数据,则可以使用USB记忆棒或在SD卡上创建单独的分区。在这种情况下,至少您的系统将启动并运行,然后您可以检查数据是否可能损坏。
lenik

@anorton这将停止对SD卡上前两个分区的写访问,但是没有人说您无法创建另一个分区,或使用其他媒体来保存数据。例如,只读RasPi通过网络写入数据-可能是一个非常可靠的解决方案。
lenik

1
我从raspi cam写入我的SD卡视频数据,它死了很多次!我没有一次遇到任何启动,拔出电线或系统崩溃的问题。即插即用时,只读对生产很有帮助。在开发过程中,无论如何都不会发生此问题-我怀疑即使是只读操作也会弄乱他的数据,因为某些事情发生的程度超出了内核的处理能力。
Piotr Kula 2013年

4

取决于您使用RPi的用途,您可能会对IPE感兴趣,这是“ Raspbian的防停电风味”。

我打算用它来启动我的RPi。如果我需要写入数据,我将使用将以只读方式挂载的USB驱动器(与必须维修SD相比,我更希望SD安全并破坏USB驱动器)

请参阅IPE主页

如此处所示,“还使用“ ipe-rw”和“ ipe-ro”将根文件系统切换为可写或只读模式。”


2

通过将USB闪存驱动器用于主分区,我已经解决了这个问题。

  1. 将树莓派映像还原到USB驱动器

  2. 将SD卡格式化为胖

  3. 将胖分区的内容从USB驱动器复制到SD卡上

  4. 修改SD卡上的config.txt以从/ dev / sda引导

本质上,rpi仍会从SD卡启动,但会将USB驱动器用于操作系统和读取/写入。



1

请确保您的RPi以默认速度运行(即CPU速度为700mhz)。就个人而言,我遇到了各种SD卡的存储损坏-但仅在全天候运行的情况下。不幸的是,某些发行版(图像)在config.txt中带有可疑的设置。


我没有超频我的CPU,但谢谢
user151324 2013年

尝试使用另一个RPi来排除您的某个有缺陷甚至损坏的机会
抖动

我只有一个
user151324 2013年

你可能会耗尽的选项,并要求RMA ..
抖动

RMA?那是什么?
user151324

1

如果您的Raspberry Pi被冻结,那么您将无法正确关闭,那么这将有所帮助。在知道这一点之前,我已经摔坏了几张SD卡:

按住Alt + PrintScreen的同时,在按住这些键的同时,依次击打以下键,一次击中一个,中间停顿几秒钟。

Alt+ PrintScreen+R E I S U O

要么

Alt+ PrintScreen+ R E I S U B(重新引导)

记住一个方便的助记符,即使系统完全崩溃也要重新启动。

将“ O”替换为“ B”以关闭系统,而不是重新引导(O = off,B = boot)。

资料来源:https : //www.raspberrypi.org/forums/viewtopic.php?t=176612#p1126262


0

如在elinux网站上所见。我只选择了适合您情况的内容,但请访问他们以获取更多信息...

  • 如果遇到问题,请使用rpi-update检查是否具有最新固件版本
  • 某些SD卡在R-Pi上不起作用,因此请检查已知SD卡列表
  • 如果您在设置SD卡时遇到问题,则可能需要先完全擦除SD卡,尤其是在其他地方使用过SD卡且它仍然包含数据/分区的情况下。最好以任何方式进行FULL(低级)格式化,因为它有时会发现坏扇区并将其添加到忽略列表中。
    • Windows和Mac用户可以从SD ​​Association下载格式化工具:https : //www.sdcard.org/downloads/formatter_3/
    • 在数码相机中,重新格式化卡也很容易。
    • 如果您使用dd命令在Linux或Mac OS上手动准备SD卡,则此操作将完全清除所有现有数据和分区。确保您写入整个卡(例如/ dev / sdd),而不是现有分区(例如/ dev / sdd1)。
  • 如果您有不支持最新固件的sdcard,请转到此处
  • 确保您的电源良好。尝试拔下所有插头,看看能持续多久。将物品一一插回,以测试其稳定性。

如果已执行所有这些步骤,则唯一可以尝试的方法是使用从兼容列表中精心选择的另一张SD卡。另外,请确保从受信任的地方购买原始卡。不像ebay china之类的。


我用了3张SD卡的过程中(所有支持)SanDisk的,金士顿和Lexar公司,我不是手动或者建立我的SD卡,我用Win32DiskImager试图在Ubuntu和Mac OS X之后
user151324

使fs只读只能解决这一问题。数以百万计的人中有您遇到此问题。也许您有一些垃圾/病毒弄乱了文件系统。只读根目录是您的烦恼...拭目以待。
Piotr Kula

谢谢,奇怪的事情正在发生,虽然
绝对

0

仅覆盖所有地面,还请检查您的电源是否足够好。尝试使用其他充电器或将RPI插入PC USB端口进行测试。请记住,建议的RPI电源约为700mA,但某些弱充电器可能无法将其维持在稳定水平。

我有一个路由器,开始运行了几天,然后变好了,然后又变了疯狂,后来又变好了……我发现电源在路由器处于工作状态时正在输出变化的电压(从3V到5.5V)。疯。用新的电源替换所有电源就可以了。因此,请尝试更换电源并测量输出电压。

最后,通过关闭操作系统来关闭RPI,并仅在只有一个红色指示灯亮起时才拔下RPI。如果您有一个以上的红色指示灯,则RPI不会真正关闭。另外,请尝试通过从插头上拔下电源来避免断开RPI,最好从RPI上拔下电源,并且仅在从插头上拔下电源后再断开。


不,我有一个稳定的5.1V @ 2100 A,并且我总是正确关闭
user151324 2013年

0

我在RS Components的pi上遇到类似的问题。这是在中国制造的pis之一。另一个由Element 14在英国制造的产品从未使用相同的sdcard和电源供电造成腐败。可能与ra组件单元有关的一些硬件缺陷。当然不确定,但是一切似乎都指向那个方向。


0

我的PI也经历了SD故障,有时连续五天,有时一个月。

我现在可以使它可靠运行超过一年的唯一方法是从USB闪存盘启动。这样,您就不必使用SD卡(仅在启动时使用),而只需要约500mb的sd卡(便宜)和USB记忆棒即可。


0

我遵循了一个提示,您可以sync在关闭之前执行此操作,到目前为止,使用此命令已经取得了一些成功:

sync; sudo shutdown -t 9 -r now

使用上述解决方案,您仍然对Raspberry有问题吗?
CuriousMind

我不再有任何问题-但我确实承认,我倾向于宁愿丢掉pi,而不是将其关闭。但是我的猜测是,我用上面的代码将其降低了50倍,此后没有失败过一次。因此,根据该统计信息-它起作用。
dirkk0 2015年

我认为这不会解决问题。当您执行受控关闭时,按设计,不会损坏SD卡。腐败似乎大多发生在仅与设备syncshutdown命令无关的设备拔出(或断电)的情况下,除非您sync在(意外!)拔出之前立即运行,这似乎是不可行的。
nhee 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.