2010/04/11

Ubuntu 8.04 LTSでBeagleboardにDebian lennyを導入してみる

今回はしばらく前に入手した Beagleboard(Rev. C3)にdebian lennyをインストールします。 alixでtracを稼働させていたのですが、パフォーマンスに満足いかなかったのでBeagleboardを試すことにしたのでした。

beagleboardに接続するSDカードはUbuntu 8.04 Hardyで作成します。 mkimageコマンドを除けばUbuntu 8.04を意識することはありませんが、その他のメモと一緒に気になった点をまとめました。

構成

今回作成した機器は次の通りです。

  • Beagleboard Rev. C3
  • SDカード1:Panasonic Class6 2GB
  • SDカード2:上海問屋オリジナル 150倍速 2GB
  • シリアルUSBケーブル: SRC06-USB
  • USBイーサネット: PCI UE-200TX-G

インストール

参考にしたのは http://elinux.org/BeagleBoardDebianで、 基本的には書かれている手順に従いました。 気になったところをメモしていきます

kermitのパラメータ

Ubuntu 8.04 Hardyとbeagleboardとの接続はUSBシリアルケーブル(SRC06-USB)を使っています。 Ubuntu側ではckermitパッケージを導入し、/usr/bin/kermitを使っていますが、connectするために次のようなコマンドを入力しています。

$ kermit
C-Kermit> set port /dev/ttyUSB0
C-Kermit> set carrier-watch off
C-Kermit> set speed 115200 

kermit画面出力

Type ? or HELP for help.
(/home/yasu/) C-Kermit>set port /dev/ttyUSB0
(/home/yasu/) C-Kermit>set carrier-watch off
(/home/yasu/) C-Kermit>set speed 115200 
/dev/ttyUSB0, 115200 bps
(/home/yasu/) C-Kermit>connect
Connecting to /dev/ttyUSB0, speed 115200
SDカードのパーティションについて

ブートローダを配置するためにFATフォーマットで最初のパーティションに128〜256MB程度の領域を確保します。 この時に残りの領域をext2などでフォーマットしてしまうと、参考にした手順で Guided - Use the largest continuous free space という選択肢は表示されません。

この場合はManualを選択し、ext3でフォーマットし、'/'にマウントさせ、bootflagをONに設定する必要があります。 簡単ですが、面倒だと思えば、使わないパーティションは削除し、空きスペースを割り当てずにbeagleboardの電源を入れるのがお勧めです。

netinstall.cmd, boot.scrファイルの配置場所

前のセクションからの流れで作業をしていれば問題ありませんが、boot.scrファイルはSDカードに作成したFATパーティションに配置します。 そのため、参考にした手順では /media/disk に移動した上で、netinstall.cmdファイルを配置する事になります。

nanoはテキストエディタで、これが便利であれば良いですが、単純にcatを使ったりviを使ってnetinstall.cmdファイルを作成することもできるでしょう。

mkimageコマンド

beagleboardの起動イメージを作成するために、mkimageコマンドを使う手順があります。

debian lennyや、最近のUbuntuでは uboot-mkimage パッケージが準備されているため、問題はありません。 しかし8.04 (Hardy)では手動でmkimageコマンドをインストールする必要があります。

手順自体は簡単で、debianや ubuntuのuboot-mkimageパッケージのページから、sourceファイルを展開しコンパイルするだけです。

$ tar xvzf uboot-mkimage_0.4.tar.gz
$ cd uboot-mkimage
make

カレントディレクトリにmkimageコマンドが作成されるため、頻繁に使うようであれば/usr/local/binなどに移動させるのが良いでしょう。

リブート後の作業について

インストールが一通り終ると、インストーラはbeagleboardを再起動します。 画面に Hit any key to stop autoboot: 10 のメッセージが出ている間に、適当なキーを押して処理を停止させ、電源を落すなどして一端SDカードを抜き、デスクトップ(Ubuntu 8.04 Hardy)側にSDカードを移します。

ここで適当なマウントポイント(例えば/media/disk)にFATパーティションをマウントし、normal.cmdファイルを作成していきます。

normal.cmd, boot.scrファイルの作成

/media/disk等にFAT領域をマウントし、そこへcdすると、既存のboot.scrファイルが存在するはずです。 もし再び同じSDカードを使ってdebianをインストールするのであれば、boot.scrファイルは保存しておいた方が便利かもしれません。

インストール後、マウントしたFAT領域の状態

-rwxr-xr-x 1 root root     310 2010-04-11 09:01 boot.scr
-rwxr-xr-x 1 root root 6023680 2010-01-22 21:53 initrd
-rwxr-xr-x 1 root root 8388608 2010-04-11 08:42 initrd.pad
-rwxr-xr-x 1 root root     238 2010-04-11 08:50 netinstall.cmd
-rwxr-xr-x 1 root root  188660 2010-04-11 08:57 u-boot.bin
-rwxr-xr-x 1 root root 2989884 2010-04-11 08:48 uImage

