Linux è davvero adatto a qualsiasi ambito? Secondo alcuni tecnici che si occupano di aerospazio non ancora!

15

La maggior parte degli utilizzatori GNU/Linux risponderà affermativamente quando gli si chiederà se il proprio sistema operativo preferito è stabile, ma Steven H. VanderLeest (Boeing) e Peter Brink (Underwriter Laboratories) non sono dello stesso avviso e in un recente talk hanno discusso del perché GNU/Linux è inadatto al loro ambiente… ossia quello aerospaziale!

Su Phoronix c’è stata una levata di scudi a difesa del pinguino e sul fatto che è già stato utilizzato in diversi ambiti real-time. Oltretutto, qualche giorno fa, l’elicottero Ingenuity ha fortunatamente rotto 63 giorni di silenzio e festeggiato, così, il cinquataduesimo volo nella rarefatta atmosfera marziana. E il software di controllo di Ingenuity viene eseguito con Linux come sistema operativo.

VanderLeest e Brink, tuttavia, hanno le loro buone ragioni.

Non ce ne vogliano i SysOp che leggono l’articolo: immaginiamo abbiate avuto il vostro carico di weekend passati a sistemare un aggiornamento andato male. Ma cosa può significare un problema inaspettato quando in palio ci sono miliardi di euro o vite umane?

In questi casi estremi il fallimento non è un’opzione: qualsiasi cosa accada, bisogna sempre avere il controllo per riportare in brevissimo tempo il sistema in uno stato sicuro e, secondo loro, Linux non ha questa caratteristica poiché non ha:

  1. Dei requisiti ben definiti.
  2. Certificazioni ogni suo singolo driver.
  3. Una cultura della sicurezza e nemmeno una della qualità.
  4. Un micro – Kernel dove i driver vengano eseguiti con i più bassi privilegi possibili.

Specialmente l’ultimo punto, dicono, è praticamente un errore di progettazione, poiché Linux è monolitico e un driver che vada in errore può mandare in crash il Kernel. La cosa può ricordare un po’ la diatriba tra Torvalds e Tanenbaum negli anni novanta.

Un crash catastrofico può essere recuperato solo se c’è un watchdog hardware, ossia un contatore che ciclicamente viene azzerato da un nostro programma e, se raggiunge il valore massimo previsto, effettua un riavvio hardware del sistema.

Ma questa è davvero l’ultima spiaggia ed è considerata come il lanciarsi con il paracadute da un aereo di linea: cosa può accadere se il ciclo crash-reboot-pronto di un sistema impiega un minuto?

Immaginate di trovarvi su una macchina a guida autonoma che viaggia a 130 km/h in autostrada e che improvvisamente tutti gli schermi e indicatori diventino neri per un minuto. Vi sembra una situazione pericolosa? Ora capite come mai non vogliamo succeda su un caccia che viaggia a Mach 1.6 (1900 km/h circa).

Vanderleest e Brink, tuttavia, indicano a come rimediare agli inconvenienti indicati, anche se si tratterebbe di un lavoro davvero molto impegnativo. Sfortunatamente, un video del loro intervento non è disponibile, ma consigliamo di leggere le slide che hanno prodotto: possono dare un’idea di quanto sia diverso l’ambito aerospaziale da quelli cui siamo abituati: un mondo di certificazioni e test continui, dove il fallimento non è un’opzione e dove parametri come pressione, velocità e tempi di reazioni hanno priorità che non ci verrebbero subito in mente quando si parla di software.

Appassionato di GNU/Linux dal 2000, tento disperatamente di tenermi distante dalla programmazione web e di sviluppare in C/C++ e Python i software che mi vengono commissionati.

