うちでホコリをかぶってた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で起動確認した。