Posted at

BeagleBone BlackにDebianをインストール

More than 5 years have passed since last update.

BeagleBone BlackにはデフォルトでÅngstrom LinuxがeMMCにインストール済みですが、eMMCは寿命があるのでmicroSDカードから別のOSを起動するように設定します。

今回はDebianを選択しました。

※ Ubuntu, ArchLinuxでも同じ方針でインストールできます。


インストール

この手順ではU-Bootとルートファイルシステムをそれぞれ書き込む方法でインストールします。

(ArchLinuxをこの手順でインストールした事があるため)

※ イメージファイルを書き込む手順は下記ダウンロードページ他、色んなページで紹介されています。


使用させていただくファイル

今回はARM HF Linuxで公開されているイメージを利用させていただきました。(Debian/Ubuntuの場合)

ダウンロードページ

※ 後でwgetで取得する手順なのでココでダウンロードしておく必要はありません。


microSDカードにイメージを書き込む

以下、Mac上のUbuntu@VMWareFusionで作業しています。

※ VirtualBoxとかローカルでも大丈夫です。


microSDカードを確認

単純に接続前後で差分を確認する


接続前

~$ ls /dev/sd*

/dev/sda /dev/sda1 /dev/sda2 /dev/sda5


接続後

"/dev/sdb" として認識された状態

~$ ls /dev/sd*

/dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb


書き込み先のパーティションを作成

~$ sudo fdisk /dev/sdb

パーティションはArchLinuxのインストール手順に書いてある通りに作成しました。

下記ページに日本語でほぼ同様の記載があります。

http://www.voip-info.jp/index.php/BeagleBone_Black_Asterisk

一応、入力を羅列しておきます。

※ 説明は間違っているかもしれません。


  1. o (既存のパーティションクリア)

  2. p (パーティションの確認)

  3. n (新規パーティション作成: uboot用)

  4. p (プライマリパーティションを選択)

  5. 1 (パーティション番号: 1)

  6. [enter] (パーティション開始位置 → デフォルト)

  7. +64M (パーティション終了位置 → 64MB確保)

  8. t (パーティションタイプ変更)

  9. e (W95 FAT16を選択)

  10. a (ブート可能に設定)

  11. n (新規パーティション作成: rootfs用)

  12. p (プライマリパーティションを選択)

  13. 2 (パーティション番号: 2)

  14. [enter] (パーティション開始位置 → デフォルト(1の直後))

  15. [enter] (パーティション終了位置 → デフォルト(最大))

  16. p (パーティションの確認)

  17. w (書き込み)


フォーマット

~$ sudo mkfs.vfat -F 16 /dev/sdb1

~$ sudo mkfs.ext4 /dev/sdb2


書き込み

※ ArchKinuxの場合はファイル名、tarコマンドのオプションが異なります。

cf. ArchLinuxのインストール手順

~$ mkdir boot

~$ sudo mount /dev/sdb1 boot
~$ sudo tar Jxvf uboot-bone.tar.xz -C boot

~$ mkdir root

~$ sudo mount /dev/sdb2 root
~$ sudo tar Jxvf debian-wheezy-7.2-armhf-rootfs-3.8.13-bone30.tar.xz -C root


接続解除

書き込みが終わったのでマウントを解除してmicroSDカードを抜きます。

~$ sudo umount boot root

これでインストール完了です。


起動確認

microSDカードのスロット付近にあるスイッチを押した状態で電源を入れ、押したまましばらくするとLEDが点滅したらボタンから手を離します。(ボタンを離すタイミングは未確認)

これでmicroSDカードからOSが起動するはずです。


インストール後

このままでは本体のスイッチを押しながら電源を入れないと、microSDから起動しません…

(ファームウェアを更新するとmicroSDカードを刺すだけで起動するかもしれません)

microSDカードからOSが起動したら、次のようにuEnv.txtを変更することでmicroSDカードから起動するそうです。

これは下記のページを参考にさせていただきました。

http://tomowatanabe.hatenablog.com/entry/2013/12/15/202806

(bootfileだけ設定していてハマりました…)

※ 以下はmicroSDカードで起動したOS上での操作です。

~$ sudo nano /boot/uboot/uEnv.txt


uEnv.txt

mmcpart=2

bootfile=zImage # 追加
optargs=fixrtc
uenvcmd=i2c mw 0x24 1 0x3e; kd=0; if test $mmcdev -eq 1; then mmc dev 0; if mmc rescan; then kd=1; fi; mmc dev 1; fi; setenv mmcroot /dev/mmcblk${kd}p${mmcpart} ro
loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdtaddr} ${bootdir}/dtbs/${fdtfile}
loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${bootdir}/${bootfile}
mmcboot=echo Booting from mmc ...; run mmcargs; bootz ${kloadaddr} - ${fdtaddr} # 追加

これで再起動後はmicroSDカードからOSが起動します。

めでたしめでたし。