fstabの設定を間違えてRaspberryPiが起動しなくなったときの対処方法
RaspberryPi3 設定手順を書いているときに自動マウントの設定を間違えてしまい、RaspberryPiが起動しなくなるということが起こりました。/etc/fstab
の設定ミスを修正すれば解決するのですが、ファイルシステムがext4なので編集するにはLinuxマシンが必要です。自宅にはMacとWindowsマシンしかなかったので、VirtualBoxでLinuxを起動してSDカードを認識させて編集を行うことにしました。以下に手順を記載します。
環境
- macOS High Sierra 10.13.6
- VirtualBox 5.2.18
Linuxの仮想マシンにSDカードを認識させるには
VirtualBoxで動作中のLinux仮想マシンにSDカード認識させるにはrawデバイスとして認識させる必要があるらしい。rawデバイスが何のことかわからなかったので調べたところ、ファイルシステムを使用せずに直接デバイスへの書込みや読取りができる記録デバイスのことらしい。
- RAWデバイスとは
RAWデバイスは、ファイルシステムでフォーマットされないディスク・パーティションまたは論理ボリュームです。RAWデバイスの主な利点は、ダイレクトI/Oを実行し、より規模の大きいバッファを記述できることです。ダイレクトI/Oでは、オペレーティング・システムのバッファ・キャッシュを介さず、アプリケーションからストレージ・デバイスへの書込みおよび読取りを直接実行できます。
Linux仮想マシンでfstabを編集する
1.パーティションを確認する
SDカードをMacに挿入してパーティションを確認してアンマウントする ※自分の環境では/dev/disk2
$ diskutil umountDisk /dev/disk2
2.VirtualBox vmdkファイルを作成する
$ sudo VBoxManage internalcommands createrawvmdk -filename ./sd-card.vmdk -rawdisk /dev/disk2
コマンド実行時にSDカードが自動でマウントされるので再度アンマウントし、権限を変更する
$ diskutil umountDisk /dev/disk2 $ sudo chmod 777 ./sd-card.vmdk
3.VMDKファイルをストレージツリーに追加する
VirtualBoxのストレージタブを選択し、HDDのアイコンをクリックして"既存のディスクを選択"を選択する。作成したVMDKファイルがストレージツリーに追加される
4.仮想マシンを起動してSDカードが認識されていることを確認する
5.SDカードをマウントする
仮想マシンで/dev/sdb2
をマウントして、fstabを編集したらアンマウントする
$ sudo mount /dev/sdb2 /mnt $ sudo nano /mnt/etc/fstab $ sudo umount /mnt
SDカードをRasberryPiに挿して無事起動できたら完了です。