BeagleBone Black Asterisk

2013年7月9日 (火) 16:53時点におけるTakahashi (トーク | 投稿記録)による版 (BeagleBone BlackをArch Linuxで起動する)

目次

BeagleBone Black

http://beagleboard.org/Products/BeagleBone%20Black
注意:BeagleBone Blackを買いましょう。BeagleBone(白いやつ)は買ってはいけません。高いだけです!
Raspberry Piよりも、ちょっとだけ高性能。形状的にも収まりが良いので、Asteriskアプライアンスに良いかも。
Cortex-A8 1GHzでRAM 512MB、オンボードのフラッシュ(MMC) 2GBと割と豪華。
(Beagleboard,BeagleBoneはイマイチぱっとしなかったんだけどBlackはいい感じです)

Arch Linux

デフォルトでインストールされているÅngströmは何かちょっとモサっとするので使わず、Arch Linuxを使うことにします。
http://archlinuxarm.org/platforms/armv7/ti/beaglebone-black
ここを参考に。繰り返しますけどBeagleBone Blackですよ。BeagleBoneじゃないです。
なお、マイクロSDカードの準備とArch Linuxの基本部分のインストール(マイクロSDへの展開)は別なLinuxマシン上で行います。

マイクロSDカードを準備する

ターゲット、つまりBeagleBone Black上でAsteriskをコンパイルしてしまおうと思うので、そこそこ容量のあるマイクロSDカードが使いたいです。16GBもあれば十分すぎますけども。

パーティション作成

適当なLinuxマシン上でマイクロSDのパーティションを切ります。ポイントとしては先頭(パーティション1)はFAT32で64MBを用意し、残りはext4で残り全部を割当ます。
こんな感じです。

Command (m for help): p

Disk /dev/mmcblk0: 15.9 GB, 15931539456 bytes, 31116288 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xd00da379

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *          32      133119       66544    e  W95 FAT16 (LBA)
/dev/mmcblk0p2          133120    29018111    14442496   83  Linux
/dev/mmcblk0p3        29018112    31115263     1048576   82  Linux swap / Solaris

swapはお好みでという感じです。Asteriskをswapアリでコンパイルしてみてもswapは使わなかったので、たぶん要りません。
上のリンクにも書いてありますが、まず自分のマイクロSDカードのデバイス名を見つけてください。ここでは/dev/sdbとします。間違えて他のデバイスを書き換えないように。

fdisk /dev/sdb

を実行し、もしすでに何らかのパーティションがある(普通ある)場合にはoコマンドで全部消します。
pコマンドでパーティションが無くなっていることを確認します。
nコマンドで新しいパーティションを作成し、pでプライマリ、1でパーティション番号1にします。
この時サイズ指定に+64Mと指定し、64MBのパーティションを作成します。
次にtコマンドでパーティションのIDを書き換えます。eを指定してWIN95 FAT16に指定します。
aコマンドで1番目のパーティション(今作ったやつ)をブート可能に設定します。
次にまたnコマンドで残りの容量をパーティション2として割当てます。このパーティションもプライマリに指定します。もし、swapを作りたい場合にはswapに割り当てる容量を差し引いた容量で作成しますが、swapが必要なければマイクロSDの残り全部を割当ます。

ファイルシステムを作成する

DOSパーティション(1)は

mkfs.vfat -F 16 /dev/sdb1

Linuxパーティション(2)は

mkfs.ext4 /dev/sdb2

のように指定して行います。これでマイクロSDの準備は完了。

Arch Linuxを入手・展開する

これも別なLinuxマシン上で実行します。基本的にアーカイブを入手してマイクロSDカード上に展開するだけです。ここでもマイクロSDカードは/dev/sdbとします。自分の環境にあわせて読み換えてください。

ブートローダ

まずブートローダを入手、展開します。

wget http://archlinuxarm.org/os/omap/BeagleBone-bootloader.tar.gz
mkdir boot
mount /dev/sdb1 boot
tar zxvf BeagleBone-bootloader.tar.gz -C boot
umount boot

エラー/ワーニングは気にしなくて大丈夫です。FAT上でUIDが設定できないためです。

Arch Linux本体

wget http://archlinuxarm.org/os/ArchLinuxARM-am33x-latest.tar.gz
mkdir root
mount /dev/sdb2 root
tar zxvf ArchLinuxARM-am33x-latest.tar.gz -C root
umount root

以上でマイクロSDカードの準備は完了です。念のためsyncしてからカードを抜いてください。

BeagleBone BlackをArch Linuxで起動する

マイクロSDカードをBeagleBone Blackに挿入して起動します。この時、S2スイッチを押しながら電源を投入します。これはBeagleBone BlackにマイクロSDからブートするように指示するためです。
無事に起動したらネットワークコネクタ側のLEDがパカパカしますので、ssh等でログインします。ユーザ/パスワードはroot/rootです。うまく起動しない場合にはシリアルコンソールで確認することができるのですが、別途FTDIブレイクアウトの3V品が必要になります。

Bootloaderを書き換える

このままでも使えることは使えるのですが、一旦、電源オフにして再起動するとオンボードのMMCから起動しようとして失敗するため、マイクロSDから起動するようにブートローダを書き換えてしまいます。これはArch Linuxのインストールと同じようにします。
BeagleBone Black上でまずはブートパーティションのバックアップを取ります。

cd /
mount /dev/mmcblk1p1 /mnt
cd mnt
tar cvf ~/bootloader_bakup.tar *
cd ..

こんな感じで、内蔵MMC(mmcblk1)のパーティション1(p1)をコピーしておきましょう。
次にArch Linuxのブートローダーを入手しこれをパーティション1に上書きします。

wget http://archlinuxarm.org/os/omap/BeagleBone-bootloader.tar.gz
tar zxvf BeagleBone-bootloader.tar.gz -C mnt
umount mnt

これで電源を切ってもマイクロSDカードのArch Linuxからブートしてくるようになります。
(Asteriskで使うならÅngströmが起動しなくても問題ありません)