あれのーと

らくがきちょうです。

Ubuntu on beagleboard

beagleboardUbuntuを動かすにはと言うお話。もう、結構公開されているので余りためにはなりません。そんなに難しいものではないです。以下のURLを参考にすれば、はいおしまい。、、、、なのですが、少しばかりコメントを加えながら解説。




参考にしたURL
http://elinux.org/BeagleBoardBeginners
http://elinux.org/BeagleBoardUbuntu
https://wiki.ubuntu.com/ARM/RootfsFromScratch

用意したもの

DigiKeyから購入。\17,000ぐらいだったと

  • Ubuntu8.10が入っているノート(SDカードリーダ付き):1台

→8.04の場合は、いろいろあったので8.10にアップグレードしました。

  • SDカード(8G)

SDHCのやつです。4Gあれば、ひとまず安心ですが。

DigiKeyから購入。値段は忘れました。

  • USBネットワークデバイス

→USB-TXC(http://corega.jp/product/list/lanadp/feusbtxc.htm)を準備。安かったんだもの。

やり方
まずは母艦の作業で。

  • rootfsの作成

https://wiki.ubuntu.com/ARM/RootfsFromScratch

sudo ./build-arm-rootfs --fqdn beagleboard --login ubuntu --password ubuntu --imagesize 3G --seed build-essential,openssh-server,linux-firmware

    • seedは参考にしたURLに指定されたseedを指定すればいい。今回は画面まわりは不要なので、開発環境とopenssh、usbのwireless環境を導入。これで、大体C2Dの環境で1時間とちょっと。
  • SDカードフォーマット

http://elinux.org/BeagleBoardBeginners#SD_card_setup
rootfsを作っている間にこの作業。なれればすぐに終わります。少しハマったところは、Beagleboardの問題でなくて母艦にしていたノートPC。このノートPCにあるSDHCカードコントローラが8.04ではI/O errorが頻発して、大量のデータが書き込めない状況となっていました。
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/247819

なので、最初は8.10のLiveCDで起動して、HDDをマウントしてコピー云々、、、、としていましたが、ええい面倒くさいとなって結局8.10に上げてしまいました。

それ以外で注意するところは、8.10のfdiskのサイズ指定で[+50]の様な+シリンダサイズの表記ができなくなっていました。なのでシリンダ終点を直指定で。なんででしょうかね。

結局、FAT32のエリアとext3のエリアでこんな感じに。

デバイス Boot Start End Blocks Id System
/dev/mmcblk0p1 * 1 51 409626 c W95 FAT32 (LBA)
/dev/mmcblk0p2 52 980 7462192+ 83 Linux

  • uImage

http://elinux.org/BeagleBoardUbuntu#Development_PC:_Setup_SD_uboot.2FuImage_Partition
FAT32のエリアをマウントしてuImageをwgetしてリネーム。

  • rootfsの展開

http://elinux.org/BeagleBoardUbuntu#Development_PC:_Setup_SD_ext2.2Fext3_Partition
ここは間違えないでしょう。

  • ネットワーク・シリアル設定

http://elinux.org/BeagleBoardUbuntu#Enable_Network_Access
http://elinux.org/BeagleBoardUbuntu#Login_thru_Serial_Port
これも知っている方は普通にできるかと。まだ/mnt配下にあると思うので、書き込む先を気をつければ。

  • u-bootのアップグレード

http://elinux.org/BeagleBoardUbuntu#Upgrade_U-Boot
Advancedにかかれているのですが、現状のu-boot+uImageでは、USB otgに接続するデバイスが認識できないため、これはやっておいた方が良いかと。

ここまでが、母艦での作業。SDHCを抜いてbeagleboardに差します。
beagleboardの電源ON。"Hit any key to stop autoboot"でESCなどで起動を止めます。

  • u-bootパラメタの設定

http://elinux.org/BeagleBoardUbuntu#Beagleboard:_Setup_U-boot_for_boot
私の場合ヘッドレスなので、こんな感じで設定。

#bootcmd=mmcinit; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000
#bootargs=console=ttyS2,115200n8 console=tty0 root=/dev/mmcblk0p2 rootdelay=2 rootfstype=ext3 ro
#saveenv

  • 起動!

パラメタを保存したら起動です。

#boot

うまく起動すれば、rootfsを作成する時に設定したユーザ名とパスワードでログイン出来ます。

  • 時間の設定

起動後はおそらく時間がおかしいと思うので、dateで設定。H/Wにも書き込み出来るようです。

ubuntu@beagleboard:~$ sudo date --set="2009/6/1 2:28"
2009年 6月 1日 月曜日 02:28:00 JST
ubuntu@beagleboard:~$ date
2009年 6月 1日 月曜日 02:28:02 JST
ubuntu@beagleboard:~$ sudo hwclock --systohc
[sudo] password for ubuntu:
ubuntu@beagleboard:~$ date
2009年 6月 1日 月曜日 02:28:27 JST

  • カーネルアップデート

http://elinux.org/BeagleBoardUbuntu#Beagleboard:_Install_Kernel_Image
やっておきます。シェルなので簡単かと。やっていることは、新しいkernel-image**.debを落としてきて、uboot-mkimageもインストール。mkimageでkernel-imageからuImageを作成して、FAT32のエリアをマウントして移動。問題が無ければ再起動後にカーネルはアップデート済みです。

  • パッケージの入手

デフォルトで/etc/apt/sources.listには

deb http://ports.ubuntu.com/ubuntu-ports jaunty main universe

と書かれていて、armelのパッケージがあればapt-get出来るようです。