Con il progredire della tecnologia, soprattutto nei settori automobilistico, dell'elettronica di consumo e medico, i chip sono incorporati in quasi tutti gli aspetti della vita quotidiana, dall'infotainment automobilistico allo schermo chirurgico intelligente per le sale operatorie. A causa della pandemia, il rallentamento della produzione di semiconduttori ha portato a una carenza di chip prevista per la fine del 2023. Tuttavia, il problema è continuato e ha interferito con la produzione di tecnologie comuni. Con l'eliminazione delle restrizioni da parte di altri Paesi e la ripresa dell'economia, anche i produttori di dispositivi embedded e di altre tecnologie potranno tornare alla normalità. Ma le condizioni post-pandemia hanno lasciato una carenza di chip, limitando la capacità dei produttori di costruire e distribuire prodotti. Per ingegneri, product manager e sviluppatori, questo potrebbe sembrare un ostacolo difficile da superare, ma esistono delle alternative: la virtualizzazione e i container. Entrambe le soluzioni possono essere utilizzate nei sistemi Linux embedded per fornire il supporto a più sistemi operativi e rispettare le scadenze di distribuzione delle applicazioni.
Contenitori e Linux integrato
L'uso di un ambiente containerizzato in Linux embedded è diverso dalle controparti desktop a causa delle risorse limitate sui sistemi embedded. I container sono commercializzati come un'opzione leggera e più flessibile dell'hypervisor e gli sviluppatori possono isolare le applicazioni da altre in esecuzione sullo stesso sistema. Sebbene non siano la stessa cosa di chroot, i container in Linux sono simili: i processi sono isolati dalle altre applicazioni e forniscono alle applicazioni uno spazio dei nomi, una memoria e risorse di rete dedicate. I container sono isolati dagli altri, ma possono comunque comunicare tra loro utilizzando le loro API. La comunicazione tra i container può essere soggetta a politiche di sicurezza a grana fine (più o meno paragonabili a un firewall nelle tecnologie di rete).
Nello sviluppo, i container sono molto più convenienti e versatili delle macchine virtuali. Uno sviluppatore può creare un contenitore e distribuirlo su vari sistemi, compreso l'ambiente di sviluppo Embedded locale o l'hardware embedded di destinazione. Le configurazioni per il container e l'impostazione dell'ambiente personalizzato sono incluse nel pacchetto, quindi non è necessario fare altro che distribuire il container. In altre parole, non è più necessario configurare individualmente il dispositivo di destinazione dopo aver distribuito l'applicazione. Lo stesso può essere fatto con un sistema Linux embedded tra chipset, emulatori e dispositivi.
Un altro vantaggio dei container è che si possono creare e rimuovere a seconda delle necessità, quindi la loro manutenzione è molto più semplice. Invece di gestire l'applicazione con gli aggiornamenti installati, un contenitore di applicazioni può essere rimosso e ricreato per ogni nuova versione, aggiornamento o patch. Questo vantaggio in termini di risparmio di tempo ha reso i container una scelta preferibile per molti ingegneri applicativi e team di sviluppo in cui vengono distribuiti più sistemi operativi, applicazioni e versioni.
Per i produttori che lavorano con Linux embedded, i container possono contribuire ad alleviare la lotta contro la carenza di chip, fornendo una soluzione flessibile per la distribuzione delle applicazioni. Per ospitare più sistemi operativi, tuttavia, i container vengono utilizzati insieme all'hypervisor o alla virtualizzazione.
Hypervisor, macchine virtuali e Linux integrato
Sebbene ci siano molte ragioni per utilizzare i container nello sviluppo, alcuni OEM preferiscono ancora la virtualizzazione. Uno svantaggio dei container è che condividono le risorse con il sistema operativo sottostante, quindi devono essere progettati per ogni sistema operativo. La virtualizzazione è vantaggiosa per gli sviluppatori che hanno più applicazioni che devono essere eseguite su singoli sistemi operativi. Gli sviluppatori progettano e testano le applicazioni utilizzando un ambiente virtualizzato per emulare ciascun dispositivo e il relativo sistema operativo.
La virtualizzazione consente alle applicazioni di essere eseguite su istanze hardware astratte, quindi è vantaggiosa se gli sviluppatori hanno una singola applicazione che deve interagire con il sistema operativo come se fosse in esecuzione su un hardware dedicato. Questo può essere un po' più "ingombrante" in termini di utilizzo delle risorse, ma consente comunque agli sviluppatori di eseguire più sistemi operativi su un singolo dispositivo. Poiché i chip sono attualmente limitati, si tratta di un enorme vantaggio per i produttori che lottano per mantenere le scadenze di distribuzione senza l'hardware necessario per i tradizionali test di ingegneria e QA.
In Linux embedded, la Kernel-based Virtual Machine (KVM) è comunemente utilizzata per supportare la virtualizzazione. KVM consente agli ambienti virtualizzati di essere eseguiti sullo stesso hardware fisico ed è già una parte nativa del kernel Linux che fornisce agli sviluppatori una soluzione per eseguire istanze di ogni macchina virtuale con le proprie risorse di memoria, CPU e rete.
Le macchine virtuali sono utilizzate in aggiunta ai container quando sono necessari più sistemi operativi. Un problema di fondo dei container è che la versione del kernel del sistema operativo deve essere la stessa per tutti i container supportati; ad esempio, questo è il motivo per cui è possibile continuare a eseguire un container Android su un sistema operativo Linux embedded. In questo scenario complicato e per superare queste limitazioni, gli OEM a volte utilizzano macchine virtuali per virtualizzare l'hardware e poi distribuiscono container configurati per un sistema operativo specifico in esecuzione su singole istanze. Gli sviluppatori ottengono il meglio di entrambi i mondi: più sistemi operativi possono essere eseguiti utilizzando un hypervisor e i container possono essere utilizzati per distribuire applicazioni isolate.
In che modo la virtualizzazione e i container sono utili durante la carenza di chip?
Si dice che la carenza di chip potrebbe durare fino al 2023. Ciò significa che gli sviluppatori di applicazioni destinate ai sistemi embedded devono trovare il modo di continuare lo sviluppo dei prodotti con un numero inferiore di chip disponibili per i test. Le macchine virtuali e la tecnologia dei container consentono di testare le applicazioni su più sistemi operativi su un unico dispositivo hardware fisico. L4B Software lavora con entrambe le tecnologie in modo che i produttori possano rispettare le scadenze di sviluppo e supportare le applicazioni embedded fino a quando la carenza di chip continuerà.