読者です 読者をやめる 読者になる 読者になる

エンジニアの備忘録

仕事や趣味でのトラブルシューティングの備忘録

Raspberry PiでMicro SDカードが壊れたときの対処方法

Kernel panic発生

Raspberry Pi2 Model Bで開発していると、シャットダウン --> USB電源抜く --> USB電源入れる --> Kernel panic になってしまうことが発生. kernel panic (Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)) すごく悲しいこの事態への対処方法ををメモします.

fsck.fatで修復

対処の手順としては

  1. VMwareを立ち上げる
  2. Micro SDをVMwareに認識させる
  3. fsck.fatコマンドで修復

まずWindowsでは修復できないようのなで、Linuxで修復します.おそらくWindowsではデフォルトで見えない領域を修復しないといけないからだと思います.

VMwareを立ち上げます. 自分が使っているLinuxディストリビューションはXubuntu14.04. VAIO Pro 13ではMicro SDをSDカードアダプタに入れて、VAIO Pro 13のSDカードスロットに入れてもVMwareでMicro SDカードを認識することができませんでした. なので、ELECOMのUSBマルチメディアリーダーをVAIO Pro 13のUSBに接続し、メディアリーダーにSDカードを接続することでMicro SDをVMwareに認識させることができました. まず、Micro SDがどのdevに割り当てられているか確認します.

hogehoge@ubuntu:~$ dmesg | tail
[ 8002.324262] sd 34:0:0:1: Attached scsi generic sg4 type 0
[ 8002.327772] sd 34:0:0:0: [sdb] Attached SCSI removable disk
[ 8002.392444] sd 34:0:0:1: [sdc] Attached SCSI removable disk
[ 8203.563956] sd 34:0:0:1: [sdc] 15759360 512-byte logical blocks: (8.06 GB/7.51 GiB)
[ 8203.572055] sd 34:0:0:1: [sdc] No Caching mode page found
[ 8203.572060] sd 34:0:0:1: [sdc] Assuming drive cache: write through
[ 8203.592378] sd 34:0:0:1: [sdc] No Caching mode page found
[ 8203.592383] sd 34:0:0:1: [sdc] Assuming drive cache: write through
[ 8203.595436]  sdc: sdc1 sdc2
[ 8208.144829] EXT4-fs (sdc2): mounted filesystem with ordered data mode. Opts: (null)

/dev/sdcに割り当てられていることがわかります. Ubuntu系ではSDカードなどのメディアを認識すると、自動でmountします. これをumountしておきます.

hogehoge@ubuntu:~$ sudo umount /dev/sdc*
umount: /dev/sdc: not mounted

そしてfsck.fatで修復.自分の場合は毎回/dev/sdc1が壊れるので、/dev/sdc1を修復します. 場合によっては/dev/sdc2を修復しないといけないこともあるかもしれません.

hogehoge@ubuntu:/media/hogehoge$ sudo fsck.fat -V /dev/sdc1
fsck.fat 3.0.26 (2014-03-07)
0x25: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
1) Remove dirty bit
2) No action
? 1
Starting check/repair pass.
Starting verification pass.
Perform changes ? (y/n) y
/dev/sdc1: 54 files, 2428/7161 clusters

最後にもう一度fsck.fatして、corruptの警告がでなかればOKです.

hogehoge@ubuntu:/media/hogehoge$ sudo fsck.fat -V /dev/sdc1
fsck.fat 3.0.26 (2014-03-07)
Starting check/repair pass.
Starting verification pass.
/dev/sdc1: 54 files, 2428/7161 clusters

メモ

  • ググると、「fsckで修復」というのがすぐに見つかったが、なぜか自分はfsckではダメで、fsck.fatだとうまく修復できた.
  • raspberry piを終了するときはsudo shutdown -h nowで終了しているのだが、次回起動でkernel panicになることがある.