組込みLinuxとは何か?
組込みLinuxとは何か?

組込みLinuxとは何か?

組込みシステム向けLinuxのガイド。組込みLinuxディストリビューションの違いや、適切なディストリビューションの選び方について学びましょう。

組込みLinuxとは?

組込みLinuxは、すべてのLinuxシステムと同様に、kernel.orgから入手可能なLinuxカーネルを基盤としています。しかし、組込みシステムには、エンタープライズシステムには存在しない厳しい制約があります。これには、より高い信頼性やセキュリティ要件から、リソースの可用性の厳格化、さらには10年以上続くことも珍しくないエンジニアリングサポートの必要性まで、多岐にわたります。さらに、組込みデバイスは通常、相互に、またクラウドリソースと通信する必要があります。

したがって、組込みシステム向けのLinuxには、元のカーネルに加えて追加のパッケージが必要となります。どのディストリビューションにどの具体的なパッケージが必要かは、構築しようとしているシステムによって異なり、最適なソリューションもユースケースごとに異なります。結局のところ、各組込みLinuxシステムは、インテリジェントエッジ向けに特別に構築された、唯一無二のものです。

組込みLinuxは、インテリジェントエッジ向けに特定用途向けに設計されたオープンソースのオペレーティングシステムです。

オープンソースの基盤となる原則

Linux開発者は、すべてのオープンソースソフトウェアおよびツールにおいて、以下の3つの基本原則に従わなければなりません:

協業:コードを共有し、他者のコードをレビューし、修正やパッチの提供に貢献し、ドキュメントを作成し、ディスカッションボードやメーリングリストに参加する。

イノベーションを起こす:新しいテクノロジーを取り入れ、適応させる。

コンプライアンス:規制基準やライセンス(ライセンスの遵守やライセンスの混在を含む)を確認する。

組込みLinuxは、他のOSに比べて開発者にいくつかの利点をもたらします

組込みLinuxの利点

組込みLinuxは、他のオペレーティングシステムと比較して、開発者にいくつかの利点をもたらします:

  • サポート対象のあらゆるプラットフォーム向けのクロスコンパイル
  • 更新されたリリースにおいて、CVE(共通脆弱性識別子)の修正がコミュニティによって反映される
  • 一般的に使用されているLinux Infrastructureおよびツールへのデプロイメント
  • 最新かつクラウドネイティブな環境
  • 幅広いハードウェアのサポート
  • コミュニティ主導のLTSによる製品ライフサイクル

組込みシステムに必要なハードウェア要件

組込みデバイスは、一般的に低消費電力、処理能力の制限、メモリの制約、および設計上可用性のある周辺機器の制限といった環境的制約に縛られています。x86、ARM、PPC、RISC-Vなど、数多くのハードウェアアーキテクチャが存在し、それぞれに独自の利点と制限(低消費電力やソフトウェアサポートの制限など)があります。

組込みLinuxアーキテクチャ

最も基本的なレベルにおいて、組込みLinuxシステムとは、組込みデバイスのハードウェアとアプリケーションの間に位置するLinux OSを採用したシステムのことです。組込みLinuxシステムには、以下の5つの主要な要素があります:

  1. ハードウェアプロセッサ
  2. ハードウェア抽象化レイヤ(HAL)
  3. Linux OS
  4. サービス層
  5. アプリケーション層

組込みLinuxシステムの要素

組込みLinux開発

BSP開発

ボードサポートパッケージ(BSP)とは、特定のハードウェア環境でLinuxが動作できるようにするための、ハードウェア固有のドライバやその他のルーチンを含むソフトウェア層のことです。BSPは、適切なアーキテクチャとOSの組み合わせに合わせてカスタマイズされるだけでなく、具体的なシステムオンチップ(SoC)やボード構成に合わせてきめ細かく調整される必要があります。組込み環境を最適化するためには、BSPにはカスタマイズされたLinux(または他のOS)も含まれている必要があります。 BSPベンダーは、カスタマイズされたテストスイート、専門家による開発者支援、その他のプロフェッショナルサービスを提供します。

システム統合

サブシステムの集合体が連携することで、システムは包括的な機能を提供し、サブシステムがシステムとして一体となって機能することを保証します。システム統合では、特定のユースケースに対応できるよう、既存の(多くの場合、異種混在している)組込みシステムを調整します。

