»

玄箱PROの使い方 第9回 2008年9月19日(金)

はじめに

今回は玄箱PROのブートローダとして使用されているu-bootについて見ていきたいと思います。u-bootの設定を変更することでいろいろなことが出来るようになります。例えば、カーネルやルートファイルシステムをフラッシュメモリやHDD以外の場所からロードすることも可能です。今回はUSBメモリをルートファイルシステムとして使う実験をしてみます。

nvramコマンド

玄箱PROの内蔵フラッシュメモリに格納されているLinux環境上に、nvramコマンドが存在します。このコマンドを利用すると、Linuxが起動した状態でu-bootの設定変更が可能です。今回はこのコマンドを利用してu-bootの設定を変更してみたいと思います。

※HDDからブートされていることを前提として進めていきます。

はじめにフラッシュメモリからnvramコマンドをHDDドライブへコピーします。まずはフラッシュメモリをマウントするためのディレクトリを作成するために ”mkdir /mnt/flash” を実行します。そこへ ”mount /dev/mtdblock2 /mnt/flash” を実行し、フラッシュメモリをマウントします。次に ”cp /mnt/flash/usr/local/sbin/nvram /usr/local/sbin” を実行し、フラッシュメモリからnvramをHDD側にコピーします。コピーできたら、”umount /mnt/flash/” を実行し、フラッシュメモリをアンマウントしておきます。

”nvram -help” と入力してヘルプを見てみると書式がわかります。


u-bootの環境変数を見るために ”nvram -c printenv” を実行します。u-bootの環境変数を確認することが出来ます。環境変数を変更する際の書式は ”nvram -c  set 変数名 値” となります。環境変数ipaddrを変更する場合は ”nvram -c set ipaddr 192.168.1.1” となります。

USBメモリをルートファイルシステムにする

今回はu-bootの環境変数を変更し、USBメモリをルートファイルシステムとして動作させる実験をします。ミスをしてしまうことも考えられるので、SCON-KITを用意しておくのがよいです。

はじめにUSBメモリを用意し、ルートファイルシステムを書き込む準備をします。まずは玄箱PROがUSBメモリをどのように認識するか確認します。USBメモリを挿し込むと ”sdb” として認識することがわかりました。


では、”fdisk /dev/sdb” を実行し、USBメモリにパーティションを作成してLinuxで使用できるようにします。次に ”mkfs.ext3 /dev/sdb1” を実行して、ファイルシステムを作成します。


続いて、玄箱PROに付属していたhddrootfs.tar.gzを使用してUSBメモリにルートファイルシステムを作成します。PCからネットワーク経由で玄箱PROにhddrootfs.tar.gzをコピーします。


コピーできたら、USBメモリを/mnt/flashにマウントし、”tar xzvf  hddrootfs.tar.gz -C /mnt/flash” を実行して、USBメモリにファイルを展開します。


ファイルが展開されるまで、多少時間がかかります。

ルートファイルシステムをUSBメモリへ変更

USBメモリにファイルを展開できたら、”nvram -c set bootargs ‘console=ttyS0,115200 root=/dev/sdb1 rootdelay=15 rw panic=5 BOOTVER=1.09′ ” を実行し、u-bootの環境変数を書き換えます。


USBメモリからHDDへルートファイルシステムへ戻すことを考えて、USBメモリにもnvramコマンドをコピーしておきます。


最後に/etc/init.d/mount_share.shを修正します。14行目から17行目をコメントアウトし、保存します。



ルートファイルシステムの確認

準備ができたら、rebootコマンドを実行して玄箱PROを再起動します。起動できたら、ログインしてdfコマンドを実行してみると、USBメモリのルートファイルシステムが使用されていることがわかります。


HDDのルートファイルシステムに戻すには ”nvram -c set bootargs ‘console=ttyS0,115200 root=/dev/sda2 rw panic=5 BOOTVER=1.09′ ” を実行します。

さいごに

今回はu-bootの環境変数を変更し、USBメモリをルートファイルシステムとして動作させてみました。u-bootの環境変数を変更すると、いろいろなことが出来るので、試してみると面白いと思います。