Wiiリモコンで操作できるプレゼン・マシンの製作(1) ―― オリジナルのAndroidマシンを自作する
tag: 組み込み ディジタル・デザイン
技術解説 2009年9月11日
●SDカードを準備する
OMAP3系のボードはSDカードの起動に対応しており,本稿での起動もSDカードで行います.SDカードの構成を図1に示します.
SDカードの起動を行うには,先頭パーティションを決まったシリンダ・ヘッド構成でかつファイル・システムをvfat(FAT32)にする必要があります.まず,SDカードをUbuntuのパソコンに挿入し,dmesgコマンドでSDカードのデバイス・ノードを確認します.
$ dmesg | tail
出力されたメッセージの最終行を確認します.
[1359001.124059] sdc: sdc1
この場合のSDカードそのもののデバイス・ノードは"/dev/sdc"です. 以後の説明では,このデバイス・ノードで記載します.
※重要:SDカードのデバイス・ノードは環境によって異なるので注意してください.
パーティションやファイル・システムを作成する場合,SDカードをアンマウントする必要があります.Ubuntuはデフォルト設定ではSDカードを自動でマウントするため,いったんアンマウントします.
$ df -h
Filesystem サイズ 使用 残り 使用% マウント位置
(中略)
/dev/sdc1 1.9G 0 1.9G 0% /media/disk
$ sudo umount /media/disk
次に,fdiskコマンドを実行し,パーティションを作成していきます.
$ sudo fdisk /dev/sdc
fdiskのコマンドは,以下のように入力します.
コマンド ( m でヘルプ ) : p
Disk / dev/sdc : 1967 MB, 1967128576 bytes
57 heads, 56 sectors/track, 1203 cylinders
Units = シリンダ数 of 3192 * 512 = 1634304 bytes
Disk identifier : 0x00000000
デバイス Boot Start End Blocks Id System
/dev/sdc1 1 1204 1920955+ 6 FAT16
コマンド ( m でヘルプ) : d ← 既存のパーティションは削除する
Selected partition 1
コマンド ( m でヘルプ) : x ←エキスパート・モードでシリンダとヘッドを調整する
上級者コマンド ( m でヘルプ ) : h
ヘッド数 ( 1-256, default 57 ): 255
上級者コマンド ( m でヘルプ ) : s
セクタ数 (1-63, default 56) : 63
警告: DOS 互換のためのセクタ・オフセットを設定します
上級者コマンド ( m でヘルプ ) : c
シリンダ数 (1-1048576, default 1203): 239 ※3
上級者コマンド ( m でヘルプ ) : r ←エキスパート・モードから抜ける
コマンド ( m でヘルプ ) : n ←パーティション1は64Mバイトで作成する
コマンド・アクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4 ) : 1
最初 シリンダ (1-239, default 1) : 1
Last シリンダ, +シリンダ数 or +size { K,M,G } ( 1-239, default 239 ) : +64M
コマンド ( m でヘルプ ) : n ←パーティション2は残りのすべてを割り当てる
コマンド・アクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4) : 2
最初 シリンダ (10-239, default 10) :
Using default value 10
Last シリンダ, +シリンダ数 or +size{ K,M,G } (10-239, default 239 ) :
Using default value 239
コマンド (m でヘルプ): t ←パーティション・タイプをFAT32に変更する
領域番号 (1-4): 1
16進数コード ( L コマンドでコードリスト表示 ) : c
領域のシステム・タイプを 1 から c ( W95 FAT32 ( LBA ) ) に変更しました
コマンド ( m でヘルプ ) : a ← パーティション1をブート可能にする
領域番号 (1-4): 1
コマンド (m でヘルプ) : p ← 作成したパーティションを確認する
Disk / dev / sdc: 1967 MB, 1967128576 bytes
255 heads, 63 sectors/track, 239 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
デバイス Boot Start End Blocks Id System
/dev/sdc1 * 1 9 72261 c W95 FAT32 (LBA)
/dev/sdc2 10 239 1847475 83 Linux
コマンド (m でヘルプ): w ← テーブルをディスクに書き込み,終了する
※3 全体サイズ(1967128576) ÷ 255 ÷ 63 ÷ 512 (=239.156427015) を切り捨てで計算した値を指定します.
これで二つのパーティションが作られました.パーティション1のデバイス・ノードは"/dev/sdc1",パーティション2のデバイス・ノードは"/dev/sdc2"となります.
次に,パーティション1にvfat(FAT32)のファイル・システムを生成します.
$ sudo mkfs.vfat -F 32 /dev/sdc1 -n LABEL1
続いて,パーティション2にext3のファイル・システムを生成します.
$ sudo mkfs.ext3 -L LABEL2 /dev/sdc2
SDカードを抜き差しし,dfコマンドでファイル・システムが正しく生成されたことを確認しましょう.
$ df -hT
Filesystem Type サイズ 使用 残り 使用% マウント位置
(中略)
/dev/sdc2 ext3 1.8G 35M 1.7G 3% /media/LABEL2
/dev/sdc1 vfat 70M 512 70M 1% /media/LABEL1
次に,パーティション1にブート・ローダ(xloaderとu-boot)を格納します.通常はどちらもソースをビルドしたものを格納しますが,ここではビルド済みのバイナリをbeagleboard.org公式のGoogleプロジェクトからダウンロードすることにします.
まず,xloarder(MLO)を格納します.
$ wget http://beagleboard.googlecode.com/files/ MLO_revc_v3
$ cp MLO_revc_v3.bin
/media/LABEL1/MLO ←コピー先のファイル名を必ず"MLO"にします
続いてu-bootを格納します.
$ wget http://beagleboard.googlecode.com/files/u-boot_revc_v3.bin
$ cp u-boot_revc_v3.bin
/media/LABEL1/u-boot.bin ←コピー先のファイル名を必ず"u-boot.bin"にします
以上でSDカードによる起動の準備が整いました.