組込みシステム向けのLinuxディストリビューションの種類

Linuxディストリビューションには、その種類が多岐にわたり、その多様さに目を奪われるほどです。エンタープライズ向けのものもあれば、組込みシステム専用に開発されたものもあります。オープンソースコミュニティから提供されるものもあれば、商用サポートが受けられるものもあります。ハードウェアのパッケージの一部として提供されるものもあれば、内製で開発されたものもあります。そして、これらのカテゴリーは互いに重なり合うこともあります。

組込みLinuxディストリビューションの例

組込みLinux エンタープライズLinux
ハードウェアベンダー向けLinux コミュニティ向け組込みLinux 商用組込み 商用エンタープライズエンベデッド コミュニティ向けエンタープライズ 独自開発
  • お客様向けで、通常はハードウェア固有の機能に重点を置いたSDK(ソフトウェア開発キット)として提供される
  • ハードウェア販売を促進する手段として、無償で利用可能
  • アップストリームに反映されていない独自の要素が含まれている場合がある
  • CPetaLinux (Xilinx)
  • Yocto project (OpenEmbedded)
  • Buildroot
  • OpenWrt
  • Linaro ARM
  • Wind River Linux
  • Mentor 組込みLinux (FlexOS)
  • Mentor 組込みLinux (OmniOS)
  • MontaVista CGX (キャリアグレード Express) Linux
  • Ubuntu Core
  • Red Hat エンタープライズLinux
  • SUSE Linuxエンタープライズ
  • Ubuntu Server (Canonical)
  • Fedora
  • CentOS
  • openSUSE
  • Ubuntu
  • Debian
  • 無償およびオープンソースの要素を使用して内製で開発(コミュニティの成果をフォークしたもの)
  • シリコンベンダーの SDK を起点とすることも、エンタープライズLinuxディストリビューション(Ubuntu、Fedora、CentOS など)や組込みLinuxプロジェクト(OpenWrt、Buildroot、Yocto Project)をベースにすることも可能です

自作Linux

「Roll-your-own(RYO)」Linuxとは、無償およびオープンソースの要素を使用して自社で開発・カスタマイズされたLinuxディストリビューションを指します。RYO Linuxディストリビューションの構築に使用される、最も重要かつ人気のあるオープンソース要素の3つは、Yocto Project、Buildroot、およびRaspberry Piです。

Yocto Project

Yocto Projectは、組込みLinuxのプラットフォームを標準化するために創設されました。これにより、共通の標準とツールセットを用いて活動するハードウェアおよびソフトウェアベンダーのエコシステムにおいて、相互運用性と拡張性を実現することを目的としています。

Buildroot

Buildrootは、クロスコンパイルを通じて組込みLinuxシステムを生成するシンプルなツールです。(例えば、既存のクロスコンパイルツールチェーンを使用し、Buildrootでルートファイルシステムのみをビルドすることができます。)

Raspberry Pi

Raspberry Piは、Debianをベースとし、Raspberry Piハードウェア向けに最適化された無償のオペレーティングシステムです。Raspberry Pi Imagerを使用すると、Raspberry Pi OSやその他のオペレーティングシステムをmicroSDカードに迅速かつ簡単にインストールでき、Raspberry Piですぐに使えるようになります。

エンタープライズLinux

Red Hat や Ubuntu などが提供する汎用サーバー用のLinuxおよびデスクトップ向けLinuxディストリビューションは、リソースが豊富な多目的、そして多くの場合マルチユーザー環境向けのソリューションを想定しており、通常、幅広いデバイスをサポートするように構成されています。 サポートされるカスタマイズは、通常、パッケージのインストールや設定ファイルに限定されます。その結果、安定したユーザエクスペリエンス、汎用用途に適した信頼性、そして3年から5年間にわたる低コストのサポートモデルが実現されます。しかし、市販のエンタープライズLinuxは、通常、組込みシステムには不向きな選択肢です。リソースを大量に消費し、攻撃対象面が広く、メンテナンス期間が短いからです。

