組込み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に関するFAQ

    組込みLinuxは、モバイル機器やルータなどのIoT(Internet of Things)機器の組込みシステムで動作するように設計され、特化したLinuxオペレーティングシステムです。
    オープンソースの性質、柔軟性とスケーラビリティ、幅広いハードウェアアーキテクチャのサポート、堅牢性と安定性、開発者とユーザーのための大規模なコミュニティがあることなどが挙げられます。
    小フットプリント、リアルタイムアプリケーションのサポート、パワーマネジメント、様々なネットワークプロトコル、カスタマイズ可能なユーザーインターフェイスなどが挙げられます。
    組込みLinuxは、特殊なユースケースのために特別に作られたハードウェアを実行するために使用されます。
    いいえ、組込みLinuxはRTOSではありません。しかし、ディターミニズムが必要なシステムでは、Linuxカーネルにpreempt-rtパッチを適用することで、同等の性能で同様の機能を実現できます。
    一般的なLinuxは、ワークステーションやサーバに使用されるエンタープライズOSのイメージがありますが、組込み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 のメタデータなどの再統合された要素を使用して、組込み用Linuxディストリビューションの構築を支援するツールです。
    ベアメタルとは、プロセスを管理するオペレーティングシステムを必要とせず、ソフトウェアがハードウェアリソース上で動作し、直接アクセスする方式のことです。
    組込みデバイスの要件を理解し、プロジェクトの目標を達成するために必要な部品表(Bill of materials/BOM)を把握することが重要です。次に、ハードウェアを選択し、必要な特定のハードウェアと機能に対応したボードサポートパッケージ(BSP)を備えた OS を選択します。
    組込み開発は目的に合わせて構築しているため、各プロジェクト別にカスタマイズされたバージョンが、お客様の組込みユースケースに最適と言えます。
    汎用 Linux と比較すると組込み向けの Linux ベースの OS を構築することは困難と言えます。これは、一連の明確な要件から開始し、対応するユース ケースに基づいて制約を理解し、メンテナンスの側面を考慮する必要があるためです。
    適切なハードウェアプラットフォームとLinuxディストリビューションの選択、システムの構成と必要なソフトウェアのインストール、組込みシステム環境用のアプリケーションの作成または適応させることで、組込みLinuxを使い始めることができます。開発者がこれらの作業を行うために、様々なツール、リソース、コミュニティフォーラムが利用可能です。
    Wind River Linuxの価格は、プロジェクト単位での価格設定です。製品出荷数単位でのロイヤリティは不要です。

    リソース

    Previous Next