FreeBSD、組み込みアーキテクチャ移植の変遷

MIPS移植について説明するWarner Losh氏

FreeBSDは、主にi386やamd64などのアーキテクチャに注力してきたが、その一方で、ほかのアーキテクチャへの移植作業も随時進められている。

MIPSへの最初の移植作業は、Juniper NetworksがFreeBSD 3系で取り組んだものだ。同社はFreeBSDをベースとして開発したOSを使ったネットワークアプライアンスの開発や販売を手がけている。同社の開発した移植関連コードは1990年の後半にはコミュニティに公開されたが、開発関係者の時間不足と一連のハードウェア不足からFreeBSD Projectからの公開には至らなかった。1999年にはMIPS libcおよびビルドツールサポートが追加されたものの、2002年にはサポートが削除されるなど、MIPS向けの開発は停滞していた。

その後、組み込みでの採用要求が徐々に高まるにつれて、MIPSやARM、PowerPCなどのプロセッサへの対応が求められるようになり、再び開発が進められることになる。最初のリニューアルスタートは2002年にJulie Mallett氏によって進められたが、この開発は完全に安定するところまでには至らなかった。この取り組みは2005年には終了し、2006年に若干の作業が行われるにとどまっている。

FreeBSD/mips 32/64両対応 - 開発は活発

現在のFreeBSD/mipsにつながった開発の源流は、BSDCan 2006においてWarner Losh氏、Peter Wemm氏、John Baldwin氏が推進した取り組みだ。2006年の後半には、FreeBSD/mipsがエミュレートMaltaボードで起動するところまで開発が進んだ。2007年には、実機(ADM5120, IDT RC32434)でシングルユーザモードでの動作が確認された。

その間、FreeBSDをMIPSに移植したJuniper Systemsは、同社で採用しているFreeBSDベースのルータOS JunOSをFreeBSD 4系ベースからFreeBSD 6.1ベースへ移行。同時にMIPS移植コードも更新し、移植コードをWarner氏などの開発者に公開した。2007年9月にはコードレビューが開始され、フルタイムで開発に従事するようになったWarner氏らの手によってマージされることになる。このマージで32ビットカーネルにおいてマルチユーザモードが起動するようになる。これが現在のFreeBSD/mipsだ。

現在ではmips32、mips32r2、mips64、mips64r2やそれに類するプロセッサを対象として開発が進められている。バイナリはo32だが、64ビットプロセッサでも動作するようにハックが追加されており、32/64の両ビットに対応している。動作試験は実施されていないものの、SMPサポートはすでに取り込まれている。現在サポートされているハードウェアは、ADMTek ADM5120、IDT RC32432、Broadcomm MIPS、MIPS 4Ke coreなど。RMI au1xxxへの移植作業は現在進行中だ。今後の開発課題としては、N32/N64 ABIのサポート、ツールチェーンにおけるマルチライブラリのサポート、QEMUサポーチ、Plat'Home OpenMicroServerのサポートなどが挙げられている。

クロス開発ツールの改善、将来的にはフラッシュファイルシステムの開発

MIPSに限定されずに組み込み向けの開発課題ということになると、クロスOS開発の向上、クロスプラットフォームPorts Collectionの改善、フラッシュファイルシステムサポートの実現、/etc/rc.dの最適化、さらに多くのハードウェアの対応などが挙げられる。目処はたっていないが、組み込みのみならずSSDの普及もあり、フラッシュファイルシステムサポートは今後数年の間、実験的取り組みが活発化する注目ポイントになるだろう。

こうしたFreeBSDの組み込み対応は、一般のユーザや開発者がすぐに手元で試せるというものではないが、対応するハードウェアが増えれば国内で販売されているアプライアンスにFreeBSD/mipsやFreeBSD/arm、FreeBSD/powerpcをインストールして活用できるようになる。現在の開発のアクティビティを考えると、それほど未来の話ではなさそうだ。組み込み用途でFreeBSDの採用を検討している場合には、現在の開発に注目しておきたい。