はじめに
連載5回目の今回からは,オリジナルファームウェアの開発方法をご紹介していきます。
ぷらっとホームが提供するファームウェアは,多くのお客様にご満足いただけるように汎用的な作りを心がけていますが,アプライアンス製品のベースハードウェアのように,あらかじめ特定のソフトウェアや設定を入れ込みたい場合には,オリジナルファームウェアの開発を行うことで,より便利に利用することができます。
また,公式ファームウェアではあらかじめ無効に設定されているカーネル機能を試したいという場合にも,本連載でご紹介する手順が有効です。
オリジナルファームウェアで変更できること
ファームウェアとは,Linuxカーネルとカーネル以外のいわゆるユーザランドをRAMディスク用にイメージ化したものを結合したファイルです。ファームウェアを構成する要素はすべて変更可能ですが,代表的な例をいくつかご紹介します。
初期設定ファイル
OpenBlockS 600には,本体のINITボタンを押しながら電源投入することで,ファームウェアの初期設定状態で起動する機能があります。この初期設定ファイルを変更することで,カスタマイズされたファームウェアでもINITボタンを押しながらの電源投入で完全な初期状態でのシステム起動が可能となります。
コマンド,ライブラリ
RAMディスクイメージに含まれるコマンド,ライブラリは,SSD/Linuxのソースツリーに含まれるものから必要な物を抽出して取り込んでいますが,これも必要に応じて増減が可能です。またもちろん,独自に開発したオリジナルプログラムを取り込むこともできます。
カーネルコンフィグレーション
無効になっている項目の有効化や,カーネルへのパッチ適用などの操作が可能です。
開発環境について
OpenBlockS 600に標準搭載されているSSD/Linuxは,ファームウェアの開発環境としての機能も持っています。オープンソース/無償での公開を行っておりますので,追加費用なしで開発を行うことができます。
クロス開発環境
VMware PlayerやVMware Serverで利用可能な,仮想マシンのイメージファイルとして提供しています。i386アーキテクチャの仮想マシン上で,OpenBlockS 600向けのPowerPCバイナリを出力可能なクロスコンパイラを利用できます。クロス開発のために若干の予備知識が必要な場面もありますが,コンパイルが高速なため日常での開発が快適に行えます。
セルフ開発環境
i386上のクロス開発に対して,OpenBlockS 600上で行う開発がセルフ開発です。コンパイル速度が遅いのが弱点ですが,クロス開発とは違い,特に予備知識がなくてもi386環境のLinuxに近いイメージで開発を進めることができますので,初めてOpenBlockSを使用する方にも着手しやすい方法です。
開発を始める
さっそく開発環境を用意し,開発手順の紹介に進みたいと思います。本連載では,クロス開発環境を前提にしていますので,ぷらっとホーム技術情報ページ注1から仮想マシンのイメージファイルをダウンロードしてください。仮想マシンを起動すると(図1),初期状態ではNATモードで動作し,SSHサーバが起動した状態になります。VMware PlayerまたはVMware Serverのインストール,使用方法は,それぞれのドキュメントを参照してください。
環境設定
開発を始めるにあたって,CVSサーバへの接続設定(リスト1),コンパイルオプションの設定(リスト2)が最低限必要になってきます。CVSサーバの設定は,規定値がコメントアウトで記述されているので,行頭の「#」を削除し設定を有効にするだけです。コンパイルオプションの設定は,開発ターゲットのアーキテクチャ指定と,できあがったバイナリの保存先の指定が必要になります。
リスト1 CVSサーバへの接続設定(/etc/profile.d/ssdlinux_dev.shからの抜粋)
CVSROOT=:pserver:anoncvs@cvs.plathome.co.jp:/cvs/ssdlinux
CVS_RSH=rsh
export CVSROOT CVS_RSH
リスト2 コンパイルオプションの設定(/etc/mk.confからの抜粋)
# Cross Compile for OpenBlockS
CROSS_BUILD?= powerpc
DESTDIR?= /home/dest-powerpc
RELEASEDIR?= /home/release-powerpc
# OPENBLOCKS 'obs50','obs200','obs266' or 'none'
OPENBLOCKS?= obs600

