うちでホコリをかぶってたeeepcを復活させるために、pixelをsdカードにインストールして、使えるようにしてみたんだけど、何かの操作の拍子にデスクトップからメニューや背景が消えてしまう症状が出たので、色々調べてみた。

結論から言うとsdカードの一部が壊れていたのでfsckで修復したら治った。

参考(Tutorial: Repairing Corrupted SD Cards for the Raspberry Pi on Mac - SwitchDoc Labs

調査

調査と言っても単純で、syslogを調べてみた程度

EXT4-fs error (device sdb2): ext4_lookup: deleted inode referenced:

みたいなメッセージが出てたので、sdb2のファイルシステムが壊れたんだなと予測した。ホームフォルダで

$ ls -la

とかしてみると.configフォルダとかにアクセス出来なかったので、ファイルシステムが壊れてるという予測をさらに深めた。

修復

ファイルシステムの修復なので、fsckくらいしかすることないかなと思ったんだけど、pixelにはシングルユーザーモードが無く、sdb2をunmountしてsdb2を使ってるプロセスを切る方法が分からなかった。

sdカードにインストールしているという利点を利用して、virtualboxを用いてmacにubuntuをインストールして、そのubuntuにsdカードを読み込ませてfsckするというちょっと面倒な手順をふんでみた。

ubuntuの準備

  • virtualboxのインストール 省略(ググれば色々出てくる)
  • virtualboxの仮想マシン作成
    • 新規をクリック
    • 名前を適当に設定してubuntu(64bit)を選ぶ
    • 作った仮想マシンの設定をクリック
    • ストレージ->コントローラーをクリックしてポートの数を2に設定
  • virtualboxにubuntuをインストール 省略(ググれば色々出てくる)今回は12.04をインストールした
  • 一旦仮想マシンを終了しておく

SDカードをubuntuに追加する

SDカードを差すと、手順を進めるごとに何回か「カードが読み込めない」というメッセージが出るが、全て無視する。初期化しない。

  • sdカードをmacに差す
  • デバイス番号の確認
$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
....
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *4.0 GB     disk1
   1:                       0x17                         1.4 GB     disk1s1
   2:                      Linux                         2.6 GB     disk1s2

今回はdisk1と確認できた。 + アンマウント

diskutil unmountDisk /dev/disk1
  • sdカードの仮想ディスクを作る
$ cd "/Users/username/VirtualBox VMs"
$ sudo VBoxManage internalcommands createrawvmdk -filename ./sd-card.vmdk -rawdisk /dev/disk1
$ sudo chmod 777 /dev/disk1
sudo chmod 777 ./sd-card.vmdk
  • 仮想マシンの設定->ストレージ->コントローラーでハードディスクの追加ボタン->sd-card.vmdkを選択
  • 仮想マシンを起動

sdカードの修復

  • terminalを起動(ググれば出てくる)

  • fsckを実行するデバイスを調べる

$ sudo lsblk -l
  • fsckを実行する
$ sudo fsck -fn /dev/sdb2

でエラーがあるか確認して

$ sudo fsck -fy /dev/sdb2

で修復

修復が終わったら 仮想マシンを終了して、SDカードを取り出して、eeepcで起動確認した。