我在联想 310 上安装了 Ubuntu 18.04,一段时间后出现了一些问题(问题通常发生在浏览器上观看 Flash 视频后),文件系统变为只读。例如,当我尝试执行 ls 时,出现以下错误:
bash: cannot create temp file for here-document: Read-only file system
使用 dmesg 我发现以下内容:
[ 1113.452578] mmc1: mmc_hs400_to_hs200 failed, error -110
[ 1113.452615] mmcblk1: timed out sending r/w cmd command, card status 0x400e00
[ 1113.452617] mmcblk1: command error, retrying timeout
[ 1113.452908] mmc1: mmc_hs400_to_hs200 failed, error -110
[ 1113.452931] mmcblk1: timed out sending r/w cmd command, card status 0x400e00
[ 1113.452933] mmcblk1: command error, retrying timeout
[ 1123.552180] mmc1: Timeout waiting for hardware interrupt.
[ 1123.552209] mmc1: sdhci: ============ SDHCI REGISTER DUMP ===========
[ 1123.552216] mmc1: sdhci: Sys addr: 0x20000008 | Version: 0x00001002
[ 1123.552223] mmc1: sdhci: Blk size: 0x00007200 | Blk cnt: 0x00000008
[ 1123.552229] mmc1: sdhci: Argument: 0x02400988 | Trn mode: 0x0000002b
[ 1123.552235] mmc1: sdhci: Present: 0x1fff0001 | Host ctl: 0x0000003d
[ 1123.552241] mmc1: sdhci: Power: 0x0000000b | Blk gap: 0x00000080
[ 1123.552248] mmc1: sdhci: Wake-up: 0x00000000 | Clock: 0x00000207
[ 1123.552254] mmc1: sdhci: Timeout: 0x00000006 | Int stat: 0x00000000
[ 1123.552260] mmc1: sdhci: Int enab: 0x02ff000b | Sig enab: 0x02ff000b
[ 1123.552266] mmc1: sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
[ 1123.552272] mmc1: sdhci: Caps: 0x546ec881 | Caps_1: 0x80000807
[ 1123.552278] mmc1: sdhci: Cmd: 0x0000193a | Max curr: 0x00000000
[ 1123.552285] mmc1: sdhci: Resp[0]: 0x00400e00 | Resp[1]: 0x00000000
[ 1123.552291] mmc1: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00400e00
[ 1123.552296] mmc1: sdhci: Host ctl2: 0x0000000d
[ 1123.552303] mmc1: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x000000016f310200
[ 1123.552306] mmc1: sdhci: ============================================
[ 1123.552579] mmcblk1: error -110 sending stop command, original cmd response 0x0, card status 0x400900
[ 1123.552619] mmcblk1: error -110 transferring data, sector 37751176, nr 8, cmd response 0x0, card status 0x0
当我重新启动时,有一个终端告诉我运行 fsck,执行此操作并再次重新启动后,系统又恢复正常(一段时间)。
我读到过这可能是内核问题,但也可能是我的硬件问题。
有人能帮我找出问题所在吗?我可以提供哪些日志信息来澄清这一点?
答案1
您遇到了硬件问题,但您可以通过执行以下操作来保存 eMMC:
将 eMMC 插入另一台运行 Ubuntu 的计算机
安装 ddrescue:
sudo apt-get install gddrescue
将 eMMC 复制到另一台计算机的 HDD 上的映像:
ddrescue --direct --retry-passes=3 /dev/XdY /tmp/eMMC.img /tmp/eMMC.log
上述命令将告诉 ddrescue:
--direct
使用直接磁盘访问并忽略内核的缓存--retry-passes=3
在放弃之前,请重试坏扇区 3 次。/dev/XdY
我们正在拯救的 MMC 在哪里X
,并Y
指定 MMC 的标识符eMMC.img
是图像文件的名称eMMC.log
是日志文件的名称。始终使用日志文件。这允许您从中断点恢复中断的图像,或者在初始通过后重试坏扇区。如果没有日志文件,您将不得不重新开始!
完成后,如果需要,卸载 MMC
将新的MMC插入计算机的MMC插槽中并执行:
ddrescue --force /tmp/eMMC.img /dev/XdY /tmp/eMMC.restore.log
将新的 MMC 重新插入联想电脑并重启