バイナリ・ブロブ

バイナリ・ブロブ(binary blob)とは、フリーソフトウェアコミュニティにおいてフリーまたはオープンソースFLOSS)なオペレーティングシステムカーネルロードされるオブジェクトファイルについて、公開されかつ利用可能なソースコードが存在しない場合のものを非難する用語である。この用語は、通常、カーネルとは無関係に動作するコードに対しては適用されない。そのような例は例えばBIOSコード(含むとする意見もある)、ファームウェアイメージ、ユーザー空間プログラムである(詳しくはプロプライエタリソフトウェアという記事を参照)。

コンピュータハードウェアベンダーが製品の完全な技術文書を提供することで、オペレーティングシステム開発者はオペレーティングシステムのカーネルの一部であるハードウェアデバイスドライバを作成することができる。しかしながら、NVIDIAのような数社のベンダーはいくつかの製品において完全な文書を提供しておらず、その代わりバイナリのみのドライバ(バイナリ・ブロブ)を提供することで済ませてしまっている(詳細は英語版ウィキペディアの記事を参照)。このもっとも一般的な実例として挙げられるデバイスドライバは、描画高速化用ドライバ(またはGPUドライバ)、ネットワークデバイスドライバ(ネットワーク・インタフェース・コントローラ、Network interface controller, NIC)そしてRAIDコントローラドライバである[1]

バイナリ・ブロブの容認/排除

ハードウェアに関する文書やデバイスドライバのソースコードがハードウェアベンダーから提供されない場合、いくつかのオペレーティングシステムプロジェクト、例えば、NetBSDFreeBSDDragonFly BSDそして大半のGNU/Linuxディストリビューションはハードウェアが使用できないことを回避する為や、これらブロブが提供する拡張的機能を手っ取り早く得るためにバイナリ・ブロブを受け入れてしまっている[2][3]

OpenBSDプロジェクトは、如何なるバイナリ・ブロブも彼らのソースツリーに受け入れることを認めない有名なポリシーを持っている。バイナリ・ブロブは、未確認、取り返しのつかない潜在的なセキュリティ欠陥を持っているということだけではなく、彼らの作り出したオープンかつフリーなソフトウェアを蚕食する脅威であるとみなしているためである[4]

DebianプロジェクトはLinuxカーネルに含まれるフリー、非フリー(Debianの用語におけるnon-free)なバイナリ・ブロブをアーカイブに含めている。しかし、Debian社会契約、そしてその一部であるDebianフリーソフトウェアガイドライン(Debian Free Software Guildlines; DFSG)に基づき、明確にnon-freeであると目印をつけてフリーなパッケージアーカイブからは分離している[5]。Debian 6.0 (コードネーム: squeeze)リリースからは標準のカーネルから完全にバイナリ・ブロブを排除したと宣言している[6]

フリーソフトウェア財団(Free Software Foundation; FSF)はバイナリ・ブロブに対抗する為のキャンペーンを活発に行っている[7]。FSFはOpenBSDのポリシーには欠陥があると見なしており、BSDコミュニティが「ブロブ」を(FSFの観点に基づく)非フリードライバ(non-free drivers)に限定し、非フリーファームウェアを除外している(not non-free firmware)点をその理由として挙げている[8]

バイナリ・ブロブの問題

バイナリ・ブロブの引き起こす問題はいくつかある[9]:

  • ユーザーはソフトウェアの改変ならびに改変版の配布を一切許されない。
  • ブロブは移植性が全くなく、概してわずかなハードウェアアーキテクチャでしか動作しない制限がある。
  • ソースコードが無いためドライバが正しく実装されているかのチェックができない。
  • コードに対しユーザーやサードパーティーによるセキュリティ監査ができない。
  • ユーザーはブロブにバックドアスパイウェアが仕掛けられていないかチェックできず、ベンダーを信頼するしかない。
  • バグ脆弱性がたとえ発見されたとしても、オペレーティングシステム開発者は、ドライバを修正できない。
  • ハードウェアベンダーはいくつかのオペレーティングシステムでは製品をサポートしない[注釈 1]、もしくはいつでもドライバのメンテナンスを放棄する決定を下せる。

ラッパー経由による利用

他のオペレーティングシステム向けに提供されているバイナリ・ブロブを利用するため、いくつかのプロジェクトは、ラッパー英語版を用意している。例えば、Microsoft Windows向けに作成されたネットワークドライバが利用するNDIS APIを実装した、LinuxNDISWrapperFreeBSDNetBSDProject Evilがそれに当たる。

