En grupp forskare från Virginia Polytechnic University (USA), Qualcomm och Aachen Rhine-Westphalia Technical University (Tyskland) de utvecklas den lätta kärnan Hermitux, motsvarande unikernelparadigmet.
HermiTux är avsedda att tillåta att applikationer körs direkt på hypervisor utan behov av ytterligare lager, vilket ger binär kompatibilitet med Linux-applikationer på ABI-nivå.
HermiTux-koden Den är skriven på C-programmeringsspråket och distribueras under BSD-licensen.
HermiTux ger en minimal operativsystemmiljö med sin egen kärna (unikernel), vilken förbrukar mycket mindre resurser än när du skapar miljöer baserade på en vanlig Linux-kärna.
Med det här låter dig snabbt starta applikationer på hypervisor: starttiden överstiger inte 0,1 sekunder.
I HermiTux-prestandatester, cirka 3% släpar efter i miljöer med en vanlig Linux-kärna på grund av att I / O vidarebefordrar till värdssidan.
Minneskonsumtionen i testmiljön var 9 MB, vilket är tio gånger mindre än när man använder Linux-kärnan (Docker-förbrukningen var cirka 10 MB på grund av att man använde en vanlig kärna med värdmiljön utan att använda fullständig virtualisering).
Om HermiTux
Hermitux sticker ut som avsedd att ha förmågan att köra omodifierade applikationer skapad för Linux, detta görs genom stöd för ELF-format, implementering av Linux-systemanrop och emulering av virtuella filsystem.
I det nuvarande skedet av HermiTux-utvecklingen är detta implementerar 83 systemanrop. Totalt tillhandahåller Linux-kärnan mer än 350 systemanrop, men endast en liten del av dem används i riktiga applikationer (för att täcka 90% av programmen för vanliga distributioner räcker det att genomföra 200 systemanrop) .
För att minska förseningar under bearbetning av systemanrop implementeras en valfri mekanism för att omdefiniera (skriva om) systemanrop för att anropa typiska kärnfunktioner.
För statiskt relaterade applikationer, det är möjligt att ersätta syscall-uttalanden med funktionsanrop i en körbar fil.
För dynamiskt relaterade applikationer görs byte på standardbiblioteksnivå.
Dessutom, verktyg har förberetts för att analysera systemanrop som är involverade i körbara filer som låter dig samla in en minimal HermiTux-bild som endast innehåller den kod som krävs för att endast behandla de systemanrop som används i applikationen.
HermiTux-funktioner
Hermitux använder en lätt KVM-baserad hypervisor som laddar Linux-binären tillsammans med ett minimalt lager operativsystemet i en virtuell maskin med en enda adressutrymme. Vid körning fångas systemanropen från applikationen av HermiTux-kärnan.
Valfritt, HermiTux tillhandahåller en mekanism för att skriva om anropet av systemanrop på vanliga kärnfunktionssamtal, vilket minskar systemets samtalslatens avsevärt.
Ur skyddssynpunkt, nämnda modularitet tillåterOchIstället för att filtrera, oanvända systemanrop (till exempel via seccomp) till uteslut dem helt från kärnan.
Applikationen körs i ett delat adressutrymme (HermiTux är utformad för att köras ovanpå en enda applikationshypervisor).
Grundläggande trådstöd (Pthreads Embedded) tillhandahålls.
Som filsystem föreslås MiniFS, där filer placeras i RAM (RAM-disk) och vissa element i virtuella filsystem (/ dev / zero, proc / cpuinfo, etc.) emuleras.
TCP / IP-stacken baseras på LWIP-projektet och en modifierad version av Musl-projektet används som ett standard C-bibliotek.
HermiTux kräver ingen återmontering av applikationer och låter dig köra både kompilerade körbara filer (statiskt och dynamiskt relaterade) och applikationer på tolkade språk (Python, Lua, etc.).