組み込みLinux入門

RTOSと組み込みLinuxの選択を示す図。RTOS(リアルタイムOS)はモーター、ロボットアーム、MCUを例に、高速なリアルタイム性、省メモリ、軽量が特長である。組み込みLinuxはタッチパネル、無線ルータ、クラウドを例に、多機能、エコシステム、高い拡張性、GUIが特長である。要件に応じてどちらかを選択する。

昨今はIoT機器の高機能化やネットワーク対応が求められるため、従来のマイクロコントローラ(以下、マイコン)による制御に加えて、「組み込みLinux」の導入を検討する開発現場が増えています。

しかし、いざシステムを設計する際、「従来のRTOS(リアルタイムOS)と組み込みLinux、どちらを採用すべきか」というように、アーキテクチャの選定に頭を悩ませるエンジニアも少なくありません。

この記事では、実務で活躍するエンジニアに向けた「組み込みLinux 入門」として、RTOSとの明確な使い分け基準を解説します。

プロジェクトに最適なOSを迷わず選定し、スムーズにLinux環境での開発をスタートするための実践的なガイドとしてご活用ください。

組み込みLinuxとRTOSやPC用Linuxとの違い

最適なアーキテクチャを選定するためには、RTOSやPC用Linuxとの違いを正しく理解することが重要です。

組み込みLinuxとは?採用が拡大する背景

組み込みLinuxの採用が拡大している背景には、機器に求められる処理の高度化とネットワーク対応があります。画像認識AIを搭載した検査装置や、クラウドと通信するIoT家電などが一例です。

従来のマイコン制御だけで複雑な処理を実装するのは、困難となることがあります。TCP/IPや豊富なオープンソース資産を持つLinuxを採用することで、より充実した機能を搭載しやすくなります。

RTOS(リアルタイムOS)との明確な違いと使い分け基準

ハードウェアを制御するOSを選定する際に、RTOSと組み込みLinuxは「リアルタイム性」と「ハードウェア要件」で使い分ける必要があります。

第1の軸である「リアルタイム性」は、処理応答の猶予時間がどれほど厳密であるかが基準です。処理遅延が事故や重大な設備停止に直結し、期限遵守を保証する必要があるハードリアルタイム要件では、リアルタイムOSの採用を有力な選択肢とします。ただし、要件を満たせるかどうかはOSだけで決まるものではなく、割り込み処理、スケジューリング、ドライバ、ハードウェアを含むシステム全体で最悪遅延時間を設計・検証する必要があります。LinuxにはPREEMPT_RTなど、カーネルのプリエンプション性を高めてレイテンシを低減する仕組みがあります。ただし、達成できる最悪遅延時間はハードウェア、ドライバ、負荷条件、アプリケーション設計などに左右されるため、要求する期限を実測・検証したうえで採否を判断します。

第2の軸である「ハードウェア要件」は、要求されるプロセッサのスペックやメモリ容量が基準です。RTOSは軽量で、MMU(メモリ管理ユニット)を持たない小規模マイコンや省メモリ環境でも動作します。一般的な組み込みLinuxでは、MMUを搭載したプロセッサを用いる構成が主流です。また、カーネル、ユーザ空間、ファイルシステム、ネットワーク機能などを搭載するため、RTOSを用いる構成よりも多くのROM/RAMを必要とする傾向があります。必要なリソースは、GUI、ネットワーク機能、ミドルウェア、ログ保存量などの要件に応じて見積もります。

一般的なPC用Linuxとの違いと組み込み特有の基礎知識

「Linuxカーネル」の基本的なコードベースは、PC用も組み込み用も共通です。ただし、実際の製品開発では、SoC(System on a Chip)ごとのサポートコード(BSP:Board Support Package)や追加のドライバを組み合わせて使うのが定石です。また、組み込み特有の厳しい制約に対応する設計知識や、適切な製品の選択が求められます。

フラッシュメモリの寿命を考慮したファイルシステム

