Raspberry PiのSDカードからデータをサルベージする

Raspberry Piを起動するとカーネルパニックになってしまった。VirtualBox内のLinuxでSDカードをマウントしようとするとマウントがずっと終わらない。fsckを実行してもエラーが発生してうまくいかない…。

なんとかデータのサルベージはできたのでその備忘録。

使用した環境

手順

  • SDカードをMacに認識させる
  • diskutil list を実行してサルベージするIDENTIFIERを確認(今回の対象はdisk2s2)
host$ diskutil list

...

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *64.5 GB    disk2
   1:             Windows_FAT_32 boot                    66.1 MB    disk2s1
   2:                      Linux                         64.4 GB    disk2s2

...
  • ディスクユーティリティなどでdisk2s2がマウントされていないことを確認
  • ddを実行して中身を書き出す
host$ mkdir -p ~/raspi
host$ sudo dd if=/dev/disk2s2 of=~/raspi/raspi.img
  • 所有者を自分自身に変えておく(Docker内でマウントするときに困るので)
host$ sudo chown abcang raspi.img
  • docker内でマウントする
host$ docker run --rm -it -v ~/raspi:/raspi --privileged debian bash
docker# mkdir /mnt/raspi
docker# mount -o loop /raspi/raspi.img /mnt/raspi
docker# ls /mnt/raspi

これで /mnt/raspi にマウントされるので、必要なファイルを退避すれば完了

参考