写入 SD 卡时缓冲区 I/O 错误

写入 SD 卡时缓冲区 I/O 错误

我尝试构建一个 Rpi SD,将 NOOBS 解压到 SD 中,但 Raspberry Pi 在启动时因 I/O 错误而停止设置。我尝试删除分区,但没有成功,甚至

sudo dd if=/dev/zero of=/dev/mmcblk1 bs=8192

它已经在 32gb sd 上运行了一整夜,我开始认为它不会完成并且其中存在一些错误。

有什么方法可以轻松验证这一点?(F3 命令应该可以执行此操作,但它无法运行,因为 SD 直接插入笔记本电脑并且它认为它不是 USB 存储)。

我在系统日志中看到:

Buffer I/O error on dev mmcblk1, logical block 1645696, lost async page write
Jun 27 09:15:45 linuxlaptop kernel: [51903.094955] print_req_error: I/O error, dev mmcblk1, sector 13165576
Jun 27 09:15:45 linuxlaptop kernel: [51903.094959] Buffer I/O error on dev mmcblk1, logical block 1645697, lost async page write
Jun 27 09:15:45 linuxlaptop kernel: [51903.094974] print_req_error: I/O error, dev mmcblk1, sector 13165584
Jun 27 09:15:45 linuxlaptop kernel: [51903.094979] Buffer I/O error on dev mmcblk1, logical block 1645698, lost async page write
Jun 27 09:15:45 linuxlaptop kernel: [51903.094992] print_req_error: I/O error, dev mmcblk1, sector 13165592
Jun 27 09:15:45 linuxlaptop kernel: [51903.094995] Buffer I/O error on dev mmcblk1, logical block 1645699, lost async page write
Jun 27 09:15:45 linuxlaptop kernel: [51903.095002] print_req_error: I/O error, dev mmcblk1, sector 13165600
Jun 27 09:15:45 linuxlaptop kernel: [51903.095005] Buffer I/O error on dev mmcblk1, logical block 1645700, lost async page write
Jun 27 09:15:45 linuxlaptop kernel: [51903.095012] print_req_error: I/O error, dev mmcblk1, sector 13165608
Jun 27 09:15:45 linuxlaptop kernel: [51903.095014] Buffer I/O error on dev mmcblk1, logical block 1645701, lost async page write
Jun 27 09:15:45 linuxlaptop kernel: [51903.095021] print_req_error: I/O error, dev mmcblk1, sector 13165616
Jun 27 09:15:45 linuxlaptop kernel: [51903.095024] Buffer I/O error on dev mmcblk1, logical block 1645702, lost async page write
Jun 27 09:15:45 linuxlaptop kernel: [51903.095031] print_req_error: I/O error, dev mmcblk1, sector 13165624
Jun 27 09:15:45 linuxlaptop kernel: [51903.095033] Buffer I/O error on dev mmcblk1, logical block 1645703, lost async page write
Jun 27 09:15:45 linuxlaptop kernel: [51903.095040] print_req_error: I/O error, dev mmcblk1, sector 13165632
Jun 27 09:15:45 linuxlaptop kernel: [51903.095043] Buffer I/O error on dev mmcblk1, logical block 1645704, lost async page write
Jun 27 09:15:45 linuxlaptop kernel: [51903.095050] print_req_error: I/O error, dev mmcblk1, sector 13165640
Jun 27 09:15:45 linuxlaptop kernel: [51903.095052] Buffer I/O error on dev mmcblk1, logical block 1645705, lost async page write

答案1

一个可能的答案是 SD 卡出现了严重问题。

我最近一直在与 4 张 SD 卡的缓慢和随机错误作斗争,发现它们都是假货。我现在总是在使用新卡之前先测试它们。这个答案可能不是这种特殊情况下的解决方案,但它可能会对某些人有所帮助,而且我(目前)还没有资格发表评论。

假卡可能很慢,也可能夸大其大小(达到实际尺寸限制时失败)。

一个简单的 SD 卡测试(涵盖速度和大小)由H2测试w应用程序。从该页面开始:

该软件可检测存储介质是否真的提供了制造商指定的存储空间。由于可能存在错误或欺诈,因此信息并不总是正确的,因此建议进行 USB 记忆棒检查。

它适用于 Windows,但还:

如果您使用操作系统 macOS、Ubuntu、Linux Mint 或 Debian,您可以使用命令行程序 F3 来替代 H2Testw,后者可免费使用。

(翻译者谷歌翻译

该网站是德语的,您可以在应用程序内在德语和英语之间切换。

H2testw 被公认为检测假货的黄金标准。

谨防:H2testw 会将随机数据写入 SD 卡,因此实际上擦除它。

我建议测试“所有可用空间”,然后耐心等待(测试 32GB 卡大约需要一个小时)。

注意:H2testw 替换H2测试

较新的 H2testw 更加方便,特别推荐用于测试 USB 记忆棒。

H2testw 测试已格式化的 SD 卡,如果分区已被删除,则需要更换。以下是一份非常简短的说明列表,通常可以从损坏的卡恢复到格式化的卡(使用 Windows):

DISKPART(右键单击以管理员身份运行)

  • 列出磁盘
  • 选择磁盘<SD 卡编号,不要误会!>
  • 列出磁盘(确保您选择了正确的磁盘)
  • 干净的
  • 创建分区主
  • 积极的
  • 退出然后正常格式化。

顺便说一句:我还推荐使用 Etcher 来写入 SD 卡 - 它会进行验证,因此可以指出问题。

相关内容