15 risposte a “Linux è davvero adatto a qualsiasi ambito? Secondo alcuni tecnici che si occupano di aerospazio non ancora!”

  1. Avatar JustATiredMan
    JustATiredMan

    ovvio che Linux non e’ pronto per ambiti cosi’ spinti. Sarebbe stato anche forse prentedere troppo. Pero’ nonostante tutto, direi che non se la cava male…

  2. Avatar Giacomo Perin
    Giacomo Perin

    A me dà l’impressione che il nocciolo della questione è che non c’è nessuno che si prenda la responsabilità di un eventuale problema di linux. Quindi bisogna prendere un prodotto closed source perché qualcuno è responsabile.

  3. Avatar JustATiredMan
    JustATiredMan

    non credo sia quello il problema. Il fatto che i sorgenti siano disponibili, permette a chiunque di prenderli e di adattarli alle necessita.
    Un grosso ente o una grossa azienda, non credo manchi loro le dimensioni e le figure per fare queste modifiche ad un kernel linux.
    E’ probabilmente una questione di design e altre cose particolarmente tecniche richieste in quegli ambienti, che evidentemente non lo rendono attrattivo o per le quali, un alternativa già esiste (Qnx ?).

  4. Avatar sabayonino
    sabayonino

    Sul discorso affidabilità in questi ambiti di solito seguono un modello alla “debian”.
    Prendi l’SO , te lo sistemi con tutto quello che ti serve con tutte le sue patch del caso e lo testi fino allo sfinimento nel maggior numero di scenari possibili e avvii la missione con quello.
    Certi progetti durano anni prima di essere messi in atto e di solito non aggiorni un bel nulla se tutto quanto fino a lì funziona anche se non hai l’ultima release di tale software (che può sì sistemare qualche bug , ma può crearne di altri che ancora non si ha una documentazione)
    Vedi la ISS che da anni viene aggiornata pezzo per pezzo e con molta calma …. ci girano ancora sistema di 20 anni fa.

    Quindi il discorso vale per quel che vale.Se poi accade qualcosa di inaspettato , fai tutti gli scongiuri del caso e qui non dipende nulla se il sistema è aperto o chiuso perchè anche il “miglior” sistema chiuso non è perfetto.

    Un link da legereanche se un pò datatao ma che può rendere l’idea :https://www.kaspersky.it/blog/i-computer-delle-stazioni-spaziali/728/

  5. Avatar Simone
    Simone

    Per quegli scenari c’è QNX…

  6. Avatar JaK
    JaK

    Infatti, nelle slide, VanderLeest e Brink sostengono che esistono modi per rendere il Kernel adatto all’aerospazio. Tra questi indicano:

    – Reverse engineer artifacts from source code, forward engineer from system requirements, weave together for a complete set that satisfies all objectives
    – Create an appropriate coding standard, apply to code, patch problems
    – Identify architecture, encourage community adherence
    – Perform a safety analysis to look for possible flaws

    Ma, come riportavo, non è esattamente un lavoro semplice 🙂
    Avrei voluto vedere cosa NASA ha fatto per certificare Ingenuity per la missione Curiosity, ma non hanno pubblicato molto a riguardo. Peccato, perché era il controesempio che avrei voluto riportare.

  7. Avatar sabayonino
    sabayonino

    Non credo che si sia confuso 😀

  8. Avatar Alessandro Scarozza
    Alessandro Scarozza

    Secondo me il tizio confonde il sorgente del kernel linux su kernel.org, dal binario sulle distribuzioni.

    In questi ambiti se utilizzi un kernel “generico” ti ritrovi tutti i problemi che ha indicato, ma se partendo dal sorgente ti fai una build su misura con “requisiti ben definiti”, escludendo tutti i driver non necessari e facendo le certificazioni su quelli che ti servono, lavorando con “una cultura della sicurezza e della qualità” hai piu o meno quello che ti serve

    in pratica vai ad usare linux come base di partenza per il kernel che ti serve, che poi non andandolo a distribuire (usandolo solo internamente) neanche sei obbligato a rilasciare i sorgenti

  9. Avatar sabayonino
    sabayonino

    Beh , parte del sftwre di volo della Jet Propulsion Lab è disponibile su gitHub

    F´ (F Prime) is a component-driven framework that enables
    rapid development and deployment of spaceflight and other embedded
    software applications. Originally developed at the Jet Propulsion Laboratory, F´ has been successfully deployed on several space applications. It is tailored but not limited to small-scale spaceflight systems such as CubeSats, SmallSats, and instruments.

    https://github.com/nasa/fprime

    https://github.blog/2021-04-19-open-source-goes-to-mars/

  10. Avatar Alessandro Scarozza
    Alessandro Scarozza

    penso che la nasa abbia fatto esattamente quello che sto dicendo, usare il kernel linux non con il binario di debian a costo zero, ma come base di partenza del tuo kernel “closed” che non distribuendolo non hai neanche l’obbligo di rilasciarlo

  11. Avatar JaK
    JaK

    Interessantissimo! 😀 Grazie mille!

    Vedrò di darci un’attenta letta nei prossimi giorni 🙂

  12. Avatar JaK
    JaK

    Il testing del software in ambito aerospaziale è uno dei più rigorosi che si possano immaginare: tutta la sequenza di unit->integration->system->user test viene ripetuta a ogni commit del software, con un code-coverage obbligatorio del 96%.

    Sì, ai nostri occhi si tratta di tanta burocrazia, ma non lo è. Quando fai volare un bestione come Ariane-5 e con un carico come il telescopio James Webb TUTTO deve funzionare e TUTTI gli scenari devono essere previsti.

    Prendi l'SO , te lo sistemi con tutto quello che ti serve con tutte le sue patch del caso e lo testi fino allo sfinimento nel maggior numero di scenari possibili e avvii la missione con quello.

    Anche qui: chi decide quali siano “tutte le sue patch”? 🙂 chi ha certificato quelle patch? Quanto lavoro richiede certificare il modulo del Kernel responsabile del filesystem? Questo (e altri problemi) hanno portato alla discussione di VanderLeest e Brink: testare seriamente software richiede una quantità di tempo pari o superiore a quella che ha richiesto il design e la scrittura del codice. Se il filesystem va in crash perché non riesce a supportare scritture in parallelo in slot di 2 millisecondi, dobbiamo scrivere noi la patch e ritestare TUTTO da capo.

    Insomma, se qualcuno usa QNX è per evitare questo test sovrumano. Il che può essere una buona idea per un nuovo post 😉

  13. Avatar Capitano Nemo
    Capitano Nemo

    NB Boeing e Microsoft sono “compari d’anello”… Che sia un’affermazione “di parte”?

  14. Avatar drfalken
    drfalken

    Se le operazioni da te descritte dovessero contemplare delle modifiche, la licenza ti obbliga a distribuirle. Non è il fatto che tu debba usare il software “internamente” o meno che ti solleva da questa clausola, ma il fatto che tu faccia o meno delle modifiche.

  15. Avatar Alessandro Scarozza
    Alessandro Scarozza

    no, nella gpl 2 sei obbligato a distribuire il sorgente quando distribuisci il binario. se non distribuisci il binario ma lo usi solamente ad uso interno non devi condividere le modifiche.

    sicuramente google o facebook avranno fatto delle modifiche al kernel linux per i loro server, e non cè nessun obbligo di condivisione.

    ci sono anche degli elicotteri militari con sopra il kernel linux modificato per migliorare la parte real time, anche in questo caso senza distribuzione non cè obbligo di condivisione

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *