ChromeOS (e FydeOS): Crouton e Wayland, un utile matrimonio d’amore

Questo articolo può essere inteso come un “Crouton vs. Crostini”

Nota. l’articolo è decisamente lungo ed ostico, me ne rendo conto; prima di decidere se leggerlo tutto andate alla sua fine e dte un’occhiata agli screenshot. Se essi catturano la vostra attenzione, tornate all’inizio, armatevi di pazienza e coraggio ed iniziate la lettura.

Nel precedente articolo sull’architettura di ChromeOS ho intenzionalmente lasciato fuori tre argomenti, il Gentoo base, Crouton ed il filesystem; l’ho fatto sia perchè la loro comprensione è rivolta principalmente agli utenti più “svezzati” che perchè l’argomento è talmente vasto da richiedere una trattazione separata.
Qui accennerò al Gentoo che fa da base all’intero sistema e tratterò in modo un po’ più approfondito Crouton, che però tratterò in modo un po’ diverso da come generalmente viene fatto nei vari articoli che gli sono stati dedicati: Crouton on Wayland.

Come abbiamo visto nella precedente puntata Wayland è il gestore degli elementi grafici che rende uniforme l’interazione fra utente e software indipendentemente dal sistema operativo su cui esso viene eseguito. Ciò significa che per l’utente di un Chromebook avere a che fare con un programma Android, Linux o perfino una WebApp è la stessa cosa.

Gentoo Linux, le fondamenta di ChromeOS.

I Chromebook sono le più diffuse macchine Linux del mondo… ma l’utente non lo sa.
Linux è comunemente inteso come sistema operativo ostico e poco adatto agli impieghi desktop per l’utenza non “tecnologica” come potrebbe essere quella aziendale e professionale, ed è in buona parte vero.
In buona parte perchè la considerazione reale dovrebbe essere questa: Linux è un sistema operativo ostico quando la sua implementazione non è affidata ad un’azienda che lo gestisce e standardizza impiegandolo in un prodotto proprietario.
Come abbiamo visto nel precedente articolo ciò è vero per Android, aggiungo che in passato lo è stato per BB10 di BlackBerry, e lo è adesso per ChromeOS.
I possessori dei terminali mobili Android e dei Chromebook hanno sotto le proprie dita macchine Linux, ma non lo sanno (non hanno necessità di saperlo) perchè tutta la complessità di gestione è nascosta dallo strato superiore scritto da Google, che è l’unico visibile all’utente comune.
Negli anni ’80 dello scorso secolo ottenni un discreto successo con una mia interfaccia amministrativa per macchine Unix che offriva all’utente un dialogo in lingua italiana “semi naturale” e si occupava di tradurre in operazioni complesse le richieste dell’amministratore, ma Google è andata molto oltre perchè sia Android che ChromeOS offrono all’utente comune l’esperienza di una macchina che pur essendo Linux sembra non-Linux.

Riprendiamo il grafico del precedente articolo focalizzandolo sulle parti trascurate:

Questa volta il contenuto della grafica non è rigoroso, ad esempio X server non andrebbe proprio dov’è stato riportato ed anche la shell Gentoo non dovrebbe essere disegnata proprio in quel modo,  ma non ho trovato altra via per renderlo comprensibile.
Dovreste interpretarlo così:
– Tutto ciò che è contenuto nei blocchi verdi è il “solito” software dotato di interfaccia grafica cui gli utenti sono abituati, o quanto meno è adatto a supportarlo.
– Le cose nei blocchi azzurri interagiscono con l’utente tramite comandi o rappresentazioni non grafiche.
– In Crouton (evidenziato sulla destra) e solo in Crouton, X Server può sostituire Wayland in Crouton, ma in questo caso l’esperienza utente non è uniforme. Non esistendo alcuna convenienza nell’uso di X Server non me ne occuperò.

Chroot

Chroot è una tecnica attraverso la quale si sposta l’origine (root) di un sistema operativo ospite (d’ora innanzi guest) mappandola (montandola) su una sottodirectory del sistema operativo ospitante (do’ora innanzi host).
Nel nostro caso /mnt/stateful_partition/crouton/chroots/nome_del_crouton; una cosa interessante della tecnica chroot è che il sistema operativo host può vedere il contenuto del filesystem dell’OS guest, mentre per questo si può dire che il mondo finisca con la sua root (/), perchè ovviamente nell’esplorazione di un filesystem non si può risalire oltre la radice.
Almeno in linea di principio il sistema operativo guest, pur essendo eseguito sul medesimo kernel, non può creare guai all’host.

