Les VMs sont disponibles pour Freebox Server Delta 4.1.0

Posté par: | Le 8 octobre 2019 à 10:00 | Catégorie: Freebox Server, Mise à jour | Comments Off on Les VMs sont disponibles pour Freebox Server Delta 4.1.0

Les VMs (Machines Virtuelles) sont maintenant lancées pour tous les utilisateurs d’une Freebox Delta ou Delta S. Elles permettent d’installer des logiciels sur votre Freebox Server à partir de la version 4.1.0.

Ça sert à quoi ?

Les applications sont nombreuses, voici quelques idées pour démarrer:

  • Héberger un cloud personnel avec Yunohost, Nextcloud ou Cosy Cloud.
  • Indexer le contenu multimedia présent sur le Freebox Server ou réseau local avec Plex ou Emby
  • Héberger des parties de Minecraft avec le serveur pour l’édition java.
  • Contrôler sa maison avec une solution domotique comme Jeedom.
  • Télécharger une blockchain populaire pour inspecter les transactions hors-ligne
  • Utiliser un bureau linux d’appoint qui reste toujours allumé
  • Héberger un site web chez soi
  • Brancher des capteurs température et humidité en USB pour faire station météo
  • Faire un time-lapse avec une webcam USB
  • Apprendre à utiliser un serveur Linux à distance
  • Brancher un micro et un haut-parleur USB pour faire un assistant vocal maison comme Snips.

Mais qu’est-ce qu’une VM au fait ?

Une Machine Virtuelle, ou Virtual Machine (VM) en anglais, est un ordinateur entièrement logiciel: il est simulé avec un programme. Cela sert en général à tester un autre système d’exploitation, ou installer des logiciels qu’on ne peut installer sur son système. Les VMs sont également utilisées pour augmenter la sécurité d’un déploiement logiciel, grâce à une séparation plus forte. De nos jours, la virtualisation est pervasive dans le cloud, et les techniques de virtualisation sont utilisées partout.

Plus précisément, sur le Freebox Server Delta, les VMs permettent d’installer un système Linux ARM64, pour profiter chez soi d’un ordinateur d’appoint accessible à distance, ou pour auto-héberger des services personnels. L’accès au port USB ouvre des possibilités liées au matériel ou à la domotique: à vous de les trouver !

ARM64, késako, pourquoi pas x86 ?

ARM64, c’est l’architecture du processeur de la Freebox Delta; appelée arm64 ou aarch64, cette architecture de processeur fais partie de la famille ARM, la plus répandue au monde; par opposition, dans les ordinateurs personnels c’est l’architecture x86 d’Intel qui est utilisée en majorité.

La virtualisation sur le Freebox Server utilise l’accélération matérielle, pour avoir des VMs aussi rapides que possible; pour bénéficier de cette accélération, il faut utiliser la même architecture pour la VM que le CPU hôte de la Freebox. Il y a alors peu d’intérêt à proposer un service intégré de VM x86: ça serait trop lent; par contre, il est tout à fait possible d’installer manuellement un émulateur x86 dans une VM Freebox si la lenteur n’est pas un problème..

Pourquoi ne peut-on pas installer Windows ?

Si Microsoft a fourni une version de Windows 10 IoT ARM, il n’y a pas de version téléchargeable officiellement pour l’utiliser dans une VM arm64. De plus, Windows n’inclut pas les drivers VirtIO par défaut nécessaires pour les VMs.

J’ai déjà un Raspberry Pi chez moi, ça sert à quoi d’avoir une VM ?

En général, les VMs Freebox sont plus rapides et plus fiables. D’abord, parce que nous utilisons le mode ARM64 uniquement. Là où la distribution officielle Raspberry Pi, Raspbian est bloquée en ARM32, moins performant. Il est aujourd’hui (Octobre 2019) possible d’installer une distribution Linux arm64 pour Raspberry Pi 3, mais pas encore pour Raspberry Pi 4.

Pour comparaison, voici un micro-benchmark basé sur sysbench, sysbench --test=cpu --num-threads=4 run:

  • Raspberry Pi 3B (Raspbian) : 35.1s
  • Rasberry Pi 4 (Raspbian) : 23.2s
  • Raspberry Pi 3B (Debian arm64) : 6.3s
  • VM Freebox (Debian arm64) : 2.5s

Si ce micro-benchmark est assez exagéré, les performances sont en général 30% à 80% meilleures qu’un Rasberry Pi 3B/3B+, et devraient être équivalentes (voire inférieures en multi-thread) au Raspberry Pi 4 une fois que celui-ci aura une distribution arm64.

Les microSD dans les Raspberry Pi finissent très souvent par être corrompues — c’est parcequ’elles ont été conçues pour des utilisations et des systèmes de fichiers différents de celle d’un Raspberry Pi; ce n’est souvent pas un problème: il suffit des les remplacer; mais si le but est d’avoir un service fiable et sans interruption, c’est raté. Un disque dur ou disque SSD dans le Freebox Server est bien plus fiable et rapide, surtout s’il est utilisé en RAID.

Enfin, une VM sur Freebox Delta peut bénéficier de la connexion 10G, avec des pointes à 5 Gbit/s — infaisable sur un Raspberry Pi.

Un Raspberry Pi a d’autres avantages: il a une sortie vidéo pour en faire un PC ou une mini-console de jeux, plus de ports USB; des entrées/sorties pour ceux qui veulent bidouiller l’électronique; et le dernier modèle est disponible avec plus de RAM.

