Група изследователи от Вирджинския политехнически университет (САЩ), Технически университет Qualcomm и Aachen Рейн-Вестфалия (Германия) те се развиват лекото ядро Hermitux, съответстваща на парадигмата на unikernel.
HermiTux е предназначени да позволяват стартиране на приложения директно на хипервизора без нужда от допълнителни слоеве, което осигурява двоична съвместимост с Linux приложения на ниво ABI.
Кодът на HermiTux Той е написан на програмния език C и се разпространява под лиценза BSD.
HermiTux осигурява минимална среда на операционната система със собствено ядро (unikernel), което консумира много по-малко ресурси отколкото при създаване на среди, базирани на нормално ядро на Linux.
С него това ви позволява бързо да стартирате приложения на хипервизора: времето за стартиране не надвишава 0,1 секунди.
В тестове за производителност на HermiTux, приблизително 3% изоставаха в среди с редовно ядро на Linux, поради режийни пренасочвания на I / O към страната на хоста.
Консумацията на памет в тестовата среда е 9 MB, което е 10 пъти по-малко, отколкото при използване на ядрото на Linux (консумацията на Docker беше около 2MB поради използването на общо ядро с хост средата, без да се използва пълна виртуализация).
Относно HermiTux
Hermitux се откроява с това, че е предвидено да има възможност да стартира немодифицирани приложения създаден за Linux, това се извършва чрез поддръжка на формата ELF, внедряването на системни разговори на Linux и емулирането на виртуални файлови системи.
На сегашния етап от развитието на HermiTux това изпълнява 83 системни повиквания. Общо ядрото на Linux осигурява над 350 системни обаждания, но само малка част от тях се използва в реални приложения (за покриване на 90% от програмите на редовните дистрибуции е достатъчно да се реализират 200 системни обаждания) .
За да се намалят закъсненията по време на обработката на системните повиквания, е внедрен незадължителен механизъм за предефиниране (пренаписване) на системните повиквания за извикване на типични функции на ядрото.
За статично свързани приложения, възможно е да замените операторите syscall с извиквания на функции в изпълним файл.
За динамично свързани приложения замяната се извършва на стандартно ниво на библиотека.
Освен това, са подготвени инструменти за анализ на системните повиквания, участващи в изпълними файлове които ви позволяват да съберете минимално изображение на HermiTux, което включва само кода, необходим за обработка само на системните повиквания, използвани в приложението.

Характеристики на HermiTux
Hermitux използва лек KVM-базиран хипервизор, който зарежда двоичния файл на Linux заедно с минимален слой на операционната система в рамките на едно адресно пространство виртуална машина. По време на изпълнение системните повиквания, направени от приложението, се улавят от ядрото HermiTux.
По желание, HermiTux осигурява механизъм за пренаписване на извикването на системни повиквания при общите извиквания на функцията на ядрото, значително намалявайки забавянето на системното извикване.
От гледна точка на защитата, споменатата модулност позволяваИВместо филтриране, неизползвани системни обаждания (например чрез seccomp) до изключете ги напълно от ядрото.
Приложението се изпълнява в споделено адресно пространство (HermiTux е проектиран да работи върху един хипервизор на приложение).
Осигурена е основна поддръжка на резби (Pthreads Embedded).
Като файлова система се предлага MiniFS, в който файловете се поставят в RAM (RAM диск) и се емулират някои елементи на виртуални файлови системи (/ dev / zero, proc / cpuinfo и др.).
Стекът TCP / IP се основава на проекта LWIP и модифицирана версия на проекта Musl се използва като стандартна библиотека C.
HermiTux не изисква повторно сглобяване на приложения и ви позволява да стартирате както компилирани изпълними файлове (свързани статично и динамично), така и приложения на интерпретирани езици (Python, Lua и др.).