同じ組み込みCPUで複数のOSを動かす - OEMはチップ不足の危機をどう乗り越えるか?

技術の進歩、特に自動車、家電、医療分野での進歩に伴い、チップは自動車のインフォテインメントから手術室のスマート手術用スクリーンに至るまで、日常生活のほとんどあらゆる場面に組み込まれている。パンデミックのため、半導体製造の減速は2023年末までのチップ不足につながった。それでもこの問題は続いており、一般的な技術の生産に支障をきたしている。より多くの国が規制を解除し、経済が回復すれば、組み込み機器やその他の技術のメーカーも正常な状態に戻ることができる。しかし、パンデミック後の状況はチップ不足をもたらし、メーカーが製品を製造・販売する能力を制限している。エンジニア、プロダクトマネージャー、開発者にとって、これは難しいハードルのように思えるかもしれないが、仮想化とコンテナという選択肢がある。どちらのソリューションも組込みLinuxシステムで使用することができ、複数のOSをサポートすることで、アプリケーション展開の期限を守ることができます。

コンテナと組み込みLinux

組込みLinuxでコンテナ化された環境を使用することは、組込みシステムのリソースが限られているため、デスクトップとは異なる。コンテナは、ハイパーバイザーに対する軽量でより柔軟なオプションとして販売されており、開発者は同じシステム上で実行されている他のアプリケーションからアプリケーションを分離することができます。chrootとは異なるが、Linuxのコンテナは、プロセスが他のアプリケーションから分離され、アプリケーションに専用の名前空間、メモリ、ネットワーク・リソースを与える点で似ている。コンテナは他から隔離されているが、APIを使って互いに通信することができる。 このコンテナ間の通信には、きめ細かなセキュリティ・ポリシー(ネットワーク技術におけるファイアウォールにほぼ匹敵)を適用することができる。

開発において、コンテナは仮想マシンよりもはるかに便利で汎用性が高い。開発者はコンテナを作成し、ローカルの Embedded 開発環境や ターゲットの組み込みハードウェアなど、さまざまなシステムにデプロイできます。コンテナ用の設定やカスタム環境のセットアップは、コンテナと一緒にパッケージ化されているため、コンテナをデプロイする以上のことは必要ありません。言い換えれば、アプリケーションをデプロイした後、ターゲットデバイスを個別に設定する必要がなくなる。同じことが、チップセット、エミュレータ、デバイスにまたがる組込みLinuxシステムでも可能だ。

コンテナのもう1つの利点は、必要に応じてコンテナを作成したり削除したりできるため、メンテナンスがずっと簡単になることだ。インストールされたアップデートでアプリケーションを管理する代わりに、アプリケーション・コンテナは新しいバージョン、アップデート、パッチごとに削除して再作成できる。このような時間節約のメリットにより、コンテナは、複数のOS、アプリケーション、バージョンをデプロイする多くのアプリケーション・エンジニアや開発チームにとって望ましい選択肢となっている。

組込みLinuxを扱うメーカーにとって、コンテナは柔軟なアプリケーション展開ソリューションを提供することで、チップ不足をめぐる争いを緩和するのに役立つ。しかし、複数のOSをホストするために、コンテナはハイパーバイザーや仮想化と組み合わせて使用される。

ハイパーバイザー、仮想マシン、組み込みLinux

開発でコンテナを使う理由はたくさんあるが、一部のOEMはいまだに仮想化を好んでいる。コンテナの欠点の1つは、基盤となるOSとリソースを共有するため、OSごとに設計しなければならないことだ。仮想化は、個々のOS上で実行しなければならない複数のアプリケーションを持つ開発者にとって有益だ。開発者は、仮想化環境を使用して、ターゲットとなる各デバイスとそのOSをエミュレートし、アプリケーションのエンジニアリングとテストを行う。

仮想化によって、抽象的なハードウェア・インスタンス上でアプリケーションを実行できるようになるため、あたかも専用ハードウェア上で動作しているかのようにオペレーティング・システムとやり取りする必要がある単一のアプリケーションを開発する場合に有益だ。リソースの使用量という点では少し「かさばる」かもしれないが、それでも開発者は1つのデバイス上で複数のOSを実行することができる。現在のところチップには限りがあるため、従来のエンジニアリングやQAテストに必要なハードウェアなしで展開期限を守ろうと奮闘しているメーカーにとっては大きなメリットだ。

組込みLinuxでは、仮想化をサポートするためにカーネルベースの仮想マシン(KVM)が一般的に使用されています。KVMは仮想化環境を同じ物理ハードウェア上で実行することを可能にし、開発者に各仮想マシンのインスタンスを独自のメモリ、CPU、ネットワークリソースで実行するソリューションを提供するLinuxカーネルのネイティブな部分である。 

複数のOSが必要な場合は、コンテナに加えて仮想マシンも使用される。コンテナの根本的な問題の1つは、OSカーネル・バージョンが、サポートされるすべてのコンテナで同じでなければならないことだ。例えば、これがEmbedded Linux OSの上でAndroidコンテナを実行し続ける方法だ。この複雑なシナリオで、これらの制限を超えるために、OEMは仮想マシンを使用してハードウェアを仮想化し、個々のインスタンス上で動作する特定のオペレーティング・システム用に構成されたコンテナをデプロイすることがある。開発者は、ハイパーバイザーを使用して複数のオペレーティング・システムを実行し、コンテナーを使用して分離されたアプリケーションをデプロイできるという、両方の長所を得ることができる。

仮想化とコンテナはチップ不足にどう役立つのか?

チップ不足は2023年まで続くと言われている。つまり、組込みシステムをターゲットとするアプリケーション開発者は、テストに利用できるチップが少なくなっても製品開発を継続できる方法を見つけなければならない。仮想マシンとコンテナ技術により、1つの物理的ハードウェア・デバイス上で複数のオペレーティング・システム上のアプリケーションをテストすることが可能になる。L4B Softwareはこの2つの技術に対応しており、メーカーはチップ不足が続く限り、開発期限を守り、組み込みアプリケーションをサポートすることができます。

新しいコール・トゥ・アクション