組込みLinux入門 概要 Linuxは多くのソフトウェア開発者にとって日常的な開発環境となっており、エンタープライズ分野のみならず組込み分野でも広く採用されています。様々な用途に向けて幅広い選択肢が提供されていることがメリットですが、同時にその選択肢の多さが最大の課題でもあります。 汎用的なITシステムのOSとしては、Red Hat、SUSE、UbuntuなどのエンタープライズLinuxがよく知られていますが、これらのディストリビューションは組込み用途には一般に不向きです。それは、汎用的なITシステムに比べて組込みシステムは、ミッションクリティカルな用途に使われることも多いため信頼性やセキュリティに対する要件が厳しく、またシステムのリソースが少ない中で動作させなければならないという問題や、サポート期間についても5年から10年、ときにはそれ以上の長期サポートが求められるなど、より多くの制約が存在するからです。 組込み分野のこうした制約に対応するために多くの機器メーカーは、コミュニティで開発された既存のディストリビューションからフォーク(派生版)を作成し、カスタマイズした専用のLinuxを採用するケースがあります。このようなカスタマイズした専用のLinuxは、Roll-Your-Own(ロール・ユア・オウン)Linux、あるいはRYO Linuxと呼ばれます。しかし、RYO Linuxは初期コストこそ抑えられますが、専任のエンジニアを社内で抱えなければならず、使用期間が長くなればなるほどサポートやメンテンナンスに要するコストが増大していくという問題があります。 この問題に対応するためにRYO Linuxの代わりとして挙げられるのが、商用組込みLinuxです。商用組込みLinuxは、商用Linuxベンダからプラットフォームの開発、メンテナンス、技術サポートなどの包括的なサービスを受けることができます。そのため、商用組込みLinuxを採用すると、生産性の向上が図れるとともに、RYO Linuxを維持するために必要なサポートやメンテナンスにかかるコストを抑えられるだけではなく、技術的、ビジネス的、および法的なリスクを大幅に軽減することができます。 目次 エンタープライズLinuxRoll-Your-Own Linux商用組込みLinux 09開発スピードを速め、市場投入までの期間を短縮 ボードサポートパッケージ(BSP)クラウドネイティブアーキテクチャとコンテナ技術開発ツールとビルドツールWind River Simicsを使い、システム全体をシミュレーション サポートとメンテナンスより優れた、より低コストなセキュリティ対策 ライセンス問題ウインドリバーとオープンソース輸出コンプライアンスと暗号機能の開示 どのLinuxを選択すべきか? 全てのLinuxは、kernel.orgで提供されているLinuxカーネルから始まります。実際には、様々なパッケージを追加してアプリケーションの開発やデプロイメントに必要なOS全体を構築していきます。ディストリビューションに必要なパッケージは、対象となるシステムの要件によって決めていきます。特に組込みシステムの場合は、一つで全てのシステムに適用できるソリューションはありません。こうしたことを念頭に置くと、Linuxディストリビューションは次の3つのカテゴリーに分類できます。 エンタープライズLinux エンタープライズLinuxは、多くの場合コンピューティングリソースが十分にあることを前提とし、マルチユーザ向けに多目的なユースケースを想定して構成されているのが特長です。汎用サーバやデスクトップを対象にしたRed HatやUbuntuなどのLinuxディストリビューションがその例です。エンタープライズLinuxは、ひとつで様々なシステムに適用できる汎用性を重視して設計されており、幅広い種類のデバイスがサポートされています。エンタープライズLinuxディストリビューションを構成しているソースコードは入手可能ですが、ユーザがカスタマイズできる範囲は、通常パッケージのインストレーションやコンフィギュレーションファイルの修正に限られています。そうした制限によって、安定したユーザエクスペリエンスや汎用的な使い方における信頼性が提供されます。エンタープライズLinuxのアプリケーションは、3年から5年程度の使用期間が想定されており、サポートはベンダから低価格で提供されます。 組込みシステムでは、エンタープライズLinuxディストリビューションに比べて、はるかに小さなフットプリント、種々の制約がある中での高いパフォーマンス、高い信頼性、長期サポート、少ないリソース要件が求められます。 Roll-Your-Own Linux Roll-Your-Own(RYO)Linuxは、コミュニティで開発された無償のLinuxディストリビューションを使って、カスタマイズした自社独自のLinuxディストリビューションを作成し、サポートおよびメンテナンスを独自に行うのが特長です。RYO Linuxでは、コミュニティのディストリビューションを利用して、不要なパッケージを削除してフォークを作成していきます。この背景には、RYO Linuxは、オープンソースコードは無償で利用が可能で、サポートはそのコミュニティから受けられる、という考え方があります。しかし、実際にはコミュニティはそのRYO Linuxがどのように作成されたか知らないため、長期的なサポートは提供できません。そのため、カスタマイズしたLinuxを熟知する専任のエンジニアを社内に配置して、メンテナンスやサポートを行う必要があります。製品ライフサイクルの初期においてはそうした対応はそれほど負担にならないとしても、時間の経過とともに負担は増大していきます。 全てのRYO Linuxは、自社独自のLinuxディストリビューションであり、時間の経過とともにメンテナンスとサポートの負担は重くなっていきます。 RYO LINUXディストリビューションをサポートし続けたいですか? 新たに組込みLinuxに取り組まれる方は、まず、自社でカスタマイズしたRYO Linuxは定義上、それ自体が独自のLinuxディストリビューションになるということを理解しなければなりません。 自社でLinuxディストリビューションを開発するということは、ターゲットの組込みシステムでOSが動作するよう、パズルのピースを一つ一つ正しく当てはめていくというような作業です。組込みLinuxは、ホストシステムでコンパイルし、リンクを行い、ターゲットハードウェアにダウンロードして使用します。一方、デスクトップPC向けやサーバ向けに提供されている有名なエンタープライズLinuxは、インストール直後から使えるようバイナリ形式でパッケージされて提供されているので、組込みLinuxとは大きく異なります。更に、企業がRYO Linuxを作成して使い続けるためには、セキュリティ監視、コードメンテナンス、およびサポートなどが必要で、それらの工数やコストが発生します。また、そのための専門知識や人材を確保し続ける必要があり、時間の経過とともにそれらの負担は増大していきます。 最新のカーネルやディストリビューションに対するコミュニティのサポートは豊富ですが、バージョンが古くなるにつれて急速に減っていきます。 たとえば、何年も前に製品に組み込まれた旧バージョンのLinuxカーネルに対して、オープンソースコミュニティにサポートを期待するのは現実的ではありません。コミュニティは通常最先端の開発に注力しています。そのため、古いコンポーネント(カーネル、ライブラリ、パッケージ)は、メンテナンスもセキュリティアップデートも行われず、安全面でもアップデートされずに放置されていることも少なくありません。その結果、RYO Linuxの場合、機器メーカーが自社でサポートしなければならないので、時間の経過とともに社内の技術力の高いエンジニアに、より依存するようになります。この作業は、ほとんどのメーカーでサポート部門の対応範囲を超えてしまいます。 また、人的な負担が増すだけではなく、このような技術力の高いエンジニアをメンテンナンスに専念させておくべきなのか、それとも新しい機能を備えた革新的な製品の開発に取り組ませるべきなのか、組織として真剣に考えなければなりません。実際のところ、そのエンジニアが古いディストリビューションのメンテナンスに面白さを感じられなければ、その優秀な人材は去ってしまう可能性もあります。 ウインドリバーのマネージドディストリビューション ウインドリバーは、試作から製品開発、デプロイメント、その先までをカバーする、組込みLinux製品とサービス、ユースケースに特化したソリューションを提供しています。Wind River Linuxは、YoctoProjectベースのソースコードをプラットフォーム開発者に提供しています。有償版のWind RiverLinuxには、メンテナンス、長期サポート、コンプライアンス成果物、およびセキュリティアップデートが含まれます。ウインドリバーはYocto ProjectベースのLinuxソースコードに拡張やバグフィックスを行っています。また、そのコード全てをコミュニティ全体でも活用できるようにアップストリームしています。 商用組込みLinux 3つ目のカテゴリーはWind River Linuxに代表される商用組込みLinuxです。商用組込みLinuxは、組込みシステムのユースケースを前提に設計されているのが特長です。エンタープライズLinuxのように様々な用途に汎用的に対応するディストリビューションを作成するのではなく、リソースの少ない環境での動作や、セキュリティ要件、高性能、高信頼性といったニーズをサポートするコンパクトなコアを作成し、機能拡張のためのビルドシステムを提供するアプローチが取られます。 OpenEmbeddedコミュニティおよびYocto Projectコミュニティによって開発、提供されている商用組込みLinuxの要求を満たすフレームワークは、多くの組込みベンダに広く用いられているため、サポートにおいてスケールメリットがあるほか、組込みプロジェクトの要件に合わせた高度なカスタムビルドが可能です。 商用組込みLinuxは、RYO Linuxと同じように全てのデプロイメントはそれぞれ個別のディストリビューションになりますが、RYO Linuxと違ってディストリビューションは共通のコードから作成され、そのコードに対してベンダが、モニター、テスト検証、メンテナンス、パッチ適用を行います。よって商用組込みLinuxでは、大きなスケールメリットを享受することができます。 Yocto Projectとは? YoctoProjectは、Linux Foundation傘下のオープンソースプロジェクトで、組込みLinuxプラットフォームの標準化のために作られました。これによって相互運用性が高められ、またハードウェアベンダやソフトウェアベンダのエコシステムが構築されています。またYoctoProjectのエコシステムでは、インテリジェントエッジなどの最新テクノロジに対するサポートや専門知識が提供されています。Yocto Projectは誰もが無償で利用可能であり、標準の組込みLinuxビルドシステムが提供されています。 Yocto Projectは、活発な活動を行っている組込みLinuxのオープンソースコミュニティです。 OpenEmbedded Project OpenEmbedded はビルドを行うためのソフトウェアフレームワークで、Wind River LinuxやYocto Projectをはじめとする様々な組込みLinuxで使われ