BeagleBoardをSDカードからbootしてみることに。
そのためには"MLO","u-boot.bin","uImage","ルートファイルシステム(RFS)"が必要となる。
まずは起動に使用するSDカードの準備をします。当方が行った具体的な操作は以下になります。
SDカード(/dev/sdbがSDカードとする)からのブートに対応した第1パーテーションの作成
$ sudo fdisk /dev/sdb
command (m for help): p //←パーテーション状態を確認
デバイス | Boot | Start | End | Blocks | Id | System |
/dev/sdb | 1 | 1954 | 15689728 | c | W95 FAT32 (LBA) |
command (m for help): d //←新品にデフォルトで作成されているFATパーテーションの削除
selected partition 1
command (m for help): x //←fdiskをエキスパートモードに切り替える
expert command (m for help): h //←ヘッド数を設定
number of heads (1-256, default 82): 255 //←255ヘッドに
expert command (m for help): s //←セクタ/トラックを設定
number of sectors (1-63, default 17): 63 //←63セクタ/トラックに
warning: setting sector offset for DOS compatiblity
expert command (m for help): c //←シリンダを設定
number of cylinders (1-1048576, default 486): 15 //←15シリンダに
expert command (m for help): r //←エキスパートモードから抜ける
command (m for help): n //←新規パーテーション作成
command action
e extended
p primary partition (1-4)
p //←primaryを選択
partition number (1-4): 1 //←第1パーテーション
first cylinder (1-15 default 1): 1 //←先頭から
using default value 1
last cylinder or +size or +sizeM or +sizeK (1-15 default 15): 15
using default value 15
command (m for help): t //←パーテーションタイプの変更
selected partition 1
hex code (type L to list codes): c //←FAT32に切り替え
changed system type of partition 1 to c (W95 FAT32 (LBA))
command (m for help): a //←ブートフラグ設定
partition number (1-4): 1 //←第1パーテーションにブートフラグ設定
command (m for help): p //←最終確認としてパーテーション状態を確認
デバイス | Boot | Start | End | Blocks | Id | System |
/dev/sdb | * | 1 | 15 | 120487 | c | W95 FAT32 (LBA) |
command (m for help): w //←書き込んで終了
次にSDカード上にファイル・システムを作成します
この作業には「gparted」というGUIのツールを使います。
・インストール(インストールしていない場合)
$ sudo apt-get install gparted
・起動
$ sudo gparted
1.メニューから[GParted]-[デバイス]と選んで、デバイスを/dev/sdb(/dev/sdbがSDカードとする)に切り替えます。
2.第1パーテーションを選択して右クリック-[フォーマット]と選んで、FAT32を選びます。
※もし、右クリックで[フォーマット]が非表示の場合は、[パーティション]-[アンマウント]を実行してください。
3.未アロケートを選択して右クリック-[新規]を選んでください。
4.[新規パーテーションの作成]ウィンドウのファイルシステムを[ext3]に変更して[追加]を押す。
5.最後にメニューの[編集]から[全ての操作を適用]を選んで終了となります。
ここまででSDカードの下準備は終了です。
さて、今回はUbuntuをSDカードから起動しようとしているわけですが、
本来の目的は・・・BeagleBoardでAndroidを起動することなので
日経Linux2009年7月号(またもや?!)の付録のメディアを利用して簡単に済ませる事にしました。
最初にSDカードの第1パーテーションに"MLO"と"カーネル(uImage)"を転送する。
"MLO"は第1パーテーションの先頭に配置しなければなりませんので、第1パーテーションを初期化した直後に転送する必要があります。
※ここでもSDカードは/dev/sdbとする
・MLOの転送
$ sudo mount /dev/sdb1 /mnt //←第1パーテーションをマウントする
$ sudo cp /media/cdrom/article/toku3/MLO_revc_v3 /mnt/MLO //←転送する
続いて第1パーテーションに"カーネル(uImage)"を転送する。
・カーネル(uImage)の転送
$ sudo cp /media/cdrom/article/toku3/uImage /mnt //←転送する
$ sudo umount /mnt //←第1パーテーションをアンマウントする
さらに第2パーテーションに"ルートファイルシステム(RFS)"を転送する。
・ルートファイルシステム(RFS)の転送
$ sudo mount /dev/sdb2 /mnt //←第2パーテーションをマウントする
$ sudo tar xvzpf /media/cdrom/article/toku3/armel-rootfs-lxde-200905161138.tar -C
/mnt/
//転送する
ここまで終了したら、シリアルコンソールにログインをするためのツールが起動するように
/mnt/etc/event.d/に"ttyS2"というテキストファイルを作成する。
内容は
start on runlevel 2
start on runlevel 3
stop on runlevel 0
stop on runlevel 1
stop on runlevel 4
stop on runlevel 5
stop on runlevel 6
respawn
exec /sbin/getty -L 115200 ttyS2
とする。
なお、最終行のttyS2はシリアルUSB変換を使用する場合にはttyusb0とする必要がある。
USBイーサネットアダプタを使う場合には、起動直後にLANが利用できるように
/mnt/etc/network/interfacesに次の4行を追加すること。
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet dhcp
次に、/tmpにtmpfsがマウントされるように
/mnt/etc/fstabに以下の1行を追加する。
tmpfs /tmp tmpfs defaults 0 0
そして最後に付録のメディアからカーネル・ドライバ・モジュールを転送します。
・カーネルドライバモジュールの転送
$ sudo tar xvzpf /media/cdrom/article/toku3/omap3_modules.tar.gz -C /mnt/
//転送する
$ sudo umount /mnt //←第2パーテーションをアンマウントする
ここまで終わってやっと起動確認です。
BeagleBoardにSDカードを挿入してボードの電源ONしてください。
起動する際に、RS232Cで接続されているPCの通信ソフトを起動しておくとログが出てきます。
途中でカウントダウンがありますが、それが0になる前に"enter"キーを押下して以下のコマンドを送信してください。
# setenv bootcmd 'mmcinit; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000'
# setenv bootargs 'console=ttyS2,115200n8 console=tty0 root=/dev/mmcblk0p2
rootdelay=2
rootfstype=ext3 ro
omap-dss.def_disp=lcd omapfb.video_mode=1280x720MR-16@60'
# saveenv
# boot
これで起動すると思います。