【レポート】
組み込みデバイスでは、初期レベルの起動処理にU-Bootが使われることも多い。U-BootはもともとPowerPC向けに開発されたもので、以前はPPCBootと呼ばれていたブートローダだ。フラッシュなどの永続的デバイスに焼き付けられ、初期レベルの起動処理に活用される。すでに多くの組み込みデバイスで採用されているほか、U-Boot自体がGPLv2で公開されているという特徴がある。いわば組み込みデバイスにおける汎用ブートローダとしてはデファクトスタンダードだ。対応しているアーキテクチャもPowerPC以外にARM、MIPS、SH、NIOS、AVR32、ColdFire、MicroBlazem、BlackFinなど多岐に渡り、起動できるOSの種類も多い。
U-Bootはフラッシュメディアからのシステム起動はもちろん、ハードディスクからの起動、ネットワーク経由からの起動、ディスクイメージからの起動、ファイルシステムからの起動などさまざまな方法をサポートし、さらに診断機能や自動イメージアップデート機能など、初期レベルのブートローダとしては高機能という特徴もある。
最近、FreeBSDにこのU-Bootにネイティブ対応する機能が追加された。従来の方法と違い、FreeBSDの方から直接U-Bootを活用するものだ。これに合わせてU-Bootの方にも変更が加えられている。同機能によって組み込み開発における起動処理実装の負担が軽減され、さらに統一された起動UIが実現されることになる。BSDCan2008では、開発を担当したRafal Jaworowski氏から説明が行われた。
FreeBSDの起動プロセスは大枠でまとめると次のとおりだ。
FreeBSDでは、loader(8)の時点で読み込むカーネルモジュールを指定したり、カーネル内で使う環境変数kenv(9)値の設定、起動パラメータの指定などを行っている。アーキテクチャが違う場合でも、loader(8)のインタフェースに統合することで統一された起動UIを実現している。しかし、loader(8)で使っているH/Wの機能は、i386/amd64のようなアーキテクチャではBIOSで用意されているが、組み込みデバイスではそもそも用意されていないことも多い。この仕組みのまま組み込みデバイスにFreeBSDを追加するとなると、アーキテクチャ/ボードごとに起動処理を開発する必要がでてくる。
|
|
After relocation to RAM - BSDCan2008 Rafal Jaworowski氏発表資料より抜粋 |
U-Boot memory layout - BSDCan2008 Rafal Jaworowski氏発表資料より抜粋 |
FreeBSDとU-Bootを組み合わせて使う場合、基本的に次の3つの方法が考えられる。
1つめの方法で直接カーネルを呼ぶこともできるし、2つめのようにdevel/u-bootを使ってFreeBSDカーネルにヘッダを追加して起動できるようにする方法もあるが、これら方法ではloader(8)で実施している処理ができなくなるという問題がある。また、アーキテクチャ/ボードごとに起動処理を記述することになり、開発が手間という問題もある。そこで、BIOSの代わりにU-Bootの機能を使ってloader(8)を動作させようというのが、今回の開発のアイディアだ。上記3つめの方法がこれにあたる。
loader(8)からBIOSを叩くのではなく、U-Bootを叩いて処理を行えば、組み込みデバイスでi386/amd64と同じように起動処理を実現できるようになる。最新のU-Bootはすでにこの機能に対応している。アーキテクチャ/ボードごとにU-Bootの特定の機能をコールするファイルを作成するだけで良いため、最低限の労力で多くのボードに対応できるという利点がある。
すでにFreeBSDにU-Bootをサポートするコードが追加されている(sys/boot/uboot)。執筆現在のところ、U-Bootサポートが追加されているのはPowerPCアーキテクチャだが、今後MIPSやARMも必要に応じてコネクションコードが追加されるとみられる。
今回このアプローチについて発表したRafal Jaworowski氏はU-Bootの開発者であり、FreeBSDの開発者でもある。今回のアプローチは、do_bootm()ルーチンを使ったり、mkimageを使ったりする従来のアプローチとは異なるもので、FreeBSD loader(8)でネイティブに実装されたものだが、仕組みはシンプルで汎用性が高く、loader(8)の実装向けに整備されたAPIはFreeBSDのみならず他のOSでも活用できるとされている。今後はFreeBSD以外のOSにも同アプローチが実装されていくものとみられる。
FreeBSD/mipsの開発が一定の成果を納めつつあり、組み込み開発に勢いがあることから、これから特にMIPSやARM、PowerPCを中心に対応するボードが随時追加されることになるとみられる。loader(8)からU-Bootを使う機能が追加されたことで、起動処理の開発負荷が軽減され、対応ボード増加を支援することになるだろう。
| 問題報告システムをより使いやすいものにするには? - BSDCan2008 [2008/6/3] |
| 急成長! FreeBSD/mips対応アプライアンス - BSDCan2008 [2008/6/3] |
| Jail + リソース制限機能、FreeBSD 8で登場か - BSDCan2008 [2008/6/3] |
| FreeBSD 7、1500%ピーク性能改善の裏にあるもの - AsiaBSDCon 2008 [2008/4/4] |
| GEOMでジャーナリング、UFSの機能を柔軟に拡張 - AsiaBSDCon 2008 [2008/4/4] |
| f.root-servers.netを支えるFreeBSDとBIND9 - AsiaBSDCon 2008 [2008/4/4] |
| 使いやすさ抜群! FreeBSDベースのデスクトップOS PC-BSD - AsiaBSDCon 2008 [2008/4/4] |
| FreeBSD 7.0登場 - 高負荷時ピーク性能が1500%改善 [2008/2/28] |
| FreeBSD 6.3登場 - 2010年1月セキュリティ対応期限 [2008/1/20] |
| 超高速HTTPアクセラレータ最新版"Varnish 1.1"登場 [2007/7/23] |
| 備えあれば憂いなし - pfSense/pfSyncでネットワーク管理を容易に [2007/5/24] |
| PCをNASサーバへ変身させる! かんたん本格派NASソリューション - FreeNAS登場 [2007/5/24] |
| 高速化プログラミングの参照実装としても活用される「Varnish」 [2007/5/24] |
| FreeBSDにおけるサーバ仮想化の取り組み [2007/5/21] |
| 足掛け7年のサクセスストーリ - マルチコアシステムで大幅に性能向上達成 [2007/5/19] |
| Ports Collection 17,000へ - インフラやメカニズムの改善へ着手 [2007/5/19] |
| インストーラが世代交代 - sysintall(8)からfinstallへ [2007/5/18] |
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
ファミマ×ミクの「Happyくじ 初音ミク」で当たる激レアグッズが明らかに! [16:02 5/26] ホビー |
|
[注目の新譜]BUCK-TICK 不動のメンバーで25年 新レーベルからの第1弾シングル [15:31 5/26] ホビー |
|
AKB宮澤佐江、ダービーは大穴勝負!「総選挙も"追い込み"たい」 [15:30 5/26] エンタメ |
|
お嬢様学校の「庶民サンプル」描くラノベがコミカライズ [15:05 5/26] ホビー |
|
【女性編】あまり知らない人とやることをためらわれることランキング [15:00 5/26] ライフ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。