Approfondimento interno

Si tratta di una procedura avanzata che non consigliamo ai nuovi utenti di Linux.

ChromeOS supporta l'esecuzione di codice arbitrario all'interno delle VM. Questa è la documentazione di basso livello su questo supporto. Per una visualizzazione più intuitiva, consulta le faq.

Prerequisiti

Funzionalità di runtime

Quando esegui il container Linux, dovresti aspettarti che funzionino le seguenti funzionalità:

  • Connessioni di rete in uscita (IPv4).
  • Grafica non accelerata.
  • Grafica accelerata (tramite OpenGL).
  • Programmi Wayland (preferiti; tramite Sommelier).
  • Programmi X (compatibilità tramite Sommelier e XWayland).
  • Output audio in M74+ e acquisizione/microfono sperimentale nelle immagini R79+.

Mancano delle funzionalità

Stiamo lavorando per sviluppare molte opportunità a portata di mano. Ecco un paio di esempi chiari:

  • Decodifica video hardware.
  • IME.

Sebbene siano in fase di valutazione altri aspetti, il team di ChromeOS adotta un approccio misurato per l'implementazione di nuove funzionalità, al fine di garantire che la sicurezza complessiva del sistema non venga compromessa. Consulta le domande frequenti su Crostini per informazioni più dettagliate che coprono la maggior parte degli argomenti relativi allo sviluppo di Linux su ChromeOS.

Sicurezza

Sebbene l'esecuzione di codice arbitrario sia normalmente un rischio per la sicurezza, il team di ChromeOS ritiene che il modello di runtime utilizzato dal container Linux su ChromeOS mitighi e contenga sufficientemente questo rischio. La macchina virtuale (VM) è il perimetro di sicurezza e tutto ciò che si trova al suo interno è considerato non attendibile. L'immagine guest della VM corrente esegue anche un kernel personalizzato e protetto per migliorare ulteriormente la sicurezza dei container, ma questa funzionalità è considerata un vantaggio piuttosto che un elemento su cui fare affidamento per garantire la sicurezza complessiva del sistema.

In questo modello, il resto del sistema ChromeOS dovrebbe rimanere protetto da codice arbitrario (dannoso o accidentale) eseguito all'interno dei container della VM.

L'unico contatto con il mondo esterno avviene tramite crosvm e ogni canale comunica con singoli processi (ognuno dei quali è fortemente limitato tramite sandbox).

Dati utente nel contenitore

Con il passaggio ai servizi cloud, l'attuale pensiero sulla sicurezza evidenzia il fatto che ottenere le credenziali dell'account (ad es. le password di Google/Facebook) è un vettore di attacco più redditizio rispetto all'attacco al tuo computer desktop o laptop. Non si sbagliano. L'attuale soluzione ChromeOS per VM/container non migliora al momento questa situazione. In parole povere, al momento qualsiasi cosa inserita nel contenitore è responsabilità dell'utente. Pertanto, se esegui un container non sicuro o compromesso e poi digiti le tue password nel container, queste possono essere rubate anche se il resto del sistema ChromeOS rimane sicuro.

Persistenza del processo

I processi nelle VM e nei container non sopravvivono alla disconnessione (in quanto risiedono nello spazio di archiviazione criptato dell'utente) e vengono terminati automaticamente. Inoltre, non vengono avviati automaticamente all'accesso (per evitare attacchi persistenti) né possono essere eseguiti automaticamente all'avvio (senza una sessione di accesso) perché non sarebbero accessibili (in quanto si trovano nello spazio di archiviazione criptato dell'utente).

Codice eseguibile e scrivibile

L'immagine disco VM Termina viene scaricata nella partizione stateful scrivibile come gli altri componenti di Chrome. Per assicurarsi che i contenuti non vengano modificati, viene utilizzato dm-verity. Ciò significa anche che possono essere caricate solo le immagini firmate da Google e che l'immagine è sempre di sola lettura.

Attacchi hardware