boot.scrファイルは適当な名前に変更して、normal.cmdファイルを作成し、参考にした手順の通りにboot.scrファイルを作成します。 最終的にはFAT領域は次のような内容になりました。

boot.scrファイルを作成し直した後のFAT領域の状態

-rwxr-xr-x 1 root root     245 2010-04-11 11:56 boot.scr
-rwxr-xr-x 1 root root 6023680 2010-01-22 21:53 initrd
-rwxr-xr-x 1 root root 8388608 2010-04-11 08:42 initrd.pad
-rwxr-xr-x 1 root root     310 2010-04-11 09:01 inst.boot.scr.old
-rwxr-xr-x 1 root root     238 2010-04-11 08:50 netinstall.cmd
-rwxr-xr-x 1 root root     173 2010-04-11 11:52 normal.cmd
-rwxr-xr-x 1 root root  188660 2010-04-11 08:57 u-boot.bin
-rwxr-xr-x 1 root root 2989884 2010-04-11 08:48 uImage
マニュアルで2番目以外のパーティションに導入した場合の対応

normal.cmdファイルにはパーティションを指定する記述があるため、3番目などに導入した場合にはroot=/dev/mmcblk0p3のように変更する必要があります。

uImageファイルの置き換え

ここまでの手順ではインストールに使ったカーネルイメージ(uImage)を起動するようになっています。

基本的にはuImageファイルを置き換える事でカーネルを切り替えることができるはずです。 Beagleboard: install kernel-imageではinstall-me.shを入手して実行するように書かれています。

この install-me.sh を読むと実行するためには、いくつかの前提条件があります。事前にチェックされていないので予期しないエラーになる可能性もあるでしょう。

  • カレントディレクトリに"temp"ディレクトリを作成するための書き込み権限と数十MBの余裕があること
  • SDカードのFAT領域は/dev/mmcblk0p1としてmountできること (既に他の領域にマウントしていないこと)

副作用としては次のようなものがありそうです。

  • /tmp/bootディレクトリが削除されること
  • uboot-mkimageパッケージが導入されること

まぁエラーが起きても問題の個所を修正して繰り返す事で問題なく修正できると思いますが、念のためにメモしておきます。 またinstall-me.shを実行した際の出力メッセージも下記にメモしておきます。

install-me.sh実行時の出力

Installing uboot-mkimage
Reading package lists... Done
Building dependency tree       
Reading state information... Done
uboot-mkimage is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Downloading Recommended Kernel
--2010-04-11 18:22:17--  http://rcn-ee.net/deb/kernel/beagle/lenny/v2.6.32.6-x6.2/linux-image-2.6.32.6-x6.2_1.0lenny_armel.deb
Resolving rcn-ee.net... 69.163.149.169
Connecting to rcn-ee.net|69.163.149.169|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10814762 (10M) [application/x-debian-package]
Saving to: `linux-image-2.6.32.6-x6.2_1.0lenny_armel.deb'

100%[===============================================================================>] 10,814,762   566K/s   in 19s     

2010-04-11 18:22:36 (551 KB/s) - `linux-image-2.6.32.6-x6.2_1.0lenny_armel.deb' saved [10814762/10814762]

Installing linux-image
Selecting previously deselected package linux-image-2.6.32.6-x6.2.
(Reading database ... 21583 files and directories currently installed.)
Unpacking linux-image-2.6.32.6-x6.2 (from linux-image-2.6.32.6-x6.2_1.0lenny_armel.deb) ...
Setting up linux-image-2.6.32.6-x6.2 (1.0lenny) ...
Mounting Fat32 partition
Extracting vmlinuz
Backing up Previous uImage
Creating uImage from vmlinuz
Image Name:   2.6.32.6-x6.2
Created:      Sun Apr 11 18:23:15 2010
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    3609320 Bytes = 3524.73 kB = 3.44 MB
Load Address: 0x80008000
Entry Point:  0x80008000
Please Reboot

ここからはRTCもないので、ntpdate, openntpdやらopenssh-serverやらsudoなどをインストールして環境を整えていかなければいけません。 とりあえず試している範囲では十分にtrac and subversionサーバとして活躍してくれそうです。

まとめ

先頭のFAT領域を最初はインストーラー、次はuImageをそのまま使って起動用領域にする手法はシンプルで便利です。

alixに比べてパワフルなのでtracとsubversionのサーバにしようとしましたが、USB-Ethernetが一度ダウンしてしまい、安定性については少し懸念がありますが、CPUのワークロードに依存する処理については任せるしかないと判断しています。

beagleboardに拡張ボードもありますが、ネットワークへはSPI経由での接続ですし、スピードは期待できないでしょう。安定性はどうなんでしょうね。

アクリル板でケースを作って、しばらく稼働させてみようと思います。

0 件のコメント: