組込みLinuxについて学習する
組込みLinuxは、一般的なLinuxシステムと同じLinuxカーネルを基盤として構築されています。Linuxカーネルに各種パッケージを統合したものをLinuxディストリビューションと呼びます。一般的なエンタープライズシステムと異なり、組込みシステムには高い信頼性、各種セキュリティ要件への対応、限られたハードウェアリソース上での動作、10年を超える技術サポートの提供といった厳しい要件が求められます。さらに、インテリジェントエッジと呼ばれる近年の組込みシステムには、デバイス間の連携、クラウド連携、クラウドネイティブ技術の統合、OTA更新テクノロジーの導入なども期待されています。このように組込みシステムのユースケースは製品ごとに異なり、高度な要件が求められていることから、それぞれの組込みシステムに最適なLinuxディストリビューションも各製品向けに最適化されたユニークなものが必要とされています。
組込みLinuxは、各インテリジェントエッジの
ユースケースに最適化されたオープンソースのOSです
オープンソースの基礎
組込みLinuxについて解説する前に、Linuxの基本原則であるオープンソースの考え方、基礎、注意点について説明します。組込みLinuxの開発者は、オープンソースソフトウェアやツールを利用するにあたり、次に示す3つの基本原則に従う必要があります。製品開発において特に注意すべきことは、組込みLinuxに含まれるすべてのソフトウェアライセンスを確認し遵守しなければならない点です。
協力 | Linuxをより良いものとするためにソースコードの共有、コードのレビュー、修正パッチの作成と適用、ドキュメントの整備、コミュニティでのディスカッション、メーリングリストの参加など、コミュニティよる開発課題の解決に協力すること |
---|---|
革新 | イノベーティブな技術をLinuxへ取り入れ、革新を促すこと |
準拠 | Linuxを構成するすべてのソフトウェアライセンスを確認し遵守すること (ライセンス汚染や規制基準違反をしてはならない) |
組込みLinuxを使うメリット
それでは何故、これらの基本原則に従ってまで組込みシステムのOSにLinuxを採用するのでしょうか。それは、組込みLinuxには前述した注意点に余りあるメリットがあるためです。主なメリットとしては次のものが挙げられます。
組込みLinuxにはエンタープライズLinuxには無い
様々なメリットがあります
- 数多くのハードウェアがサポートされている
- コミュニティが長期サポート(LTS)のライフサイクルを定義している
- コミュニティにより共通脆弱性識別子(CVE)への対策とリリースが行われる
- 広く採用されているLinuxインフラと開発ツールを簡単に入手できる
- サポートされているすべてのプラットフォームにむけたクロスコンパイル開発環境を活用できる
- 最新かつクラウドと親和性の高い技術が採用されている
組込みシステムのハードウェア要件
組込みLinuxを深く理解するには、まず組込みシステムを構成するハードウェア要件を知ることが大切です。組込みシステムを開発するには、低消費電力、限られた演算性能、制限されたメモリとストレージの容量、SoCやボード毎に異なる周辺機器(ペリフェラル)への対応など、様々なハードウェアに関する制約を解決しなければなりません。Linuxは代表的なCPUアーキテクチャであるx86、Arm、PowerPC、RISC-Vなどに対応しているため、組込みLinuxを利用することにより、組込みシステムの要件を満たすハードウェアを自在に選択することができます。つまり、ハードウェアプラットフォームのメリットを最大限に活かしたシステムを開発することが可能です。
Wind River Linux LTS21が標準でサポートしている組込みボードとアーキテクチャ
- Intel Core - Elkhart Lake CRB
- Intel Core - Snow Ridge NS SoC
- Intel Ice Lake - Ice Lake-SP
- Intel Kaby Lake - NUC7i5DNK1E
- Intel Tiger Lake - Tiger Lake UP3 RVP
- qemuarm
- qemuarm64
- qemuarmv5
- qemumips
- qemumips64
- qemuppc
- qemuppc64
- qemuriscv32
- qemuriscv64
- qemux86
- qemux86-64
組込みLinuxアーキテクチャの基礎
組込みLinuxは、組込みシステムの基礎を固めるハードウェアと、組込みシステムの挙動を決めるアプリケーションとを結びつけるOSとして機能します。さらに組込みシステムを分割すると、組込みLinuxシステムのアーキテクチャは次の5つのレイヤーから構成されています。もし、組込みLinuxを自社で独自に開発して管理、運用する場合は、システムを構成するこれらすべての技術に精通したエンジニアを揃え、日々のメンテナンスコストを投じなければなりません。
組込みLinuxを構成するコンポーネント
- ハードウェアレイヤー:プロセッサ、メモリ、ペリフェラル
- ハードウェア抽象化レイヤー(HAL):ブートローダー、ボードサポートパッケージ(BSP)、デバイスドライバなど
- Linuxカーネルレイヤー:システム全体を統合するソフトウェア
- サービスレイヤー:ファイルシステム、GUIの提供、タスク管理など
- アプリケーションレイヤー:組込みシステムの挙動を決めるソフトウェア
自作組込みLinuxを開発して製品をつくる上での課題
ここで、組込みLinuxを自社で開発する場合の課題を整理してみましょう。
ボードサポートパッケージ(BSP)の開発
ボードサポートパッケージ(BSP)は、特定のハードウェア環境でLinuxを実行するために必要なデバイスドライバや、デバイスドライバを構成する各種ルーチンを含んだソフトウェアパッケージです。BSPはCPUアーキテクチャとLinuxカーネルを接続するだけでなく、システムオンチップ(SoC)や組込みボードに統合されたペリフェラルを適切に制御しなければなりません。もし組み込みボードに対応するBSPが無く、自社でBSPを開発する場合、ハードウェアに関する専門的な知識とLinuxカーネルに関する知識の双方を兼ね備えたエンジニアが必要となることから人材を揃えることが最初の課題となります。さらにBSPの開発では、ハードウェアを制御するためのソースコードやバイナリパッケージの作成だけでなく、ハードウェアに則してカスタマイズしたテストスイートを作成し実施することをはじめ、組込みLinuxのライフサイクルにあわせてBSPを長期間メンテナンスし続けるコストが必要となります。
アプリケーションやサービスの統合
組込みシステムの中で実行されるアプリケーションは、サービスレイヤーに含まれるサブシステムを適切に呼び出し、組込みシステム全体を制御、インテリジェントエッジの挙動を決定します。組込みシステムごとにユースケースは様々ですから、サービスレイヤーをカスタマイズする必要があります。例えば、クラウドと連携する組込みシステムを開発するには、クラウドネイティブなソフトウェアや通信ライブラリを統合するといったことが求められます。一方で、不必要なライブラリを統合してしまうと、潜在的なセキュリティリスクとなるため、統合するサービスの選定は慎重に行わなければなりません。
組込みLinuxディストリビューション入門
Linuxディストリビューションには、組込みシステム向けのLinuxディストリビューションだけでなく、エンタープライズ向けのLinuxディストリビューションや、自社で開発し運用するLinuxディストリビューションに至るまで様々な種類があります。これらのLinuxディストリビューションの共通点と相違点、それぞれの特徴について理解を深め、組込みLinuxディストリビューションに求められる要件を学びましょう。
エンタープライズLinux | |
---|---|
商用エンタープライズLinux | コミュニティサポートエンタープライズLinux |
|
|
Linux Communities (e.g., kernel.org) |
組込みLinux | ||
---|---|---|
商用組込みLinux | コミュニティサポート組込みLinux | ハードウェアベンダー製Linux |
|
|
|
Linux Communities (e.g., kernel.org) |
Roll-Your-Own Linux |
---|
|
Linux Communities (e.g., kernel.org) |
エンタープライズLinuxと組込みLinuxの違い
汎用サーバやデスクトップ向けのLinuxをエンタープライズLinuxと呼びます。エンタープライズLinuxには、Red Hat Enterprise LinuxやUbuntuなどのLinuxディストリビューションがあります。エンタープライズLinuxは、十分にハードウェアリソースが提供される環境下で、様々な用途に利用できることを目的として開発されたOSで、マルチユーザに向けたソリューションとしても利用されます。各種汎用機器上で実行できるように幅広いデバイスに対応できるデバイスドライバ群を含んでいます。
エンタープライズLinuxは、Linuxのカスタマイズをパッケージのインストールと設定ファイルの変更に限定することにより、堅実なユーザエクスペリエンス、適度な信頼性、3~5年程度のサポートを提供します。しかし、これらのエンタープライズLinuxはハードウェアリソースを大量に消費することや、セキュリティ面における攻撃可能範囲が広いこと、保守期間が十分でないことから組込みシステムには適していません。
一方で組込みLinuxは、エンタープライズLinuxのように様々な用途に対応できる汎用的なディストリビューションではなく、組込みシステムのユースケースを前提に設計されたディストリビューションです。組込みLinuxは、リソースの少ない環境での動作や、セキュリティ要件、高性能、高信頼性といったニーズを満たせるよう、コンパクトなコアを中心に構築されています。そして、組込みシステムのユースケースを満たせるよう、機能拡張のためのビルドシステムを提供するアプローチが取られます。
エンタープライズLinux | 組込みLinux |
---|---|
|
|
組込みLinux:コミュニティサポートLinuxと商用Linuxの違い
Linuxディストリビューションには、コミュニティによる無償サポートが提供されるコミュニティサポートLinuxと、企業による有償サポートが提供される商用Linuxがあります。商用Linuxのうち、組込み向けの製品が商用組込みLinuxです。商用組込みLinuxは、エンタープライズLinuxと同等のメリットを備えつつ、組込みシステムにおける特定のユースケースを想定して設計されたOSです。ハードウェアリソースが制限された環境でも実行できるよう設計されています。商用組込みLinuxは高いセキュリティ要件に対応し、高性能と高信頼性を併せ持ちます。拡張機能を追加・削除できるビルドシステムにより、組込みシステムそれぞれにカスタマイズしたLinuxディストリビューションを生成することができます。さらには、組込みシステムのライフサイクルに追従できる十分な保守期間が提供されます。こうした特徴から、商用組込みLinuxを選択することにより、高品質でロングライフの製品を短い開発期間で設計し、より早くリリース、安心して運用することができます。
なお、コミュニティサポートLinuxと商用Linuxは完全に独立したものではなく、互いが良好な関係で連携することにより成り立っています。すべての商用LinuxはコミュニティサポートLinuxをベースとして構築されており、コミュニティサポートLinuxはイノベーティブな機能を最初に導入する源流として機能します。逆に、商用Linuxディストリビューションに対する各企業の投資は、商用Linuxの源流となったコミュニティサポートLinuxの支援となります。
コミュニティサポートLinux | 商用Linux |
---|---|
|
|
Roll-Your-Own Linux
Roll-your-own(RYO)Linuxは、無償で入手したオープンソースのソフトウェアコンポーネントを自社で統合し、製品向けにカスタマイズしたLinuxディストリビューションです。RYO Linuxの構築に利用される人気の高いツールやコンポーネントには、Yocto Project、Buildroot、Raspberry Pi OSなどがあります。
Yocto Project
Yocto Projectは、組込みLinuxの開発プラットフォームを標準化するプロジェクトです。Yocto Projectは異なるハードウェアプラットフォームに対して共通のツールでLinuxディストリビューションをカスタマイズできるようにし、ハードウェアプラットフォーム間の相互運用性と拡張性を向上させます。
Buildroot
BuildrootはクロスコンパイラによりPCから組込みLinuxを構成するコンポーネントを生成できるツールです。組込みシステムのターゲットを準備することなくPCのみで組込みシステムのルートファイルシステムを生成することなどができます。
Raspberry Pi
Raspberry Pi OSは、LinuxディストリビューションのひとつであるDebianをRaspberry Piのハードウェアに最適化した無償のOSです。Raspberry Pi開発環境に含まれるRaspberry Pi Imagerを利用することにより、起動用のmicro SDカードへLinuxディストリビューションをインストールすることができます。
Wind River Linuxを採用するメリット
Wind River Linuxは、 商用組込みLinuxマーケットシェアNo.1!※の業界最先端の組込みLinux開発プラットフォームです。15年の長期サポートや継続的デリバリー、クラウドネイティブアーキテクチャやコンテナ技術にも対応し、信頼性の高いインテリジェントエッジデバイスの開発を支援します。 Wind River Linuxは航空宇宙・防衛、産業、医療、自動車など品質への妥協が許されない分野にも対応可能な製品であり、お客様がインテリジェントエッジデバイスを開発する上で必要となる開発環境やツールをはじめ、開発を支援するプロフェッショナルサービスなどの幅広いサポートを提供します。Wind River Linuxを使うことにより、お客様は最終製品が実現するイノベーションの開発のみに注力ができるため、市場投入までの期間を短縮することができます。
※出典:VDC Research The Global Market for IoT & Embedded Operating Systems (2018)
さらに、Wind River Linuxでは、ウインドリバーがすべてのパッケージについて、コンテンツ、著作権、ライセンスに関する完全な情報を提供します。組込みシステムに統合されるIP(知的財産)、ロイヤリティ、サブスクリプションの制約が解決され、法的な責任やコンプライアンスに関する問題を回避することができます。Roll-Your-Own Linuxで課題となるリスクや運用コストを大幅に低減できるため、総所有コスト(TCO)の削減も可能です。
このように、40年にわたって組込みソフトウェアをリードし、15年以上オープンソフトウェアにも貢献してきたウインドリバーの商用Linux製品であるWind River Linuxは、世界中で数億にのぼるデバイスで稼働しており、製品計画、開発、商用デプロイにおいて高い信頼性と柔軟性を提供しています。