Le vulnerabilità Meltdown/Spectre hanno implicazioni per l'utilizzo sicuro delle VM. Abbiamo applicato correzioni e mitigazioni per assicurarci che le VM non possano attaccare il sistema host o altre VM. Per maggiori dettagli, consulta la pagina wiki di Chromium OS sullo stato delle vulnerabilità Meltdown e Spectre per i dispositivi ChromeOS.

Cicli di vita

Una volta attivato il contenitore Linux (che si occupa dell'installazione di tutti gli altri componenti necessari come Termina), il sistema è pronto per l'uso.

Sebbene questi componenti possano essere installati, non viene eseguito nulla immediatamente. Quando esci, tutto viene chiuso e interrotto e quando accedi, nulla viene riavviato automaticamente.

Quando esegui l'app Terminale o qualsiasi altra app Linux che avvia il container e il relativo container principale non è ancora in esecuzione, la VM Terminale viene avviata automaticamente e in questa viene avviato il container Linux su ChromeOS predefinito (noto anche come Crostini). In questo modo, puoi connetterti al container tramite SSH o SFTP (tramite l'app File).

Quando chiudi tutte le applicazioni visibili, la VM/i container non vengono arrestati. Se vuoi, puoi interromperli e avviarli manualmente, nonché generare più container di quello predefinito.

Persistenza dei dati

Tutte le VM e i container creati, nonché i dati all'interno di questi container, verranno mantenuti nelle sessioni utente (uscita/accesso). Vengono conservati nello stesso spazio di archiviazione criptato per utente degli altri dati del browser.

Se una VM o un container viene arrestato o terminato in modo anomalo (ad es. interruzione dell'alimentazione), i dati potrebbero andare persi e richiedere il recupero come qualsiasi altro elemento del sistema.

Assistenza per i dispositivi

Sebbene l'obiettivo sia quello di far funzionare Linux su ChromeOS con tutti i Chromebook, le funzionalità hardware e del kernel richieste limitano la sua implementazione. Il team si è concentrato sulla sicurezza e sulla stabilità del sistema, eseguendo il backporting delle funzionalità laddove opportuno. Si tratta di un'area di impegno costante.

Ora supportato

Per un elenco dei dispositivi attualmente supportati, consulta Sistemi ChromeOS che supportano Linux.

Requisiti hardware

Sebbene al momento non esista una quantità minima di RAM, spazio di archiviazione o velocità della CPU necessaria per eseguire il container Linux su ChromeOS, maggiore è la quantità di ciascuno, migliori saranno le prestazioni del sistema.

Detto questo, avrai bisogno di una CPU che supporti la virtualizzazione hardware. Sulle piattaforme x86, questo ha molti nomi. Intel lo chiama VT-x e VMX. AMD si riferisce a AMD-V e SVM.

Sistemi BayTrail

I Chromebook che utilizzano BayTrail di Intel non includono VT-x. Sebbene questa CPU includa normalmente VMX, la variante nei Chromebook non lo fa e pertanto, purtroppo, non sarà mai supportata.

Puoi verificare se una scheda è supportata cercando BayTrail nell'elenco dei dispositivi pubblici nella colonna Platform.

Kernel precedenti

Non è previsto il supporto di Linux 3.14 o versioni precedenti. Questi richiedono il backporting di nuove funzionalità che sono estese e spesso invasive. Ad esempio:

Puoi verificare se una scheda è supportata cercando i numeri di versione inferiori a 3.14 nella colonna Kernel del nostro elenco di dispositivi pubblico.

CPU ARM a 32 bit

Far funzionare le macchine virtuali con CPU ARM a 32 bit è difficile, non standard e richiede il coordinamento con il firmware. Purtroppo, il firmware di ChromeOS non tende a configurare le estensioni. Pertanto, questi sistemi non sono supportati.

Puoi verificare se una scheda è supportata cercando arm nel nostro elenco di dispositivi pubblici nella colonna Kernel ABI.