エンタープライズLinux 対 組込みLinux
エンタープライズLinux 組込みLinux
  • これらは真に汎用的なオペレーティングシステムであり、特定のデバイスでの単一目的の使用のために構築されたものではありません。
  • OS ベンダーが OS 環境の設計とコンパイルを担当します。
  • ユーザは、構成やエディションの選択、追加のソフトウェアパッケージのインストール、および個別の項目の管理設定を行うことにとどまります。
  • すべては、IT スタッフや一般ユーザによって、純粋なバイナリ環境で使用されることが想定されています。
  • ディストリビューターは、多くの場合、変更されていないソフトウェアなどの特定の一般的な要素、および製品ライフサイクルが比較的短い(3~5年)ユースケースにおいて、そのプラットフォームで典型的とされる一般的な使用法についてのみ、Long Term Supportを提供しています。
  • これらは特殊用途のシステムであり、多くの場合、特定の機能を備えており、ユーザとの直接的なやり取りはありません。
  • ハードウェアやメモリの制限に起因するシステム設計上の制約により、カスタマイズやソースコードからのソフトウェア構築が必要となります。
  • このシステムはクリティカル インフラストラクチャに組み込まれており、カスタマイズ、信頼性、その他の設計要件によるコスト増により、通常 5 年から 10 年、あるいはそれ以上の長いライフサイクルにわたってコストを分散させる必要があります。

商用サポート付き組込みLinux

商用サポート付き組込みLinux は、エンタープライズLinux と同様の利点を誇ります。特定のユースケースを念頭に置いて、ほとんどの商用サポート付き組込みLinux ベンダーは、リソースが乏しい、あるいはリソースに制約のある環境、より高いセキュリティ要件、高性能および高信頼性のニーズに対応するコンパクトなコアと、拡張機能に対してローカルサポートのみを必要とするビルドシステムを構築しています。このアプローチは、万人に通用する単一のディストリビューションというものではありません。 商用サポート付きLinuxは、製品ライフサイクル全体にわたる強力なサポートとメンテナンスを提供し、望ましいコスト削減につながります。さらに、このソリューションは、プラットフォームのカスタマイズ、開発の迅速化、市場投入の早期化の機能も備えています。

コミュニティ系と商用Linux

コミュニティ系と商用Linuxディストリビューションは相互に包含し合っています。すべての主要な商用ディストリビューションには、コミュニティによる無償のオープンソース版が存在し、これらはアップストリームへのコンテンツ提供の基盤として利用されています。これらのバリエーションを生み出す様々なコミュニティは、テクノロジー投資(Linux Foundationなどによるもの)や商業的投資によって支えられています。

コミュニティLinux 商用Linux
  • 現代の成功しているプロジェクトは、オープンソーステクノロジーとコミュニティによるイノベーションに基づいています。
  • オープンソースコミュニティはそれぞれ異なりますが、リーダー、メンテナー、コントリビューター、ユーザからなる、類似した組織構造に従っています。
  • 技術的な貢献やガバナンス活動の必要性を考慮して、さまざまなレベルの参加の可用性があります。
  • 焦点はイノベーション(更新・アップグレード)にあり、長期サポートにはほとんど、あるいはまったく重点を置いていない「安定版」がリリースされます。
  • 不具合の修正や CVE への対応は事後対応型です。
  • 各ディストリビューションは、単一の商用組織によって作成され、サポートされています。
  • 当初の焦点は、コミュニティのイノベーションを商用レベルの製品に活かすことにあり、長期サポート&メンテナンス(通常 5 年から 10 年)は二次的な焦点となります。
  • オープンソースのライセンスおよび運用管理に関するリスクは、Linux の全体的な導入とリスク軽減のために低減されています。
  • SLA(サービスレベル契約)により、明確な目標が設定されます。
  • 不具合の修正や CVE への対応は、プロアクティブなアプローチをとっています。

適切なLinuxディストリビューションの選び方

「万能なディストリビューション」というものは存在しませんが、Linuxは極めて汎用的で、デプロイメントされるユースケースに応じてその真価を発揮します。サーバーやクラウドベースインフラストラクチャプラットフォーム、およびワークステーションは汎用ディストリビューションに依存しているのに対し、組込みデバイスやシステムは専門化され、特定用途向けに構築されています。組込みソリューション向けのディストリビューションを見つけるのは難しいため、ソリューションをカスタマイズするにはディストリビューションビルダーに頼る必要があるかもしれません。 以下に、Linuxディストリビューションを選択し、ソリューションをビルドする際に考慮すべき課題と機能について示します。

