Coreboot
coreboot(以前は LinuxBIOS[1]として知られていた)は、フリーソフトウェア財団(Free Software Foundation; FSF)による支持[2]を受けているフリーソフトウェアプロジェクトである。FSFは、このプロジェクトにより、多くのコンピュータに存在するプロプライエタリなBIOSファームウェアを、現代的な32ビットもしくは64ビットオペレーティングシステムをロード及び稼働するのに無くてはならない最小限のタスクのみを実行するよう設計された軽量なシステムで置き換えることを目指している。
Contents
歴史
corebootプロジェクトは、1999年冬、ロスアラモス国立研究所(Los Alamos National Laboratory; LANL)のAdvanced Computing Laboratory(高度計算機研究所)にて開始された[3]。目標は、高速な起動と高性能なエラー処理を行うBIOSを作成することである[4]。このソフトウェアはGNU General Public License(GPL)の条項の下ライセンスされている。主な貢献者は、LANL、AMD、coresystems GmbH[5]そしてLinux Networx, Inc[注釈 1]である。更に、MSI(en)、GIGABYTE(en)、Tyanといったマザーボードベンダーは、corebootを次世代の標準BIOSに位置付け、自社の最新マザーボードの持つ数種のハードウェアインタフェースの仕様をプロジェクトに提供している。しかしながら、どうやらTyanはcorebootのサポートを取りやめてしまった様である。Googleはcorebootプロジェクトの一部をスポンサードしている[6]。金融先物取引の企業集団であるCME Groupは2009年よりcorebootプロジェクトへの援助を開始している[7]。
また、ARMアーキテクチャのサポートを可能とするためDas U-Boot由来のコードが投入、統合されている[8]。
サポートするプラットフォーム
x86, x86-64アーキテクチャに加え、AMD Geodeプロセッサシステムもサポートしている。Geode GXプロセッササポートはAMDにより、One Laptop per Child(OLPC)のために開発が開始され、Artec Groupが同社のDBE61 ThinCanモデル用にGeode LXのサポートを加えている。近年では、AMDによりコードが導入された為、サポートするGeode LXプラットフォームが増加しており、OLPCでの動作のため更なる改良が加えられている。AMDが寄贈したコードは他のGeodeベース・システムのサポートのため、corebootコミュニティにより更なる開発が現在も続けられている。
corebootはフラッシュロムを利用するマザーボードに焼き込むことも可能である。フラッシュロムを利用するAMD Geodeプラットフォームではこの方法でcorebootを導入することとなる。
AMD Geodeベースプラットフォームでの初期の開発から、corebootのサポートは多くのAMDプロセッサやチップセット上に拡張された。サポートされたプロセッサは、
などが含まれる。またcorebootはAMDのチップセット
にもサポートを拡大している。このことから、同様に新規のプロセッサやチップセットが市場に投入されても、corebootは即座にそれらに対応できると予測される。
設計
corebootは通常、ブートローダを使用せず、直接Linuxカーネルをロードする。しかし、ブートサーバ(boot server)からのコールによりネットワーク上でLinuxを起動させるiPXE(元Etherboot)[注釈 2]や、Linux、Microsoft Windows 2000/XP/Vista/7やBSDをロードするのに使用されるSeaBIOS[注釈 3][9][10]のような、他の任意のスタンドアローンなELF実行ファイルをロードすることも可能である(以前は、coreboot自身が提供していたAdd-on Layer(ADLO)[11][12]によりWindows 2000/XP, OpenBSDのサポートを行っていた)。corebootはまたMyrinet, Quadrics, SCIクラスター接続をはじめとする任意の機器から、ほとんど全てのオペレーティングシステムをロードできる。前述のとおり、Windows 2000/XP/Vista/7、BSDを含むいくつかのOSはSeaBIOSにより提供されるレガシーBIOS機能を必要とする。
coreboot固有の特徴として、x86アーキテクチャ版においては、たった10の命令数のみで32ビットモードに移行し動作するという点が挙げられる[13](他ほとんど全てのx86用BIOSが16ビットモードでしか動作できないにも関わらずである)。これはインテルベースのMacintoshコンピュータやその他新規格のPCハードウェアで利用されている、最新のUEFIファームウェアに類似する。
corebootは他のカーネルをロードする、または、カーネルもしくはイメージをブートする代わりにブートローダに制御を渡すこともできる。この方法を利用すれば、Plan 9 from Bell Labsオペレーティングシステム・カーネルを直接ブートすることも可能である[14]。corebootはGNU GRUB2にも対応している。
デフォルトでは、corebootは、他のBIOSがハードウェアアクセスに利用するBIOS割り込みルーチンサービスを提供しない。ペイロードとなるSeaBIOSはBIOS呼び出しを提供しているが故に、たとえそのようなBIOSサービスを要求するOSがあったとしてもcorebootはロードできる。しかしながら、近代的なオペレーティングシステムはBIOSコールとは別の方法でハードウェアにアクセスし、起動段階の初期ならびにフォールバック機構としてしかBIOSコールを使用しないはずである。
corebootの開発とデバッグ
corebootは何もない状態から、ハードウェアを初期化しなければならない為、サポートするチップセットやマザーボードへの移植が必要となる。RAMの初期化前の段階で、corebootは、シリアルポートを(キャッシュとレジスタのアドレッシングのみ)初期化する。こうすることで、接続する端末にデバッグテキストを送出することができる[注釈 4]。また同様にPOSTカード(Power On Self Test(POST)で報告されるエラーコードを診断できるICチップ)を接続し、2桁の16進数診断用コードを出力させるためのポート0x80にバイトコードを送信可能である。別の移植への助力は、IOSS社が販売する商用製品"RD1 BIOS Savior"(日本語名: "RD1 ROM焼き だいじょうぶ!")[15]へ向けられている。この製品は、二つのブートメモリデバイスを組み合わせたもので、ブートメモリソケットに接続し手動で2つのデバイスを選択切り替えできる。コンピュータは一方のデバイスから起動し、2番目のメモリデバイスに切り替えることで、イメージをリプログラム即ち焼き込む事が可能となっている。より高価な代替品は外部に取り付けるEPROMやフラッシュメモリプログラマブルデバイスである。またCPUの代わりとして、もしくはJoint Test Action Group(JTAG)ポート経由で接続するCPUエミュレータの利用も考慮されている。JTAGポートを利用したcorebootを組み込んだ製品の例として、Sage SmartProbeというものがある[16]。BIOSデバイスに焼き込む代わりに、BIOSエミュレータ上でコードをビルド、またはダウンロードできる。
ペイロード
corebootは以下の各種ペイロードも読み込み可能である。ペイロードはlibpayloadヘルパーライブラリを利用して作成することが出来るがそれは必須ではない。
- SeaBIOSはx86 BIOSの一実装である。データサイズは小さく、GCCを利用し16ビットC言語でほとんどが書かれている。
- FILO[17]はGRUBに似たブートローダであり、USBブートをサポートしている。
- Etherbootはネットワーク越しにオペレーティングシステムを起動可能なペイロードである。
- gPXEそして現在の名前iPXEはSeaBIOSのもと稼働する、Etherbootの後継ソフトウェアである。
- TianoCore[18]はUEFIのオープンソース実装である。TianoCoreはハードウェア初期化機構を持たず、実際の初期化はcorebootの仕事となる。両者を組み合わせることでUEFIの完全なサポートが可能となる。
- Chromium OSにおいてGoogleが採用したブートローダDas U-Bootはその派生物がcorebootのペイロードとして利用可能である[19]。
DRAMの初期化
corebootが初期化する最も複雑なハードウェアはDRAMコントローラ(DRAM controller)とDRAM自身である。いくつかのケースでは、課題となるテクノロジーに関する文書が秘密保持契約(Non-disclosure agreement; NDA)に縛られている、またはそもそも利用できない。RAMが初期化されるまではそれ自身が使用できないため、RAMの初期化プロセスはとりわけ複雑である。それゆえDRAMコントローラとDRAMの初期化の為に、初期化コードはCPUの汎用(目的)レジスタ(general purpose register)またはCache-as-RAMのような一時記憶領域の形態をとるしかない。
romccはRAMの代わりにレジスタを記憶装置として使用するCコンパイラである。これを利用するとタスクはより簡単に実行できる。romccを利用することで、System Management Bus(SMBus)から、RAMが使用できるDRAMのDIMM上にあるSerial presence detect(SPD)へのアクセスも比較的容易になる。
比較的最近のx86プロセッサでは、DRAMが初期化されるまでプロセッサキャッシュがRAMとして利用可能となる。ただプロセッサキャッシュはCache-as-RAM[20]モードで初期化されなければならない。しかし、これはDRAMの初期化と比べ命令数が少なくて済む。またCache-as-RAMモードはCPUアーキテクチャ依存ではあるが、チップセットやマザーボード単位で変化するDRAMの初期化に比べれば幾分汎用的ではある。
脚注
注釈
出典
- ↑ ron minnich (2008年1月12日). “[LinuxBIOS] Welcome to coreboot”. coreboot.org. . 2011閲覧.
- ↑ Peter Brown (2010年2月17日). “Campaign for Free BIOS”. FSF. . 2011閲覧.
- ↑ “Who is working on coreboot?”. coreboot.org (2010年5月29日). . 2011閲覧.
- ↑ Anton Borisov (2009年1月6日). “The Open Source BIOS is Ten”. The H Open Source. . 2011閲覧.coreboot開発者へのインタビュー。
- ↑ “coresystems GmbH i.L.”. coresystems.de. . 2011閲覧.
- ↑ Stefan Reinauer (2006年11月13日). “Google Sponsors the LinuxBIOS project”. The official Google Code blog. . 2011閲覧.
- ↑ Ivy Schmerken (2009年5月12日). “CME Group Dives Into Coreboot and Other Linux Open Source Projects”. Wall Street & Technology. . 2011閲覧.同社が運用するx86 Linuxサーバのダウンタイムの軽減のため、高速な起動を実現するBIOSとして目をつけた。
- ↑ “GSoC2011(Week 1): Analysis of U-boot ARM boot code”. coreboot developer blogs. blogs.coreboot.org. . 2011閲覧.
- ↑ “SeaBIOS”. seabios.org (2009年12月13日). . 2011閲覧.
- ↑ “SeaBIOS - coreboot”. coreboot.org (2011年1月15日). . 2011閲覧.
- ↑ “ADLO - coreboot”. coreboot.org (2009年1月21日). . 2011閲覧.
- ↑ “SEBOS, Security Enhanced Bootloader for Operating Systems, Phase 2”. www.missl.cs.umd.edu. 2007年6月19日時点のオリジナルよりアーカイブ。. 2011閲覧.Bochsに付属のBIOS経由でPC BIOSサービスをcorebootに追加したとの発表。
- ↑ “coreboot v3 early startup code”. lxr.linux.no. . 2011閲覧.
- ↑ “Integrating 9load into the LinuxBIOS”. plan9.bell-labs.com. . 2011閲覧.
- ↑ “RD1 BIOS Savior”. ioss.com.tw. . 2011閲覧.
- ↑ “Sage Electronic Engineering”. www.se-eng.com. . 2011閲覧.
- ↑ “FILO - coreboot”. www.coreboot.org. . 2011閲覧.
- ↑ “TianoCore - coreboot”. www.coreboot.org. . 2011閲覧.
- ↑ “Modify u-boot code to allow building coreboot payload. [chromiumos/third_party/u-boot-next : chromeos-v2011.03]”. groups.google.com (2011年7月24日). . 2011閲覧.
- ↑ “A Framework for Using Processor Cache as RAM (CAR) (PDF)”. coreboot.org (2006年10月10日). . 2011閲覧.
関連項目
関連文書
- "Open BIOSes for Linux" Peter Seebachによる。
- "Linux のためのオープン BIOS" 上記の翻訳記事。IBM dW.
- "LinuxBIOS ready to go mainstream" Bruce Byfieldによる。
- "表舞台に立つ準備を整えたLinuxBIOS" 上記の翻訳記事。OSDN Magazine提供。
- "First desktop motherboard supported by LinuxBIOS: GIGABYTE M57SLI-S4" ブランドン・ホワード(Brandon Howard)による。
- Trying Coreboot under QEMU/KVM emulator
外部リンク
- [{{#property:P856}} 公式ウェブサイト]
- FOSDEM 2007にて開発者のロン・ミニック(Ron Minnich)がLinuxBIOSについて語るビデオ。(Oggビデオ)
- Coreboot with X Server Inside - YouTube
- OLPC booting with coreboot - YouTube