組込みLinuxについて学習する

組込みLinuxは、一般的なLinuxシステムと同じLinuxカーネルを基盤として構築されています。Linuxカーネルに各種パッケージを統合したものをLinuxディストリビューションと呼びます。一般的なエンタープライズシステムと異なり、組込みシステムには高い信頼性、各種セキュリティ要件への対応、限られたハードウェアリソース上での動作、10年を超える技術サポートの提供といった厳しい要件が求められます。さらに、インテリジェントエッジと呼ばれる近年の組込みシステムには、デバイス間の連携、クラウド連携、クラウドネイティブ技術の統合、OTA更新テクノロジーの導入なども期待されています。このように組込みシステムのユースケースは製品ごとに異なり、高度な要件が求められていることから、それぞれの組込みシステムに最適なLinuxディストリビューションも各製品向けに最適化されたユニークなものが必要とされています。

hypervisor

組込みLinuxは、各インテリジェントエッジの
ユースケースに最適化されたオープンソースのOSです

オープンソースの基礎

組込みLinuxについて解説する前に、Linuxの基本原則であるオープンソースの考え方、基礎、注意点について説明します。組込みLinuxの開発者は、オープンソースソフトウェアやツールを利用するにあたり、次に示す3つの基本原則に従う必要があります。製品開発において特に注意すべきことは、組込みLinuxに含まれるすべてのソフトウェアライセンスを確認し遵守しなければならない点です。

協力
Linuxをより良いものとするためにソースコードの共有、コードのレビュー、修正パッチの作成と適用、ドキュメントの整備、コミュニティでのディスカッション、メーリングリストの参加など、コミュニティよる開発課題の解決に協力すること
革新
イノベーティブな技術をLinuxへ取り入れ、革新を促すこと
準拠
Linuxを構成するすべてのソフトウェアライセンスを確認し遵守すること
(ライセンス汚染や規制基準違反をしてはならない)

組込みLinuxを使うメリット

それでは何故、これらの基本原則に従ってまで組込みシステムのOSにLinuxを採用するのでしょうか。それは、組込みLinuxには前述した注意点に余りあるメリットがあるためです。主なメリットとしては次のものが挙げられます。

hypervisor

組込みLinuxにはエンタープライズLinuxには無い
様々なメリットがあります

  • 数多くのハードウェアがサポートされている
  • コミュニティが長期サポート(LTS)のライフサイクルを定義している
  • コミュニティにより共通脆弱性識別子(CVE)への対策とリリースが行われる
  • 広く採用されているLinuxインフラと開発ツールを簡単に入手できる
  • サポートされているすべてのプラットフォームにむけたクロスコンパイル開発環境を活用できる
  • 最新かつクラウドと親和性の高い技術が採用されている



組込みシステムのハードウェア要件

組込みLinuxを深く理解するには、まず組込みシステムを構成するハードウェア要件を知ることが大切です。組込みシステムを開発するには、低消費電力、限られた演算性能、制限されたメモリとストレージの容量、SoCやボード毎に異なる周辺機器(ペリフェラル)への対応など、様々なハードウェアに関する制約を解決しなければなりません。Linuxは代表的なCPUアーキテクチャであるx86、Arm、PowerPC、RISC-Vなどに対応しているため、組込みLinuxを利用することにより、組込みシステムの要件を満たすハードウェアを自在に選択することができます。つまり、ハードウェアプラットフォームのメリットを最大限に活かしたシステムを開発することが可能です。