対応すべきビジネス上の課題

Enabling the full stack for modern applications and use cases

最新のアプリケーションやユースケースに対応するフルスタックの実現

Meeting performance and reliability requirements

性能および信頼性の要件を満たすこと

Providing the latest industry-specific features and standards

業界固有の最新機能と標準の提供

Preparing for compliance and export audits

コンプライアンスおよび輸出監査への備え

Continuously staying ahead of potential security breaches

潜在的なセキュリティ侵害に常に先手を打つ

リスクの低減

  • CVEの監視や修正を含むメンテナンス
  • ビルドやその他の技術的な問題の解決を含むサポート
  • 再現性の高いビルド処理
  • ライセンスコンプライアンスおよび部品表(BOM)
  • ドキュメントおよびコミュニティメーリングリスト
  • シリコンベンダーが提供するSDK

柔軟性

  • 独自の特定用途向け組込みLinux OSを作成する機能
  • バイナリ版またはソースベースの Linux リリースを柔軟性を持って利用できる
  • ベンダーロックインのないオープンソースOSによるイノベーション
  • 適切なライセンスコンプライアンスを条件に、無償で可用性がある
  • 完全なソースコードが含まれています

ソリューション開発のスピード

  • 組込みアプリケーション向けにカスタマイズされ、特定用途向けに構築されたLinuxへのアクセス
  • 定期的なリリースと長期的な安定性により、持続的なイノベーションを実現
  • ハードウェアベンダーのSDKを通じて、幅広いBSPの可用性
  • 標準およびpreempt_rtリアルタイムLinuxカーネルのサポート

自社ビルドか、市販製品の導入か

直感に反するように思えるかもしれませんが、製品のライフサイクル全体を通じて見ると、サポートとメンテナンスが提供される実績のある商用組込みLinuxは、内製で開発したLinuxソリューションを維持管理するよりも、はるかに低コストになる傾向があります。大規模で複雑な独自開発Linuxシステムの構築および維持管理にかかるコストを予測することは困難であり、継続的なサポート、パッチ適用、セキュリティ脆弱性の管理には多額の費用がかかります。 要するに、そのコストは相当な額になり、特に組織が組込み開発、デプロイメント、保守に不慣れな場合は、そのコストを過小評価しがちです。

総所有コスト(TCO)

「独自構築型」のLinuxディストリビューションは、制御性の確保や価格面での効率性という、一見魅力的な利点があります。しかし、予期せぬ結果として以下のような事態が生じる可能性があります:

  1. 製品が現場で成熟し、新世代の製品がリリースされるにつれて、オープンソースの運用管理とメンテナンスに必要な労力は大幅に増加します。
  2. 複数のバージョンを維持し、各リリースにおけるセキュリティの脆弱性やリスクを確認するためには、より多くのスタッフが必要となります。
  3. 保守や修正を優先しない企業は、最終的に、何年にもわたる保守を必要とするカスタム「フォーク」版を抱えることになりかねません。
  4. 多くの組織は、Linux ベースのソリューションを提供する際のコンプライアンス上の義務を認識していません。

RYO Linuxは初期費用は安価ですが、時間の経過とともにコストが急激に上昇します。

