Im Zuge des technologischen Fortschritts, insbesondere in den Bereichen Automobil, Unterhaltungselektronik und Medizin, sind Chips embedded in fast jedem Aspekt des täglichen Lebens zu finden, vom Infotainment im Auto bis zum intelligenten chirurgischen Bildschirm für den OP. Aufgrund der Pandemie führte eine Verlangsamung der Halbleiterherstellung zu einer Chip-Knappheit, die bis Ende 2023 prognostiziert wird. Dennoch hat sich das Problem fortgesetzt und die Produktion gängiger Technologien beeinträchtigt. Wenn mehr Länder die Beschränkungen aufheben und die Wirtschaft wieder anspringt, können auch die Hersteller von Embedded Geräten und anderen Technologien zur Normalität zurückkehren. Die Bedingungen nach der Pandemie haben jedoch zu einem Mangel an Chips geführt, der die Möglichkeiten der Hersteller zur Herstellung und zum Vertrieb von Produkten einschränkt. Für Ingenieure, Produktmanager und Entwickler mag dies wie eine schwierige Hürde erscheinen, aber es gibt Alternativen - Virtualisierung und Container. Beide Lösungen können in embedded Linux-Systemen eingesetzt werden, um Unterstützung für mehrere Betriebssysteme zu bieten und die Fristen für die Bereitstellung Ihrer Anwendungen einzuhalten.
Container und Embedded Linux
Die Verwendung einer Container-Umgebung in embedded Linux unterscheidet sich von den Desktop-Pendants aufgrund der begrenzten Ressourcen auf embedded Systemen. Container werden als leichtgewichtige, flexiblere Option zum Hypervisor vermarktet, und Entwickler können Anwendungen von anderen, auf demselben System laufenden Anwendungen isolieren. Container in Linux sind zwar nicht dasselbe wie chroot, aber sie ähneln sich, da Prozesse von anderen Anwendungen isoliert werden und Anwendungen einen eigenen Namensraum, Speicher und Netzwerkressourcen erhalten. Container sind von anderen isoliert, können aber dennoch über ihre API miteinander kommunizieren. Diese Kommunikation zwischen Containern kann fein abgestuften Sicherheitsrichtlinien unterliegen (in etwa vergleichbar mit einer Firewall in der Netzwerktechnik).
In der Entwicklung sind Container viel praktischer und vielseitiger als virtuelle Maschinen. Ein Entwickler kann einen Container erstellen und ihn auf verschiedenen Systemen bereitstellen, z. B. auf seiner lokalen Entwicklungsumgebung Embedded oder auf der Zielhardware embedded . Die Konfigurationen für den Container und die benutzerdefinierte Umgebung sind im Paket enthalten, sodass nichts weiter als die Bereitstellung des Containers erforderlich ist. Mit anderen Worten: Das Zielgerät muss nach der Bereitstellung der Anwendung nicht mehr einzeln konfiguriert werden. Das Gleiche kann mit einem embedded Linux-System über Chipsätze, Emulatoren und Geräte hinweg gemacht werden.
Ein weiterer Vorteil von Containern besteht darin, dass Sie sie je nach Bedarf erstellen und entfernen können, was ihre Wartung erheblich vereinfacht. Anstatt die Anwendung mit installierten Updates zu verwalten, kann ein Anwendungscontainer entfernt und für jede neue Version, jedes Update oder jeden Patch neu erstellt werden. Dieser zeitsparende Vorteil hat Container zu einer bevorzugten Wahl für viele Anwendungsingenieure und Entwicklungsteams gemacht, die mehrere Betriebssysteme, Anwendungen und Versionen bereitstellen.
Für Hersteller, die mit embedded Linux arbeiten, können Container den Kampf gegen den Chipmangel erleichtern, indem sie eine flexible Lösung für die Anwendungsbereitstellung bieten. Um mehrere Betriebssysteme zu hosten, werden Container jedoch in Verbindung mit Hypervisor oder Virtualisierung verwendet.
Hypervisor, virtuelle Maschinen und Embedded Linux
Obwohl es viele Gründe für den Einsatz von Containern in der Entwicklung gibt, bevorzugen einige OEMs immer noch die Virtualisierung. Ein Nachteil von Containern ist, dass sie Ressourcen mit dem zugrundeliegenden Betriebssystem gemeinsam nutzen, so dass sie für jedes Betriebssystem entwickelt werden müssen. Virtualisierung ist vorteilhaft für Entwickler, die mehrere Anwendungen haben, die auf einzelnen Betriebssystemen ausgeführt werden müssen. Die Entwickler entwickeln und testen Anwendungen in einer virtualisierten Umgebung, um jedes Zielgerät und sein Betriebssystem zu emulieren.
Virtualisierung ermöglicht die Ausführung von Anwendungen auf abstrakten Hardware-Instanzen. Dies ist von Vorteil, wenn Entwickler eine einzelne Anwendung haben, die mit dem Betriebssystem so interagieren muss, als ob sie auf dedizierter Hardware ausgeführt würde. Dies kann etwas "sperriger" in Bezug auf die Ressourcennutzung sein, aber es ermöglicht Entwicklern, mehrere Betriebssysteme auf einem einzigen Gerät auszuführen. Da die Anzahl der Chips derzeit begrenzt ist, stellt dies einen großen Vorteil für Hersteller dar, die ohne die für ihre traditionellen Entwicklungs- und Qualitätssicherungs-Tests erforderliche Hardware um die Einhaltung von Bereitstellungsfristen kämpfen.
In embedded Linux wird die Kernel-basierte virtuelle Maschine (KVM) üblicherweise zur Unterstützung der Virtualisierung verwendet. KVM ermöglicht die Ausführung virtualisierter Umgebungen auf derselben physischen Hardware und ist bereits ein nativer Teil des Linux-Kernels, der Entwicklern eine Lösung für die Ausführung von Instanzen jeder virtuellen Maschine mit eigenem Speicher, CPU und Netzwerkressourcen bietet.
Virtuelle Maschinen werden zusätzlich zu Containern verwendet, wenn mehrere Betriebssysteme erforderlich sind. Ein grundlegendes Problem bei Containern ist, dass die Kernelversion des Betriebssystems für alle unterstützten Container gleich sein muss. So können Sie beispielsweise Android-Container auf Embedded Linux OS laufen lassen. In diesem komplizierten Szenario und um diese Einschränkungen zu umgehen, verwenden OEMs manchmal virtuelle Maschinen, um die Hardware zu virtualisieren und dann Container bereitzustellen, die für ein bestimmtes Betriebssystem konfiguriert sind, das auf einzelnen Instanzen läuft. Entwickler erhalten so das Beste aus beiden Welten, da mehrere Betriebssysteme über einen Hypervisor ausgeführt werden können und Container für die Bereitstellung isolierter Anwendungen verwendet werden können.
Wie helfen Virtualisierung und Container bei der Chipknappheit?
Berichten zufolge könnte die Chip-Knappheit bis 2023 anhalten. Das bedeutet, dass Anwendungsentwickler, die auf die Systeme von embedded abzielen, Wege finden müssen, um die Produktentwicklung mit weniger Chips fortzusetzen, die für Tests zur Verfügung stehen. Virtuelle Maschinen und Containertechnologie ermöglichen es, Anwendungen auf mehreren Betriebssystemen auf einem einzigen physischen Hardwaregerät zu testen. L4B Software arbeitet mit beiden Technologien, so dass die Hersteller die Entwicklungsfristen einhalten und die Anwendungen von embedded unterstützen können, solange der Chipmangel anhält.