Technology

Linux

(Linux)

Linuxは、コンピュータや組込み機器を動作させるために使用される、オープンソースのOS基盤です。

厳密には、LinuxはOS全体ではなく、CPU、メモリ、ストレージ、通信機器などのハードウェアを管理する中核部分であるLinuxカーネルを指します。実際の製品では、Linuxカーネルにライブラリ、コマンド、デバイスドライバー、設定ツール、アプリケーションなどを組み合わせたLinuxディストリビューションが使用されます。

Linuxは、一般的なサーバーやパソコンだけでなく、通信機器、表示器、計測機器、ゲートウェイ、産業用端末などにも採用されています。組込み機器では、必要な機能に絞った構成とし、専用ハードウェア上で動作させます。

Linuxが担う主な役割

  • CPU、メモリ、ストレージなどのハードウェア管理
  • 複数のプログラムや処理の実行管理
  • Ethernet、無線LAN、USB、シリアル通信などの制御
  • ファイル、設定値、計測データ、ログの保存
  • ディスプレイやタッチパネルの制御
  • ユーザー、権限、認証の管理
  • 時刻同期、ログ管理、遠隔保守

組込み製品では、Linux上で製品固有のアプリケーションを動作させ、計測、表示、通信、データ保存、外部システムとの連携などを実現します。

Linuxディストリビューションとは

Linuxカーネルに、ライブラリ、コマンド、設定機能、アプリケーションなどを組み合わせ、OSとして利用できるようにしたものをLinuxディストリビューションと呼びます。

ディストリビューションによって、標準搭載されるソフトウェア、設定方法、パッケージ管理、更新方法、サポート期間、対応CPU、商用サポートなどが異なります。

組込み製品では、一般的なパソコン向けディストリビューションをそのまま使用するとは限りません。製品に必要な機能を選び、専用基板やSBCに合わせてブートローダー、カーネル、ドライバー、ルートファイルシステムを構成します。

組込みLinux

通信機器、表示器、計測機器など、特定の用途を持つ専用機器へ組み込むLinuxは、組込みLinuxと呼ばれます。

組込みLinuxでは、ストレージ容量、メモリ容量、起動時間、消費電力、セキュリティ、更新方法などを考慮し、不要な機能やサービスを減らします。製品を長期間安定して使用するためには、動作することだけでなく、異常時の復旧、ログの取得、更新後の確認、将来の部品変更まで見据えた設計が必要です。

Linuxを採用する主な利点

通信・ネットワーク機能を構築しやすい

LinuxにはTCP/IPを中心としたネットワーク機能があり、Ethernet、無線LAN、Webサーバー、遠隔監視、データ送信などを実装しやすいことが特長です。

複数の通信方式や上位システムとの接続が必要な場合にも、既存のライブラリやミドルウェアを活用できます。

データ管理機能を持たせやすい

計測結果、警報履歴、設定情報、通信履歴などをファイルやデータベースへ保存し、検索、集計、送信、バックアップできます。

ただし、保存量や書き込み頻度が増える場合は、ストレージの寿命、ファイルシステム、保存領域の構成、ログの削除方法まで検討します。

幅広いハードウェアへ対応できる

一般的なパソコン向けCPUだけでなく、ARM系をはじめとする組込み向けCPUにも対応しています。対応するデバイスドライバーがあれば、表示器、タッチパネル、USB機器、通信回路、ストレージなどを利用できます。

オープンソース資産を活用できる

通信、暗号化、データベース、画像処理、Web表示など、多くのオープンソースソフトウェアを活用できます。

一方で、オープンソースは無条件で自由に使用できるという意味ではありません。採用するソフトウェアごとにライセンス条件を確認し、ソースコード開示、著作権表示、再配布条件などへ対応します。

LinuxとリアルタイムOSの使い分け

一般的なLinuxは、通信、画面表示、データ保存、データベース、Web機能など、多機能な処理をまとめて実行する用途に適しています。

NORTi、μITRON、μC3などのリアルタイムOSは、決められた時間内に処理を完了することが重要なセンサ読み取り、周期演算、モーター制御、入出力制御などに適しています。

Linuxでもリアルタイム性を高める構成は可能ですが、すべての処理をLinuxだけで行うことが適切とは限りません。製品によっては、時間精度が重要な制御をマイコンとリアルタイムOS、通信、表示、データ管理をLinuxで分担します。

Linuxシステムの基本構成

ブートローダー

電源投入後に最初に動作し、ハードウェアの初期化を行ったうえで、ストレージからLinuxカーネルを読み込みます。更新失敗時に予備領域から起動する仕組みを持たせる場合もあります。

Linuxカーネル

CPU、メモリ、通信、ストレージなどを管理し、アプリケーションがハードウェアを利用するための基盤を提供します。

デバイスドライバー

通信回路、表示器、タッチパネル、センサ、USB機器などをLinuxから利用するためのソフトウェアです。基板や周辺部品を変更する場合は、ドライバーの対応状況を確認します。

ルートファイルシステム

Linuxを動作させるためのライブラリ、設定ファイル、コマンド、サービス、アプリケーションなどを格納します。

製品アプリケーション

計測、制御、表示、通信、データ保存、異常監視など、製品固有の機能を実行します。OS起動後に自動起動し、異常終了時には再起動や警報出力を行う構成も検討します。