主な商用利点
  • 市場投入までの時間:ゼロからビルドするのではなく、商用ユースケース向けに事前に検証済みのコードから開始できます。
  • BSP 開発:ハードウェア周辺機器が十分にサポートされ、デプロイメント環境に最適化されていることを確認します。
  • ハードウェアの最適化:ディスク容量やブート時間などのリソースの制約を考慮し、商用オフザシェルフ(COTS)またはカスタムハードウェアに基づいてソリューションを設計します。
  • 開発の効率化:プロフェッショナルサービスを活用して、機能開発と設計を加速させます。
  • 長期的なコスト削減:導入済みデバイスのライフサイクル全体にわたる総コストを評価し、規模の経済を活かしてコスト効率に優れたサポートとメンテナンスを提供する商用ベンダーを選択します。
  • コンプライアンスおよび輸出関連成果物:事前に生成されたアーティファクトを利用して、世界中のデプロイメント環境における規制要件に準拠します。
  • 継続的デリバリ/継続的インテグレーション (CI/CD):アップデートや修正を通じてデバイスを継続的に改善し、最新のイノベーションに遅れを取らないようにすることで、長期的な運用能力を確保します。
  • プレミアムサポート SLA:修正プログラムの提供やサポートに関する厳格な条件のもと、24 時間 365 日体制でお客様の問題に対応する業界の専門家を頼りにしてください。
  • Linux セキュリティ:導入のユースケースに応じて、デバイスに最高レベルのセキュリティを構築し、セキュリティを開発、デプロイメント、運用プロセスの一部として組み込みます。
  • 開発ツール:処理を効率化し、エンジニアリングチームが予定通り、予算内で目標を達成できるよう支援するツールを活用します。
  • コミュニティのリーダーシップ:戦略的および技術的な観点からオープンソースプロジェクトの方向性に影響を与えることができるコミュニティリーダーの専門性を活用してください。

ウインドリバーのアプローチ

Wind River Linux

Wind River®は、業界最先端の組み込みLinux開発プラットフォームを提供しています。包括的な製品、ツール、ライフサイクルサービスのスイートを通じて、航空宇宙・防衛、産業機器、医療機器、自動車などの分野において、ウインドリバーのお客様がインテリジェントなエッジデバイスを構築・サポートできるよう支援します。

Linuxベースのエッジデバイスおよびシステムは、社内で対応する(RYO)と比較して、リスクと開発工数を低減します。Wind Riverは、コードベースを最新の状態に保ち、不具合を追跡・修正し、セキュリティパッチを適用し、厳格な市場仕様や認証に準拠するようランタイムをカスタマイズするためのソリューションを提供します。さらに、Wind Riverはお客様の知的財産(IP)および輸出コンプライアンスの遵守を支援し、コストを大幅に削減します。

40年にわたり、Wind Riverは組込みソフトウェア業界の世界的リーダーであり続けています。数十年にわたる専門性、15年以上にわたるオープンソースへの積極的な貢献と献身的な推進、そしてユースケースに最適化されたデバイスやシステムの構築・導入においてお客様を支援してきた確かな実績を有しています。

Wind River Linuxは、世界中で導入済みデバイス数億台上で稼働しており、Wind River Linux製品およびサービススイートは、プロトタイピング、開発、そして実際の導入に至るまで、高い確実性と柔軟性を提供します。

>> 詳細はこちら

Wind River Studio Linux サービス

Wind Riverは、お客様がどのLinuxを選択された場合でも、市場で差別化を図れるLinuxソリューションの展開速度と品質を向上させるための、包括的なサポートおよびインテグレーション・サービス・スイートを提供しています。Yocto Project、ボードベンダー、あるいはその他の商用ベンダーからLinuxを入手された場合でも、Wind Riverは、あらゆる市場において20年以上にわたる組み込み、リアルタイムの/リアルタイムな、およびLinuxに関する深い専門知識を有しています。

Studio Linux サービスには以下が含まれます:

  • プラットフォームアーキテクチャの評価、ソフトウェアデザイン、および実装
  • 脆弱性に関するアラート、分析、および対策
  • Linuxプラットフォームの長期的なセキュリティおよび不具合の保守&サポート
  • 性能および信頼性要件
  • 開発をさらに加速させるために迅速にカスタマイズ可能な、業界固有の最新機能および標準
  • IPコンプライアンス監査および修正の推奨

Wind River を利用すれば、組織は希望するあらゆる形で関与することができ、製品開発ライフサイクルにおけるあらゆる段階でガイダンスや支援を受けることができます。

>> 詳細はこちら

セキュリティ

Wind Riverは、多角的な観点からセキュリティに対応しています:

  • CVEの監視、評価通知、および修正
  • 当社のディストリビューションへの多数の一般的なセキュリティパッケージの組み込み
  • セキュリティ修正を含む定期的な更新
  • Linuxカーネルのハードニングや許可リスト方式を含む、OSのハードニングおよびサイバーセキュリティ機能

*2021年第3四半期末時点のWind River CVEデータベース

組込みLinuxに関するよくある質問

