L'unikernel C++ IncludeOS devient gratuit et passe en open source
L'unikernel C++ IncludeOS devient gratuit et passe en open source
IncludeOS est un prototype d'unikernel en C++. Un unikernel est une image machine fonctionnant avec un espace d’adressage simple construite à partir de bibliothèques pour reproduire un système d'exploitation. L'avantage est ainsi de construire un système spécialisé capable de démarrer dans une machine réelle ou virtuelle aussi léger et rapide que possible. De plus, le système est construit pour une tâche spécifique (pour une application spécifique) et n'embarquera donc pas de bibliothèques supplémentaires pouvant être inutiles.
IncludeOS est un unikernel en C++ orienté service. Il est maintenant gratuit et open source. Vous pouvez retrouver son code sur GitHub. La licence utilisée est Apache v2.
Grâce à IncludeOS vous allez pouvoir exécuter votre code C++ directement sur une machine virtuelle (KVM ou VirtualBox). Pour cela, la bibliothèque apporte un bootloader, les bibliothèques standards, de nombreux modules et le système. Il ne vous reste plus qu'à écrire le service.
Toutefois, IncludeOS n'est toujours qu'un prototype. Plus précisément, c'est un projet de recherche (Akershus University College of Applied Science, Oslo) ayant déjà résulté en une publication à la IEEE CloudCom 2015.
Fonctionnalités :
- empreinte mémoire très réduite ;
- support de KVM et VirtualBox avec virtualisation complète ;
- support du C++11/14 (libc++ pour la bibliothèque standard et libgcc pour les exceptions) ;
- bibliothèque standard C (newlib de RedHat) ;
- pilote réseau virtio ;
- pile réseau TCP/IP hautement modulaire.
Voici un exemple de service :
Code:
1 2 3 4 5 6 7 8 9
| #include <os>
#include <stdio.h>
void Service::start()
{
printf("Hello world - OS included!\n");
} |
Votre opinion
:fleche: Avez-vous déjà utilisé un unikernel ? Lequel ?
:fleche: Pensez-vous que cela a une utilité ? Laquelle ?
:fleche: Comment pensez-vous pouvoir utiliser cette bibliothèque ?
Source
Site officiel
Ré-écrire? pourquoi ne pas dépouiller un linux.
Je ne connaissait pas l'Unikernel avant de lire cette article. Je trouve le principe très intéressant. mais je me pose une question.
Pourquoi ré-écrire tout ce qui fait la complexité d'un OS plutôt que de partir d'un Linux minimal et le dépouiller pour lui enlever les fonctionnalité inutile. Comme fonctionnalité a revoir il y a :
- Le Shell mais ça c'est assez simple a supprimer bien qu'il faille alors revoir le système de lancement par script... mais pour ça il y a Systemd.
- La gestion mémoire qui n'a plus besoin d'être paginé et gérer précisément puisqu'il y a une seul application. Cela représente le plus gros du travail (et le plus délicat) je pense.
- Le multi-utilisateur qui n'est plus nécéssaire. Mais si l'on a supprimé la gestion mémoire c'est presque automatique.
Certes c'est complexe mais cela permettrait de garder les pilotes Linux qui existent, la fiabilité du code existant et la polyvalence en terme d'architecture du noyau. A moins que je me fourvoie dans ce que doit faire un unikernel. J'attends vos commentaires.