組み込み機器で使われるフラッシュメモリは、書き換え回数に上限(寿命)があります。raw NANDを扱う場合は、UBI(ボリューム管理・wear leveling層)+UBIFS(UBI File System)のような構成を検討します。eMMC(embedded MultiMediaCard)やSDカードのようにコントローラ側で書き込みを分散するメディアでは、一般的なファイルシステムを用いたうえで書き込み量そのものを抑える設計が有効です。

起動速度への厳しい要求

一般的なPCでは起動に数十秒かかることも許容されますが、家電や産業機器では、電源投入後の短時間で操作可能になることが求められる場合があります。そのため、不要なドライバやサービスを削減し、起動順序、サービスの依存関係、ファイルシステム、アプリケーション初期化を見直して、要求される起動時間を満たすように最適化します。

組み込みLinuxの最適なディストリビューションの選び方と開発環境構築

組み込みLinuxの開発をスタートする際、最初に直面するのが「どのディストリビューション(カーネルとソフトウェアなどの構成セット)を選ぶか」と「どう開発環境を構築するか」です。ここでは、実務に直結する選び方と環境構築の基本を解説します。

組み込みLinuxのベースとビルド基盤を選ぶ際の確認ポイント

組み込みLinuxシステムを構築する際、OSのベースの選定と、イメージを生成する「ビルド基盤(例:Yocto ProjectやBuildrootなど)」の選定は、開発効率や製品の性能、商用製品としての信頼性に直結します。

これらは混同されがちですが、たとえばYocto Projectはディストリビューションそのものではなく、メタデータ(レシピ)とBitBakeにより再現性高くカスタムLinuxイメージを生成するためのビルド基盤(プロジェクト)です。

適切な選定にあたっては、プロジェクトの要件(開発スピード、ハードウェアリソース、カスタマイズの必要性、製品寿命など)を踏まえた視点が必要です。

まずは、セキュリティ規格に対応できているかを確認します。IoT機器がサイバー攻撃の標的となる中、EUでは、デジタル要素を含む製品を対象とするサイバーレジリエンス法(Cyber Resilience Act、Regulation (EU) 2024/2847)が制定されています。同規則は原則として2027年12月11日から適用されますが、脆弱性および重大インシデントの報告に関する一部の義務は2026年9月11日から適用されます。IEC 62443やCRAへの対応では、OSやビルド基盤の採用可否だけでなく、製品全体の脆弱性管理、SBOMの整備、セキュリティ更新の提供体制、インシデント報告、セキュアブートなどを含む開発・運用プロセスを確認することが重要です。

さらに、長期サポートが提供されているかどうかも確認しましょう。商用機器は製品寿命が長いケースが多く(5年〜10年、またはそれ以上)、その期間中、安定してセキュリティアップデートや修正プログラムの提供を受ける必要があるためです。

速やかな脆弱性の検出と対応も必要です。新しい脆弱性が発見された際にはシステムに含まれるソフトウェアコンポーネントをチェックして、速やかに修正アップデートを適用できる仕組みが求められます。

実務標準ツール「Yocto Project」を用いた開発環境の構築方法

現在の組み込みLinux開発で、広く採用されているビルドシステムの1つが「Yocto Project(Linux Foundationが主催するオープンソースの組み込みLinuxビルド基盤)」です。

Yocto Projectが実務で選ばれる理由として、レシピなどによる高いビルド再現性と、レイヤ構造による柔軟なシステム構築・管理能力があげられます。

Yocto Projectは、「どのソースコードをどこから取得し、どのようなパッチを当て、どうビルドするか」という手順を、「レシピ」と呼ばれるテキストファイルで定義する仕組みです。

Yocto Projectには、「レイヤ」という単位でまとめたレシピなどの集合体もあり、機能や半導体デバイス、半導体メーカ単位で選択できます。

レシピやレイヤの記述内容に基づき、ビルドエンジンである「BitBake」がソースコードの取得やコンパイル、OSイメージの生成などを自動的に実行する設計が基本です。また、Gitなどのバージョン管理システムと容易に連携できます。

クロス開発環境の整備とホストパッケージのインストール

ターゲットボード(マイクロプロセッサやマイクロコントローラ、メモリ、周辺回路などを搭載した基板)の上で直接OSをビルドすることは、リソース的に不可能となる場合が多いです。この場合は、開発用の強力なPC(ホスト環境)を用意してビルドする「クロス開発」が基本となります。