組込みLinuxとは、モバイルデバイス、ルーター、その他のIoT(モノのインターネット)デバイスなどの組込みシステム上で動作するように設計された、Linux OSの専用バージョンです。
組込みLinuxを利用する利点としては、オープンソースであること、柔軟性とスケーラビリティ、幅広いハードウェアアーキテクチャへの対応、堅牢性と安定性、そして大規模な開発者およびユーザコミュニティが挙げられます。
組込みLinuxの主な特長としては、スモールフットプリント、リアルタイムアプリケーションへの対応、電力管理機能、多様なネットワークプロトコル、およびカスタマイズ可能なユーザインタフェースなどが挙げられます。
組込みLinuxは、特定用途向けに設計された専用ハードウェアを駆動するために使用されます。
いいえ、組込みLinuxはRTOSではありません。ただし、ディターミニズムを必要とするシステムの場合、Linuxカーネルに「preempt-rt」パッチを適用することで、同等の性能で同様の機能を実現できます。
一般的に、Linuxといえばワークステーションやサーバーで使用されるエンタープライズ向けオペレーティングシステムを指しますが、組込みLinuxは特定の用途に特化したデバイスやシステムで使用されます。
はい。Raspberry Pi OS(旧称Raspbian)は、Debianディストリビューションをベースに、Raspberry Piハードウェア向けに最適化された、組込みLinuxの代表的な例です。
Linuxは、この分野での幅広い採用とコミュニティ主導のイノベーションにより、組込み開発において最も一般的な選択肢となっています。
組込みLinuxは、単純なデバイスがさまざまなタスクを実行するために必要な最低限の機能レベルから始まり、処理能力やメモリ使用量といった制限、あるいは安全性要件や過酷な気象条件といった制約がある環境でのアプリケーション適用を想定しています。
組込みLinux OSの例としては、Ubuntu SnappyやRaspberry Pi OSなどが挙げられますが、これらに限定されません。また、yocto projectやBuildrootなどの組込みディストリビューションビルダーを使用してビルドすることも可能です。
Linuxカーネルは、大規模な開発者コミュニティによって進化し続けているため、常に最新バージョンが最良と言えます。しかし、コミュニティによる絶え間ないイノベーションに追いつくのは難しいため、LTS(長期安定版)バージョンから始めることをお勧めします。
「これ一つで全てを網羅する」というディストリビューションは存在しませんが、Linuxは非常に汎用的で、導入されるユースケースに応じてその真価を発揮します。サーバーやクラウドベースインフラではRed HatやCentOSが主流であり、組込み分野ではWind River Linuxが主流となっています。
Linuxは、その幅広い機能と豊富な組込みハードウェアへの対応により、組込みアプリケーション開発において最も人気のあるプラットフォームとなっています。
いいえ、yocto projectはLinuxディストリビューションではなく、OpenEmbeddedからのパッケージ、レシピ、メタデータなどの要素を再統合して、組込み用ディストリビューションのビルドを支援する一連のツールです。
ベアメタルとは、オペレーティングシステムによる運用管理を必要とせずに、ソフトウェアがハードウェアリソース上で直接実行され、それらにアクセスできる機能を指します。
まず、組込みデバイスの要件を理解し、プロジェクトの目標を達成するために必要な部品表(BOM)を把握することが重要です。次のステップとして、ハードウェアを選択し、その特定のハードウェアと必要な機能に対応したBoard Support Packages(BSP)を備えたOSを選定します。
組込みシステムは特定用途向けに構築されるため、カスタマイズを加えたプロジェクト固有のバージョンこそが、その組込みユースケースに最適となります。
汎用Linuxと比較すると、組込み向けのLinuxベースのOSをビルドするのはより困難です。なぜなら、明確な要件を定めて始め、対応するユースケースに基づく制約を理解し、デバイスのライフサイクルにわたるメンテナンスの側面を考慮する必要があるからです。
開発者は、適切なハードウェアプラットフォームの選定、Linuxディストリビューションの選択、システムの設定と必要なソフトウェアのインストール、そして組込み環境向けのアプリケーションの作成や適応を行うことで、組込みLinuxの開発を始めることができます。これらの作業を支援する、さまざまなツール、リソース、コミュニティフォーラムが利用可能です。