Pourquoi pas des conteneurs plutôt que des VMs ?

Les VMs sont plus souples, et il est également possible d’utiliser des conteneurs: il suffit d’installer une VM et d’y installer un gestionnaire de conteneur comme Docker ou LXC, voire un ordonnanceur comme Kubernetes. C’est probablement ce qu’on aurait fait si on avait voulu proposer des conteneurs. Mais les VMs telles que proposées dans la Freebox sont plus souples et prévues pour le futur. Elles permettent par exemple d’installer son propre noyau. Si vous le souhaitez, vous pouvez par exemple utiliser FreeBSD. Ou installer le dernier noyau Linux avec des fonctionnalités qui n’existent pas encore dans celui de la Freebox. C’eût été impossible avec des conteneurs. Ainsi que l’accès sécurisé aux périphériques USB: pour tous ces appareils non supportés directement par le Freebox Server.

Les VMs ont aussi une mauvaise réputation par rapport aux conteneurs: c’est parce que les premières machines virtuelles utilisaient de l’émulation sans accélération matérielle: les processeurs ne permettaient pas d’exécuter directement les instructions d’une machine virtuelle. Puis, l’accélération matérielle est arrivée pour les processeurs, mais les périphériques réseaux émulaient toujours d’anciennes cartes réseau en passant par une stack IP user space, ainsi que des disques en émulant les couches SATA, PCI, etc. Puis est venu VirtIO, un ensemble de technologies permettant aux systèmes invités d’avoir un accès bien plus rapide au matériel et au réseau grâce à la coopération entre le noyau de l’hote, le gestionnaire de machines virtuelles, et le noyau invité. Bien que les technologies autour de VirtIO aient plus de 10 ans, la mauvaise réputation persiste, probablement dû au fait qu’il faille des drivers spécifiques pour les VM Windows qui sont pas intégrés par défaut.

Les VMs Freebox ne fournissent que des périphériques basés sur VirtIO (virtio-net, virtio-block), ce qui évite d’avoir des soucis de performance liés aux périphériques. Selon l’OS invité que vous choisissez, la consommation mémoire d’une VM sera néanmoins plus élevée que celle d’un conteneur; du moins en apparence, puisque nous aurions forcément dû passer par une VM (fiabilité, sécurité) si l’on avait proposé des conteneurs.

Puis-je accéder aux fichiers de ma Freebox ?

Oui, grâce au partage réseau, comme n’importe quel ordinateur connecté au réseau local.

Quelles sont les limitations ?

Une VM ne peut utiliser que 1 ou 2 CPUs virtuels, et seulement 2 CPUs peuvent être utilisés en tout (ce qui fait un maximum de 2 VMs fonctionnant en même temps). Coté mémoire vive, un peu moins de 1G peuvent être attribués aux VMs. Il est possible de changer la barrette de RAM sur sa Freebox pour avoir jusqu’à 14G pour les VMs, mais ce n’est ni recommandé, ni supporté par Free, aucun SAV n’étant possible en cas de modification du matériel.

Il ne peut y avoir qu’une seule interface réseau, un seul disque virtuel, ou un seul CD-ROM par VM. Seuls les OS ARM64 démarrant en EFI sont supportés. Une seule VM peut utiliser l’USB à la fois.

Pour le moment, seuls les formats d’images disque qcow2 et raw sont supportés pour le moment, et il n’est pas possible d’en réduire la taille.

À quoi servent les fichiers terminant en .efivars ?

Ces fichiers contiennent les paramètres du firmware EFI (BIOS). Certains OS (comme Debian) installés via une image ISO utilisent les variables EFI pour indiquer au firmware ce qu’il faut démarrer. Les supprimer peut empêcher l’OS de démarrer.

Y-a-t il a des VMs préinstallées ?

Plusieurs systèmes Linux sont proposés pour être téléchargés et pré-installés: aujourd’hui Fedora 30, Ubuntu 19.04, et Debian 10.1 sont disponibles. D’autres seront ajoutés et enlevés par la suite.

Les VMs pré-installées sont des images officielles fournies directement par les différentes distributions. Elles ont été conçues pour les pré-installations de serveurs dans le cloud, et les paramètres d’initialisation sont passés avec cloud-init. Cloud-init ne fonctionne aujourd’hui que lors du premier démarrage, donc une fois les paramètres pris en compte, il n’est pas possible de les changer, et les enlever n’a aucun effet. Par contre, l’agrandissement du disque est pris en compte automatiquement pour ces images là.

Problèmes connus

  • Le premier démarrage d’Ubuntu peut mettre jusqu’à 3 minutes pour finir son initialisation. Il n’est pas possible de se connecter par mot de passe avant la fin (mais la connexion par clé ssh fonctionne).
  • Si le téléchargement d’une VM affiche une erreur, bien vérifier que le stockage principal est configuré et disponible. Vous pouvez voir l’état du téléchargement dans le gestionnaire de téléchargements de Freebox OS.
  • Seul le système de fichier ext4 formaté par la Freebox est supporté officiellement. Si vous utilisez un disque externe formaté en exFAT par exemple, la VM ne pourra pas démarrer.

Comment ça marche en dessous ?

Le Freebox Server utilise QEMU 4.1.0, EDK2 201811, ainsi que le noyau Linux pour la virtualisation. L’interface Freebox OS utilise xterm.js pour la console série et noVNC pour l’affichage d’écran. Tous les composants libres utilisés sont disponibles.


Les commentaires sont fermés.