Gentoo base

Per funzionare un sistema operativo necessita di un kernel che gestisca le risorse (non sempre, ma fingiamo che sia così), e ChromeOS non fa differenza; la scelta di Google, probabilmente per uniformità con Android, è ricaduta su quello Linux.
Ora, si può tranquillamente prendere il solo kernel Linux (e strati inferiori) e su questo costruire da zero un sistema operativo… ma perchè farlo quando esistono molteplici distribuzioni già pronte da usare come base? E difatti in fase iniziale Google edificò il suo ChromeOS a partire dall’amichevole distribuzione Ubuntu.
Successivamente Ubuntu venne abbandonato e si passò all’attuale Gentoo in una versione da un lato alleggerita da tutto ciò che non è strettamente indispensabile e dall’altro dotata di una versione leggermente personalizzata di KVM e Wayland.
Nulla vieta di accedere all’interfaccia shell di Gentoo, basta premere Ctrl-Alt-T e successivamente dare il comando shell, ma l’utente “normale” di ChromeOS non ha alcun bisogno di farlo.
Inoltre la versione di gentoo che fa da base a ChromeOS è così ridotta all’osso che anche l’utente esperto potrebbe farci veramente ben poco.

Crouton

Crouton è fondamentalmente uno script che consente il montaggio su chroot di alcune distribuzioni Linux.
Immagino che l’idea sia stata qualcosa del tipo “Visto che abbiamo un kernel Linux ma il Gentoo base non è realmente utilizzabile, pechè non fornire agli utenti la possibilità di eseguire su quel kernel un vero e proprio Linux?”. Questo agli inizi, prima che Google iniziasse a supportare ufficialmente Linux su Crostini.
Ma ora che esiste il supporto ufficiale in VM, Crouton è ancora utile? risposta: per gli utenti avazati, si!
Crouton è utile perchè essendo eseguito direttamente sul kernel alla base di ChromeOS offre la possibilità di controllo diretto della macchina. Non esiste alcuna differenza in negativo fra l’uso di Crouton ed un’installazione diretta di Linux, Crouton è a tutti gli effetti un Linux nativo.
Ma vedremo più avanti che se non esistono differenze in negativo, ne esistono tante in positivo!
Crouton offre naturalmente un installer automatico che rende banale la procedura, una singola riga di comando e ci si ritrova con un’installazione completa, prelevata dai repository standard.
Si può scegliere fra Debian, Ubuntu e Kali; come al solito consiglio vivamente l’ultima release stabile di Debian con gestore del desktop XFCE4.

Analisi per livelli

1…4) Possiamo tranquillamente tralasciare i livelli dall’uno al quattro, già visti nel precedente articolo.

5) Wayland: qui si può notare una differenza considerevole, che ho cercato di rendere in modo quanto più comprensibile: Wayland è sì onnipresente, ma lascia spazio sia all’interfaccia a caratteri di Gentoo (8 e 9), che all’esposizione delle API offerte dal kernel per il software eseguito su Crouton. La ragione è che, ricordo, gli OS su Crouton sono a tutti gli effetti installazioni native di Linux, e come tali è consentito loro l’accesso alle API del kernel.

6 e 7) Di nuovo già visti nel precedente articolo

8 e 9) Tramite la console (Ctrl-Alt-t o Ctrl-Alt-F2 per chi desidera l’uso esclusivo) è possibile accedere alla shell del Gentoo base. I comandi disponibili non sono molti, ma questa finestra è utilissima per piccole modifiche, installazione di software non previsto (fra cui Crouton), creazione di comandi personalizzati etc etc.
Da notare che di default il filesystem è montato in modalità read-only e noexec, ma sono certo che i coraggiosi lettori di questo intricato articolo sapranno come comportarsi.

10) Qui le cose si fanno davvero interessanti, 10 è una “distro” Linux completa installata su chroot ed in esecuzione sul kernel base del Chromebook.

11 e 12) Le distribuzioni Linux installate su Crouton impiegano X come server grafico; xiwi e sommelier sono due “redirector” che catturano l’attività di X e li legano a Wayland, creando così un ambiente grafico uniforme anche per le installazioni Linux su Crouton.
Si può scegliere liberamente fra i due; io impiego xiwi che è molto pratico, mentre altri preferiscono sommelier giudicato più “nativo” perchè utilizzato anche su Crostini (non riportato nel precedente articolo diretto ad un pubblico meno specialistico).

