L'unikernel C++ IncludeOS devient gratuit et open source

Le , par LittleWhite, Responsable 2D/3D/Jeux

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 : Sélectionner tout
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

Avez-vous déjà utilisé un unikernel ? Lequel ?
Pensez-vous que cela a une utilité ? Laquelle ?
Comment pensez-vous pouvoir utiliser cette bibliothèque ?

Source

Site officiel


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Iradrille Iradrille - Expert confirmé https://www.developpez.com
le 03/12/2015 à 13:00
Citation Envoyé par LittleWhite  Voir le message
Pensez-vous que cela a une utilité ? Laquelle ?

L'embarqué probablement, mais je sais pas trop vu que c'est compatible x86 seulement.

Sinon des projets très spécifiques (ils donnent l'exemple d'un serveur DNS).

Intéressant en tout cas et le nom est bien trouvé.
Avatar de tlt tlt - Membre habitué https://www.developpez.com
le 03/12/2015 à 14:01
Le genre de chose dont j'avais vraiment besoin quand j’étais plus jeune, surtout dans le domaine de l'embarqué
Avatar de abriotde abriotde - Membre éprouvé https://www.developpez.com
le 03/12/2015 à 14:02
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.
Avatar de ArKam ArKam - Membre éclairé https://www.developpez.com
le 03/12/2015 à 14:03
Je suis content de voir l’essor que peuvent prendre les solutions unikernel car c'est l'aboutissement de la tendance initiée par les containers Linux (je ne parle pas de docker ici, mais des couches systèmes sous-jacentes), ainsi que des distribution tels que CoreOS etc.
Avatar de Metalman Metalman - Membre expert https://www.developpez.com
le 03/12/2015 à 14:30
Excellente initiative !
Je suppose qu'avec un peu plus d'optimisation côté compilo, on doit pouvoir non seulement réduire le nombre de services inutiles (ce qu'ils proposent déjà), mais aussi de réduire certaines contraintes côté concepts.

Seul défaut que d'autres ont relevé : "embarqué" et "x86 seulement", ça fait d'un coup un peu moins embarqué que prévu... :/

A voir aussi comment ils vont gérer les drivers....
Parce que ne gérer que les drivers d'hyperviseurs......... bein ça laisse toujours un tas de services inutiles sur l'hôte.
Avatar de hajdukcampus hajdukcampus - Membre habitué https://www.developpez.com
le 03/12/2015 à 15:26
@abriotde

Ça devient presque plus simple de faire un nouveau système vu le bordel dans le code (qui au passage est immense).
Avatar de abriotde abriotde - Membre éprouvé https://www.developpez.com
le 04/12/2015 à 12:42
@hajdukcampus

Ca dépends ce que l'on veut faire. Si l'on se limite a tourner sur un hyper viseur, oui c'est certes plus simple de tout refaire a zéro. Mais alors pourquoi faire tout un OS + un hyperviseur, un OS Linux avec conteneur le fait en plus léger puisque l'on a alors plus du tout de couche de virtualisation. On a simplement la couche d'isolation (réalisé par l'hyperviseur) sur un OS classique et la couche d'accès matériel (réalisé par l'hyperviseur). L'OS est largement optimisé on a de place mémoire pour garder beaucoup de librairie "inutile" surtout si c'est mutualisé sur un hôte

A termes l'intérêt que je vois est bien dans l'embarqué. ou du moins le semi-embarqué comme un serveur léger spécifique ultra rapide sur une machine a la configuration légère comme ce dont parle la news originelle.
Avatar de kain_tn kain_tn - Membre chevronné https://www.developpez.com
le 07/12/2015 à 23:36
Citation Envoyé par abriotde  Voir le message
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.

Mmmmh, tu as peut-être raison, sauf en ce qui concerne systemd: ce n'est plus un remplaçant d'init depuis un bon moment maintenant mais plutôt une "chose" qui se veut de plus en plus un système d'exploitation à part entière (un coup d'œil sur son github suffit à s'en convaincre), ce qui fait qu'il faudrait tirer énormément de dépendances pour le faire fonctionner correctement.
Contacter le responsable de la rubrique C++