Linuxを採用する際の設計上の注意点

ハードウェアとドライバーの適合性

CPUやメモリ容量だけでなく、Ethernet、無線通信、表示器、タッチパネル、USB、シリアル通信などに対応するデバイスドライバーが必要です。

既存のドライバーがあっても、使用するカーネルのバージョンや基板構成によっては、そのまま動作しない場合があります。

電源断とデータ破損

ファイルやデータを書き込んでいる途中で電源が切れると、保存中のデータだけでなく、ファイルシステムが破損して起動できなくなる場合があります。

対策として、システム領域の読み取り専用化、設定・ログ領域の分離、ジャーナリング機能を持つファイルシステム、無停電電源、電源断検出、書き込み抑制などを検討します。

ただし、読み取り専用化すればすべて解決するわけではありません。設定変更、ログ保存、証明書更新、アプリケーション更新など、書き換えが必要な領域をどのように管理するかが重要です。

ストレージ寿命

SDカード、eMMC、SSDなどのフラッシュメモリには書き換え寿命があります。短周期のログ保存や同じファイルの頻繁な更新によって、特定領域の劣化が進む場合があります。

保存周期、書き込み量、ログのローテーション、データベースの更新頻度、空き容量監視などを設計します。

セキュリティ

不要なサービスや通信ポートの無効化、利用者権限の制限、認証、暗号化通信、ログ管理、ネットワーク分離などが必要です。

ネットワークへ接続する製品では、出荷時の初期設定だけでなく、脆弱性が見つかった後にどのように更新するか、更新できない場合にどのように隔離するかまで検討します。

ソフトウェア更新と復旧

Linuxシステムでは、カーネル、デバイスドライバー、ライブラリ、アプリケーションが互いに依存しています。単独で一部を更新すると、互換性の問題が発生する場合があります。

更新前後のバージョン管理、更新中の電源断、更新失敗時の復旧、設定値の引き継ぎ、旧バージョンへの切り戻しなどを設計します。

時刻管理

計測データや警報履歴を扱う製品では、時刻の正確性が重要です。RTC、NTP、GPS/GNSSなどを利用して時刻を合わせ、ネットワーク切断中や電源断中の時刻保持方法も検討します。

長期供給と保守

産業用製品は長期間使用されるため、Linuxディストリビューション、カーネル、CPU、基板、ライブラリのサポート終了が問題になることがあります。

ソースコードだけでなく、クロスコンパイラ、ビルド手順、設定ファイル、パッチ、ライセンス情報、使用部品のバージョンを管理し、開発担当者が変わっても再構築できる状態を保ちます。

異常時の動作設計

Linux搭載機器では、アプリケーションが停止した場合と、OSそのものが停止した場合を分けて考えます。

アプリケーション異常に対しては、プロセス監視、自動再起動、ウォッチドッグ、エラーログ保存などを設けます。OS停止や起動不能に対しては、ハードウェアウォッチドッグ、予備起動領域、復旧用媒体、保守端子などを検討します。

自動再起動を行う場合も、再起動を繰り返すだけでは原因を把握できません。再起動回数、異常発生時刻、直前の処理、通信状態、ストレージ状態などを記録し、保守時に確認できるようにします。

ハカルプラスにおけるLinuxの活用

ハカルプラスでは、一部の製品またはシステムにおいて、LinuxベースのOSを用いた開発実績があります。

SBCなどのコンピュータ基板を組み込み、通信、画面表示、データ保存、外部システム連携などの機能を持たせる場合、ハードウェアとソフトウェアを一体として設計します。

Linux搭載基板の選定、メモリ・ストレージ容量、センサや外部機器との接続、通信、表示器、起動時間、データ保存、電源断対策、異常時復旧、ソフトウェア更新、長期保守などを、製品の運用条件に応じて検討します。

よくある質問

Q. Linux搭載機器の電源を主電源と同時に切っても問題ありませんか?

A. 書き込み処理中に電源が切れると、データやファイルシステムが破損する可能性があります。読み取り専用化、電源断検出、終了処理用の電源保持など、製品構成に応じた対策が必要です。

Q. Linux機器の起動時間を短くできますか?

A. 不要なサービスやドライバーを減らす、初期化処理を見直す、アプリケーションの起動順序を調整するなどの方法があります。必要機能と保守性を維持しながら最適化します。

Q. Linuxを使用すれば制御用マイコンは不要になりますか?

A. 必ずしも不要にはなりません。厳密な周期処理や安全に関わる入出力制御はマイコンやPLCへ任せ、Linuxは通信、表示、保存などを担当する構成があります。

Q. ソフトウェア更新に失敗した場合でも復旧できますか?

A. 更新前の領域を残す、二つの起動領域を切り替える、復旧用媒体を用意するなどの構成を事前に設計していれば、復旧できる可能性が高まります。

Q. Linuxのサポートが終了した場合はどうなりますか?

A. 直ちに動作しなくなるとは限りませんが、セキュリティ修正や新しい部品への対応が受けられなくなる場合があります。製品寿命、ネットワーク接続の有無、更新可能性を踏まえて移行計画を検討します。

関連ワード

お問い合わせ窓口

この技術について
お気軽にお問い合わせください。

お問い合わせフォーム

同じカテゴリの『ハカル技術辞典』を見る

お問い合わせ