13) X: non è detto che gli OS su Crouton debbano passare per Wayland, come già detto è possibile fargli usare in modo diretto la macchina sottostante con evidenti guadagni in termini di velocità. ma c’è un prezzo da pagare: gestire la grafica senza l’intermediazione di Wayland genera un’esperienza d’uso disuniforme, ci si ritrova con un Linux eseguito in modo esclusivo e a schermo pieno. Ovviamente il resto del sistema continua a “vivere” in background, ma si può solo switchare tra i due ambienti.
A meno di particolari esigenze come ad esempio giochi che richiedano un elevato refresh rate, non trovo molto sensata questa opzione.

15) Questo lo abbiamo già visto nella scorsa puntata, nei repository Linux ormai c’è qualsiasi tipo di software… da quello gratuito (ma comunque ben fatto) ai pacchetti CAD da 8000$.
Io uso pacchetti per lo sviluppo software (IDE) di una notissima software house che, complice il fatto che i compilatori sono gratuiti, hanno un prezzo non proprio bassissimo ma comunque decisamente alla portata di tutti.
Ovviamente esistono anche IDE di buon livello completamente gratuiti, così come esistono ottimi CAD freeware… ma obbiettivamente non si può confrontare un IDE gratuito con quello che costa qualche centinaio di dollari, così come immagino che il CAD gratis faccia diverse cose in meno di quello che di dollari ne costa 8000.

16) I comandi ed i software non GUI sono, banalmente… i comandi ed i software non grafici disponibili di base, o installati, nella distribuzione Linux prescelta.

E con questo abbiamo visto tutto, ora qualche screenshot:

Terminale Crouton, identifiato dalla scritta “Buster”, assieme a Whatsapp (Android) ed il file Manager di Crostini (il Linux ufficiale di ChromeOS).

 

Qui ho esagerato. Nella finestra non c’è più un’applicazione ma l’intero Debian Buster. Da notare che la finestra è ridimensionabile dinamicanemte: la allargate o la rimpicciolite e tutto va a posto da solo!
Avevamo detto che anche il Chrome viene eseguito su Wayland, giusto? e allora perchè non approfittarne e chiedergli di aprire un’applicazione Linux in un suo tab?
Hmmmm… ma se in un tab del browser posso metterci un’applicazione, non è che posso farci comparire anche l’intero sistema operativo? si… pare di si :mrgreen:

 

Trovate brutta la barra con i tab in alto? nessun problema, F4 e sparisce (e naturalmente tutto si ridimensiona per tener conto della maggior area di visualizzazione).

Una cosa importante: tutta questa roba funziona in parallelo ed è indipendente.
Vi servono tre Linux eseguiti in contemporanea? tre finestre, tre tab o qualsiasi combinazione desideriate e li avrete!

Se vi state chiedendo quanto consuma tutto questo ben di Dio la risposta è poco, molto poco.
Una installazione completa come la mia, che è letteralmente stracolma di software sia Android che Linux (due installazioni Debian Buster una delle quali traboccante di software) occupa su disco meno di 12 GB totali.
Quanto alla RAM ovviamente dipende dal software che impiegate; se fate grafica professionale o montaggi video 16 GB sono d’obbligo; se invece il vostro uso è prevalentemente quello di produttività d’ufficio e gestionale, vanno bene anche 4 GB.
Il sistema in sè è velocissimo già con 2 GB, ma ovviamente non lo è il software grafico Linux.

Traendo le conclusioni, CromeOS è un sistema operativo stabile come roccia, affidabilissimo, veramente parsimonioso nelle richieste hardware, incredibilmente veloce, legato a tutto ciò che esiste, dalla domotica agli indossabili passando per elettrodomestici ed autovetture, grazie alla presenza contemporanea di Play Store e repository Linux dotato di ogni tipo di software possibile ed immaginabile.

Windows? ancora? ma perchè desiderate farvi del male?

Unica cosa è assolutamente obbligatorio avere un SSD. magari anche da soli 64 GB, ma per forza SSD.
Scordatevi di installare FydeOS o qualsiasi altro derivato di ChromeOS su un disco meccanico ed utilizzarlo al massimo delle sue capacità, è terribilmente sensibile alla latenza.

E anche questa è fatta, la prossima volta parleremo del filesystem.

Siete sopravvissuti?

Federico.