BeagleBone Blackで1-WireセンサのDS18B20を使う - Part1: SDカードのUbuntuの復旧


ことの始まりは1-WireセンサのDS18B20をBeagleBone Blackに接続しようとしたことです。SDカードにインストールしていたUbuntu 14.04はカーネルが3.14と新しくCapemgrが存在していません。dtb-rebuilderを使ってDTSを編集してビルドした後、/boot/uEnv.txtのDTBを書き換える必要があります。ところが書き間違えてSDカードからbootしなくなりました。なんとかSDカードは復旧したのですが、カーネルが3.8.13のDebian 7.8を入れ直した方がよさそうです。

eMMCのDebianからSDカードの復旧

SDカードのUbuntu 14.04はDebian 7.8に入れ替えますが、備忘のため/boot/uEnv.txtを書き間違えてbootしなくなったSDカードの復旧についてメモしておきます。まずSDカードを抜いてeMMCからbootします。この場合はDebianが入っています。起動後にSDカードを挿します。fdiskで確認すると、SDカードは/dev/mmcblk1のデバイスのようです。

$ sudo fdisk -l
...
        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk1p1   *        2048     3481599     1739776   83  Linux
Disk /dev/mmcblk1: 15.7 GB, 15720251392 bytes

lsblkでデバイス名とmount pointも確認します。

$ lsblk
NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
mmcblk0boot0 179:8    0     1M  1 disk
mmcblk0boot1 179:16   0     1M  1 disk
mmcblk0      179:0    0   1.8G  0 disk
├─mmcblk0p1  179:1    0    96M  0 part /boot/uboot
└─mmcblk0p2  179:2    0   1.7G  0 part /
mmcblk1      179:24   0  14.7G  0 disk
└─mmcblk1p1  179:25   0   1.7G  0 part /media/rootfs

SDカードにある/boot/uEnv.txtが見つかりました。

$ ls -al /media/rootfs/boot/
-rw-r--r--  1 root root     414 Jan  6  2015 uEnv.txt

あとは間違えて設定したdtb=の記述を消します。

$ sudo vi /media/rootfs/boot/uEnv.txt

SDカードを挿したままrebootすれば、SDカードのUbuntuが起動するようになりました。

$ sudo reboot