Wind River Linux LTS21が標準でサポートしている組込みボードとアーキテクチャ

  • WRL LTS 21 BSP for Axxia AXM55xx / AXM56xx(Axxia ARM AXM5516 Amarillo)
  • WRL LTS 21 BSP for Xilinx Zynq UltraScale+ MPSoC(Zynq UltraScale+ MPSoC ZCU102 Evaluation Kit)
  • WRL LTS 21 BSP for NXP LS1043A RDB(QorIQ Layerscape LS1043A RDB)
  • WRL LTS 21 BSP for NXP i.MX8(i.MX 8MQuad Evaluation Kit)
  • WRL LTS 21 BSP for NXP S32G(S32G Evaluation Board(S32G-VNP-EVB))
  • WRL LTS 21 BSP for NXP S32G(NXP S32G Reference Design Board 2(S32G-VNP-RDB2))
  • WRL LTS 21 BSP for Intel FPGA Stratix 10(Stratix 10 SoC Development Kit)
  • WRL LTS 21 BSP for NXP LS1043A RDB(QorIQ Layerscape LS1043A RDB(LS1023A Mode))
  • WRL LTS 21 BSP for Axxia AXM55xx / AXM56xx(Axxia ARM64 AXM5616 Victoria)
  • WRL LTS 21 BSP for NXP i.MX6(i.MX6UL)
  • WRL LTS 21 BSP for TI Jacinto 7(TDA4xM)(Jacinto 7 J721E EVM)
  • WRL LTS 21 BSP for NXP LX2160A RDB(QorIQ Layerscape LX2160A RDB)
  • WRL LTS 21 BSP for NXP QorIQ LS1028A RDB(QorIQ Layerscape LS1028A RDB)
  • WRL LTS 21 BSP for NXP i.MX8(i.MX 8QuadMax Multisensory Enablement Kit(MEK))
  • WRL LTS 21 BSP for Raspberry Pi 4(Model B)(Raspberry Pi 4)
  • WRL LTS 21 BSP for Marvell CN106xx(ASIM-CN106XX(simulator))
  • WRL LTS 21 BSP for Marvell CN9xxx(Marvell CN96xx CRB(R1P1))
  • WRL LTS 21 BSP for Xilinx Zynq-7000(Zynq-7000 EPP ZC706)
  • WRL LTS 21 BSP for Xilinx Zynq-7000(Zynq-7000 EPP ZC702)
  • WRL LTS 21 BSP for Intel x86 (includes Atom/Core/Xeon)
    • 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を自社で独自に開発して管理、運用する場合は、システムを構成するこれらすべての技術に精通したエンジニアを揃え、日々のメンテナンスコストを投じなければなりません。

    hypervisor

    組込み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
    • Red Hat Enterprise Linux
    • SUSE Linux Enterprise
    • Ubuntu Server (Canonical)
    • Fedora
    • CentOS
    • openSUSE
    • Ubuntu
    • Debian

    Linux Communities (e.g., kernel.org)


    組込みLinux
    商用組込みLinux コミュニティサポート組込みLinux ハードウェアベンダー製Linux
    • Wind River Linux
    • Mentor Embedded Linux (FlexOS)
    • Mentor Embedded Linux (OmniOS)
    • MontaVista CGX (Carrier Grade Express) Linux
    • Ubuntu Core
    • Yocto Project (OpenEmbedded)
    • Buildroot
    • OpenWrt
    • Linaro Arm
    • ハードウェア固有の機能を直接操作できるSDKやツールが提供される
    • 無償あるいはハードウェアとセットで入手できる
    • 一部の機能はオープンなコミュニティサポートLinuxへ統合されない
    • CPetaLinux (Xilinx)

    Linux Communities (e.g., kernel.org)


    Roll-Your-Own Linux
    • オープンソースのソフトウェアを自社で収集して統合したLinuxディストリビューション
    • 自社製品に最適化されているが、ソフトウェアの更新やCVEへの対策を自社で管理する必要がある

    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
    • 特定の機器用に作られたものではない汎用OS
    • OSベンダーがOSを設計しビルドする
    • ユーザは純粋なバイナリ環境を入手して利用する
    • ユーザによる変更は、エディションの選択、アプリケーションのインストール、管理設定項目の変更などに限定される
    • 製品ライフサイクルは3〜5年程度
    • 一般的な利用方法に限りサポート
    • 特定機器向けにカスタマイズされた、特有の機能を提供するOS
    • エンドユーザが直接OSを操作することはない
    • ハードウェアやメモリの容量などの制約により、パッケージのカスタマイズやソースコードのビルド環境が不可欠
    • 重要なインフラに組み込まれ、安易にリプレースできない
    • 高いカスタマイズ性と高い信頼性が求められる
    • システムの導入コストが比較的高価となるため、システムのライフサイクルは5~10年あるいはそれ以上が求められ、組込み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
    • オープンソースの技術とコミュニティが開発したイノベーティブな技術により構築されている
    • コミュニティは、リーダー、メンテナ、コントリビュータ、ユーザといった組織構造から成り立っている
    • 各メンバーはコミュニティに対して自由に貢献できる
    • 革新的な技術の実現が重要視されている
    • 長期サポートは重要視されず、あまり期待できない
    • 不具合修正やCVEへの対策は後回しとされることが多い
    • 各ディストリビューションは、単一の企業や団体により管理されている
    • コミュニティが達成したイノベーションの成果が製品に取り込まれる
    • 5~10年の長期サポートが重要視される
    • オープンソースライセンスやポリシーの管理に対するリスクヘッジは提供元企業によって実施され、自社で個別にLinuxを直接導入するよりも低いリスクでLinuxベースのシステムを開発できる
    • SLA(サービスレベル契約)に従ったサポートが提供される
    • 不具合修正とCVEに対する改善が積極的に実施される




    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)

    hypervisor

    さらに、Wind River Linuxでは、ウインドリバーがすべてのパッケージについて、コンテンツ、著作権、ライセンスに関する完全な情報を提供します。組込みシステムに統合されるIP(知的財産)、ロイヤリティ、サブスクリプションの制約が解決され、法的な責任やコンプライアンスに関する問題を回避することができます。Roll-Your-Own Linuxで課題となるリスクや運用コストを大幅に低減できるため、総所有コスト(TCO)の削減も可能です。

    このように、40年にわたって組込みソフトウェアをリードし、15年以上オープンソフトウェアにも貢献してきたウインドリバーの商用Linux製品であるWind River Linuxは、世界中で数億にのぼるデバイスで稼働しており、製品計画、開発、商用デプロイにおいて高い信頼性と柔軟性を提供しています。



    よくある質問

    組込みLinuxはRTOS(リアルタイムOS)ですか?

    いいえ、組込みLinuxはRTOSではありません。ただし、Linuxカーネルへpreempt-rtパッチを適用することにより、RTOSの性能に近しい高パフォーマンスでデターミニズムを兼ね備えたシステムを実現することができます。

    組込みLinuxの開発は何から始めると良いでしょうか?

    組込みLinuxが採用されるシステムは、限られた演算能力やメモリ上での動作、認証を受けるべき安全要件、過酷な環境での運用が求められます。そのため、組込みLinuxを利用したシステム開発は、まずシステムが達成すべき最低限の要求事項の確認から始めると良いでしょう。また、システムが提供すべき機能を整理することも大切です。

    組込みLinuxはどのように選定・導入すると良いでしょうか?

    まず、組込みシステムの要件を理解した上で、プロジェクトの目標を達成するために必要な要求事項を把握してください。次に、要求事項を満たすことのできるハードウェアを選択します。最後に、対象とするハードウェアの制御に必要なボードサポートパッケージ(BSP)を持つ組込みLinuxを選定しましょう。もし対応するBSPが見つからない場合、ウインドリバーのプロフェッショナルサービス(受託開発)でBSP開発をすることも可能です。

    組込みにおけるベアメタル開発とは何ですか?

    ベアメタル開発とは、システムの構築にOSを利用せず、ソフトウェアを直接ハードウェア上に実装する開発手法です。OSが無いため、メモリ使用量(フットプリント)を削減することはできますが、デバイスドライバがないことからすべてのハードウェアを制御するコードを自社で実装し、テストしなければなりません。

    組込みLinuxを利用した開発の難しさはどこにありますか?

    汎用Linuxに比べ、組込みLinuxの開発は難しい傾向にあります。組込みLinuxシステムの開発では、初期段階においてシステム要件をすべて明確化し、対応するユースケースに基づく制約を整理し、機器が求める長期のライフサイクルをメンテナンスするために必要な運用方法を十分に検討する必要があるためです。

    Wind River Linuxの価格・ライセンス形態について教えてください。

    Wind River Linuxの価格は、プロジェクト単位での価格設定です。製品出荷数単位でのロイヤリティは不要です。

    リソース