Il s'agit d'une procédure avancée que nous ne recommandons pas aux nouveaux utilisateurs de Linux.
ChromeOS permet d'exécuter du code arbitraire dans des VM. Il s'agit de la documentation de bas niveau sur cette fonctionnalité. Pour une vue plus conviviale, consultez les faq.
Prérequis
- Assurez-vous que votre appareil ChromeOS est compatible avec Linux sur ChromeOS.
-
Assurez-vous d'exécuter la version 72 (M72+) ou ultérieure de ChromeOS (publiée en février 2019).
- Lancez une mise à jour du système si nécessaire, puis redémarrez.
- Cela devrait fonctionner dans le canal stable.
- Vous n'avez pas besoin de le mettre en mode développeur.
- Activer le conteneur Linux
Fonctionnalités d'exécution
Les fonctionnalités suivantes devraient fonctionner lorsque vous exécutez votre conteneur Linux :
- Connexions réseau sortantes (IPv4).
- Graphismes non accélérés.
- Graphismes accélérés (via OpenGL).
- Programmes Wayland (recommandé, via Sommelier).
- Programmes X (compatibilité via Sommelier et XWayland).
- Sortie audio dans les images M74+ et capture/microphone expérimentales dans les images R79+.
Certaines fonctionnalités sont manquantes
Nous nous efforçons de développer de nombreux aspects faciles à améliorer. Voici quelques exemples clairs :
- Décodage vidéo matériel.
- IME
L'équipe ChromeOS prend une approche mesurée pour déployer de nouvelles fonctionnalités afin de s'assurer que la sécurité globale du système n'est pas compromise. Consultez les questions fréquentes sur Crostini pour obtenir des informations plus détaillées sur la plupart des sujets concernant le développement Linux sur ChromeOS.
Sécurité
Bien que l'exécution de code arbitraire présente normalement un risque pour la sécurité, l'équipe ChromeOS estime que le modèle d'exécution utilisé par le conteneur Linux sur ChromeOS atténue et contient suffisamment ce risque. La machine virtuelle (VM) est la limite de sécurité, et tout ce qui se trouve à l'intérieur est considéré comme non fiable. L'image invitée de VM actuelle exécute également un noyau renforcé personnalisé pour améliorer davantage la sécurité des conteneurs. Toutefois, il s'agit d'une fonctionnalité intéressante, mais pas d'un élément sur lequel s'appuyer pour assurer la sécurité globale du système.
Dans ce modèle, le reste du système ChromeOS doit rester protégé contre le code arbitraire (malveillant ou accidentel) qui s'exécute dans les conteneurs de la VM.
Le seul contact avec le monde extérieur se fait via crosvm, et chaque canal communique avec des processus individuels (chacun étant fortement mis en bac à sable).
Données utilisateur dans le conteneur
Avec le passage aux services cloud, la réflexion actuelle sur la sécurité met en évidence le fait que l'obtention des identifiants de compte (par exemple, vos mots de passe Google/Facebook) constitue un vecteur d'attaque plus lucratif que l'attaque de votre ordinateur de bureau ou portable. Elles ne sont pas fausses. La solution ChromeOS actuelle pour les VM/conteneurs n'améliore pas cette situation. En d'autres termes, l'utilisateur est actuellement responsable de tout ce qui est saisi dans le conteneur. Ainsi, si vous exécutez un conteneur non sécurisé ou piraté, puis que vous saisissez vos mots de passe dans le conteneur, ils peuvent être volés même si le reste du système ChromeOS reste sécurisé.
Persistance des processus
Les processus dans les VM et les conteneurs ne survivent pas à la déconnexion (car ils se trouvent dans l'espace de stockage chiffré de l'utilisateur) et sont arrêtés automatiquement. Elles ne démarrent pas non plus automatiquement à la connexion (pour éviter les attaques persistantes) et ne peuvent pas s'exécuter automatiquement au démarrage (sans session de connexion), car elles ne seraient pas accessibles (étant donné qu'elles se trouvent dans l'espace de stockage chiffré de l'utilisateur).
Code exécutable et modifiable
L'image de disque de la VM Termina est téléchargée dans la partition avec état accessible en écriture, comme les autres composants Chrome. Pour s'assurer que le contenu n'est pas modifié, dm-verity est utilisé. Cela signifie également que seules les images signées par Google peuvent être chargées et que l'image est toujours en lecture seule.
Attaques matérielles
Les failles Meltdown/Spectre ont des conséquences sur l'utilisation sécurisée des VM. Nous avons appliqué des correctifs et des mesures d'atténuation pour nous assurer que les VM ne peuvent pas attaquer le système hôte ni d'autres VM. Pour en savoir plus, consultez la page wiki Chromium OS sur l'état des failles Meltdown et Spectre pour les appareils ChromeOS.
Cycles de vie
Une fois que vous avez activé le conteneur Linux (qui installe tous les autres composants nécessaires, comme Termina), le système est prêt à être utilisé.
Même si ces composants sont installés, rien ne se lance immédiatement. Lorsque vous vous déconnectez, tout est arrêté et fermé. Lorsque vous vous reconnectez, rien n'est redémarré automatiquement.
Lorsque vous exécutez l'application Terminal ou toute autre application Linux qui démarre le conteneur, et que son conteneur parent n'est pas encore en cours d'exécution, la VM Termina démarre automatiquement, et le conteneur Linux par défaut sur ChromeOS (également appelé Crostini) démarre dans celle-ci. Cela vous permet de vous connecter au conteneur via SSH ou SFTP (via l'application Files).
Lorsque vous fermez toutes les applications visibles, la VM/les conteneurs ne sont pas arrêtés. Si vous le souhaitez, vous pouvez les arrêter et les démarrer manuellement, et générer plus de conteneurs que celui par défaut.
Persistance des données
Toutes les VM et tous les conteneurs créés, ainsi que les données qu'ils contiennent, sont conservés d'une session utilisateur à l'autre (déconnexion/connexion). Elles sont conservées dans le même espace de stockage chiffré par utilisateur que le reste des données du navigateur.
Si une VM ou un conteneur est arrêté ou supprimé de manière anormale (par exemple, en cas de perte de puissance), des données peuvent être perdues et doivent être récupérées comme tout autre élément du système.
Vérifier si l'appareil est compatible
Bien que l'objectif soit de faire fonctionner Linux sur ChromeOS avec tous les Chromebooks, le noyau et les fonctionnalités matérielles requises limitent les possibilités de déploiement. L'équipe s'est concentrée sur la sécurité et la stabilité du système tout en rétroportant les fonctionnalités lorsque cela était pertinent. Nous nous efforçons constamment d'améliorer cet aspect.
Fonctionnalités désormais disponibles
Pour obtenir la liste des appareils actuellement compatibles, veuillez consulter Systèmes ChromeOS compatibles avec Linux.
Matériel requis
Bien qu'il n'y ait actuellement pas de quantité minimale de RAM, de stockage ou de vitesse de processeur requise pour exécuter le conteneur Linux sur ChromeOS, plus vous en avez, plus le système sera performant.
Cela dit, vous aurez besoin d'un processeur compatible avec la virtualisation matérielle. Sur les plates-formes x86, il porte de nombreux noms. Intel l'appelle VT-x et VMX. AMD l'appelle AMD-V et SVM.
Systèmes BayTrail
Les Chromebooks utilisant BayTrail d'Intel n'incluent pas VT-x. Bien que ce processeur inclue normalement VMX, la variante des Chromebooks ne l'inclut pas et ne sera donc malheureusement jamais compatible.
Pour savoir si une carte est compatible, recherchez BayTrail dans la colonne Platform de notre liste publique des appareils.
Anciens noyaux
Nous ne prévoyons pas de prendre en charge Linux 3.14 ni les versions antérieures. Elles nécessitent des rétroportages de nouvelles fonctionnalités qui sont étendus et souvent intrusifs. Exemple :
Pour savoir si une carte est compatible, recherchez les numéros de version inférieurs à 3.14 dans la colonne Kernel de notre liste publique des appareils.
Processeurs ARM 32 bits
Il est difficile de faire fonctionner des machines virtuelles avec des processeurs ARM 32 bits. Cette opération n'est pas standard et nécessite une coordination avec le micrologiciel. Malheureusement, le micrologiciel ChromeOS n'a pas tendance à configurer les extensions. Par conséquent, ces systèmes ne sont pas pris en charge.
Pour savoir si une carte est compatible, recherchez arm dans la colonne Kernel ABI de notre liste publique des appareils.