ビルド処理は、CPUやメモリ、ストレージに大きな負荷をかけます。処理能力の高いPC環境を整えることが必要です。

ビルドツールがエラーなく正常に動作するためには、ホストOS(例:一般的なLinuxディストリビューションなど)に専用のパッケージ群をあらかじめ揃えておく必要があります。パッケージが不足しているとビルドが途中で失敗するおそれがあります。使用するバージョンの公式マニュアルを確認し、指定されたパッケージなどをもれなくインストールしましょう。

組み込みLinuxで実機を使用した動作手順とノウハウ

ビルドしたOSイメージをターゲット基板で起動するまでの手順と、実務ノウハウを解説します。

実機動作における評価ボードの選定と役割

組み込みLinux開発で、開発したOSイメージを実機(ターゲットボード)上で動作させることは、検証やデバッグで重要です。実務では、開発のフェーズや製品の用途にあわせて評価ボードを使い分けます。

小型のシングルボードコンピュータ(SBC)は、入手性が高く公開情報も豊富で、初期段階の検証(Proof of Concept:概念実証)に向いています。

メーカが供給する産業機器・製品開発用途の評価ボードは、高い信頼性と長期供給を強みとする製品が多いです。実際の産業機器や本格的な製品化に選ばれます。

OSイメージの書き込み処理の基本

OSイメージの実機への書き込みは、システムの起動に関わる重要な工程であり、パーティション(メディア内の領域割り当て)の理解と正確な操作が求められます。

ホストPCで生成したイメージファイルは、SDカードへ書き込む方法のほか、ターゲット基板のUSB書き込み機能、ブートローダの書き込み機能、専用書き込みツールなどを用いてeMMCやフラッシュメモリへ転送します。具体的な書き込み方法は、使用するSoCおよびボードの手順書に従います。

ddコマンドなどを使用してデバイスへ直接書き込む場合、出力先(書き込み先)をホストPCのシステムドライブに誤指定しないよう注意します。PCのデータが破損したり、OSが起動できなくなったりするなどのトラブルを引き起こすおそれがあるためです。実行前にコマンドの引数や、書き込みソフトで選択したドライブが正しいかを、複数の方法で確認する必要があります。

シリアル接続による起動確認

実機の動作確認には、「シリアルコンソール」がよく用いられます。実機とPCを接続して、ターゲット機器の状況を知る目的で使用します。通信速度(UARTでは一般にボーレートで設定され、115,200 bpsなど)を基板の仕様に合わせないと文字化けするため注意しましょう。

電源を入れると、起動ログが流れます。途中で起動が止まった場合は、画面の情報などを手掛かりとして原因を特定します。

組み込みLinuxの効率的な学習手順

技術領域が広い組み込みLinuxの学習で挫折しないためには、適切な手順で進めることが重要です。

座学から実機検証までをつなぐ効率的な学習手順

組み込みLinuxを学ぶ場合は、いきなり高度な実装を目指さず、書籍やWebなどで全体像を理解しましょう。その後、ホストPCにクロスコンパイル環境を作り、OSイメージをビルドする一連の流れを体験します。クロスコンパイルとは、プログラムをコンパイルする環境と実行する環境が異なる場合のコンパイル作業のことです。

実機検証では生成したOSイメージを評価ボードで起動し、ハードウェア制御の一連の流れを確認します。評価ボードとは、対象となるSoCやマイコンを搭載し、その性能・機能・特性を検証するための開発用基板を指します。

無料講座やセミナーを活用した学習アプローチ

独学では不明点を解決できないなどの理由で、学習が行き詰まる可能性があります。この事態を防ぐためには、半導体メーカなどが提供する無料の講座やウェビナーの活用が効果的です。

また、メーカ主催のハンズオンセミナーなどに参加すれば、最新の実務ノウハウを直接学ぶ機会も得られます。実践的な講座の活用も、開発の第一歩を踏み出すうえで大切です。

組み込みソフトの世界 トップへ戻る