機器のファームウェア

ファームウェア、すなわちいくつかのハードウェアに接続しているオンボードマイクロコントローラが必要とするソフトウェアは、通常バイナリ・ブロブとは見なされない。多くの機器において、ファームウェアはマザーボード上の不揮発性フラッシュメモリ内に保存されている。しかし、ファームウェアのコスト削減と更新を容易にするため、いくつかのデバイスにおいては、SRAMのみ備え、システムに接続されるタイミングで初めてハードディスクなどのデバイスとは別の記憶装置からファームウェアをアップロードするようホストオペレーティングシステムに要求するものがある(このような機器はUSB機器に多い)。オペレーティングシステムドライバにはこのようなかたちで存在するものも多いが、それは単にデバイスの保存用メモリにコピーされるだけで、CPUで実行されない、また未確認のセキュリティ欠陥に対する懸念は幾分少ない。OpenBSDプロジェクトは、バイナリファームウェアイメージは受け入れており、ライセンスで許され得る限り、再配布をおこなっている[10]

BIOS

BIOSは、ブートローダの呼び出しやレガシーリアルモードアプリケーションをサポートする、多数のPC/AT互換機にとっては極めて重要なコンポーネントである。フリーソフトウェア財団は、corebootのような自由なBIOSファームウェアの開発並びにキャンペーンを展開している[11]

脚注

注釈

  1. ^ 近年では解消されつつあるが、ハードウェアベンダーはMicrosoft Windowsオペレーティングシステムと比較してUnix系オペレーティングシステムにはドライバを提供しないことが多い。

出典

  1. ^ Source Package: firmware-nonfree”. 2010年3月25日閲覧。Linuxカーネルに含まれる種々の機器用のバイナリオンリーなファームウェア。Debian GNU/Linux用パッケージ
  2. ^ Matzan, Jem (2005年6月15日). “BSD cognoscenti on Linux”. NewsForge, Linux.com. 2006年7月7日閲覧。 See Christos Zoulas's response to "Is sharing between Free/Open/NetBSD and the Linux kernel a common occurrence? And if so, does it go both ways?"
  3. ^ Matzan, Jem (2005年6月20日). “BSDから見たLinux”. NewsForge, OSDN Magazine. 2011年2月13日閲覧。日本語翻訳記事。「Free/Open/NetBSDとLinuxカーネルの間では、共有が一般化しているのでしょうか? もしそうなら、双方向の共有でしょうか?」との質問に対するChristos Zoulasの返答を見よ。また対照的なテオ・デ・ラートの発言も見よ。
  4. ^ Music composed by Ty Semaka and Jonathan Lewis. Recorded, mixed and mastered by Jonathan Lewis of Moxam Studios (1-403-233-0350). Vocals and Lyrics by Ty Semaka & Theo de Raadt. Bass guitar, organ and bubbles by Jonathan Lewis. Guitar by Tom Bagley. Drums by Jim Buick. “3.9: "Blob!"”. OpenBSD. 2006年6月22日閲覧。最初は小さかったブロブが最終的にはペンギンや全世界の計算機を飲み込むほどの規模になるという挿絵がある。また歌の最後にはバイナリ・ブロブを提供している各ベンダーの名前が挙げられている。
  5. ^ Debian firmware-linux packages”. 2010年3月25日閲覧。
  6. ^ Debian 6.0 "Squeeze" to be released with completely free Linux Kernel”. Debian. 2011年2月13日閲覧。
  7. ^ Protest against ATI nearly led to the arrest of RMS”. Free Software Foundation (2006年4月27日). 2006年10月10日閲覧。
  8. ^ Explaining Why We Don't Endorse Other Systems”. GNUプロジェクト. www.gnu.org (2011年7月13日). 2011年9月10日閲覧。
  9. ^ Andrews, Jeremy (2006年4月19日). “Interview with Jonathan Gray and Damien Bergamini”. KernelTrap英語版. 2012年7月9日時点のオリジナルよりアーカイブ。2008年1月6日閲覧。
  10. ^ OpenBSD Works To Open Wireless Chipsets”. KernelTrap英語版 (2004年11月2日). 2012年7月9日時点のオリジナルよりアーカイブ。2006年6月23日閲覧。
  11. ^ Campaign for Free BIOS”. Free Software Foundation (2006年11月29日). 2007年1月2日閲覧。

関連項目

外部リンク