HermiTux: binarny unikernel kompatybilny z aplikacjami Linux

Hermitux

Grupa badaczy z Virginia Polytechnic University (USA), Qualcomm i Politechnika Nadrenii-Westfalii w Akwizgranie (Niemcy) rozwijają się lekki rdzeń Hermitux, odpowiadający paradygmatowi unikernel.

HermiTux jest ma na celu umożliwienie uruchamiania aplikacji bezpośrednio na hypervisorze bez konieczności uciekania się do dodatkowych warstw, które który zapewnia binarną kompatybilność z aplikacjami Linux na poziomie ABI.

Kod HermiTux Jest napisany w języku programowania C i rozpowszechniany na licencji BSD..

HermiTux zapewnia minimalne środowisko systemu operacyjnego z własnym jądrem (unikernel), które zużywa znacznie mniej zasobów niż przy tworzeniu środowisk opartych na zwykłym jądrze Linuksa.

Z tym tym pozwala na szybkie uruchamianie aplikacji na hypervisorze: czas rozruchu nie przekracza 0,1 sekundy.

W testach wydajności HermiTux, około 3% opóźnień w środowiskach ze zwykłym jądrem Linuksa ze względu na obciążenie związane z przekazywaniem wejść/wyjść do strony hosta.

Zużycie pamięci w środowisku testowym wyniosło 9 MB, czyli 10 razy mniej niż w przypadku korzystania z jądra Linuksa (zużycie Dockera wyniosło około 2 MB ze względu na użycie wspólnego jądra ze środowiskiem hosta bez wykorzystania pełnej wirtualizacji).

O HermiTux

Hermitux wyróżnia się tym, że ma mieć możliwość uruchamiania niezmodyfikowanych aplikacji stworzony dla Linuksa, to odbywa się poprzez obsługę formatu ELF, implementację wywołań systemowych Linuksa i emulację wirtualnych systemów plików.

Na obecnym etapie rozwoju HermiTux jest to implementuje 83 wywołania systemowe. W sumie jądro Linuksa udostępnia ponad 350 wywołań systemowych, ale tylko niewielka ich część jest wykorzystywana w rzeczywistych aplikacjach (do pokrycia 90% programów w zwykłych dystrybucjach wystarczy zaimplementować 200 wywołań systemowych).

Aby zmniejszyć opóźnienia podczas przetwarzania wywołań systemowych, zaimplementowano opcjonalny mechanizm redefiniowania (przepisywania) wywołań systemowych w celu wywołania typowych funkcji jądra.

W przypadku zastosowań powiązanych statycznie Możliwe jest zastąpienie instrukcji syscall wywołaniami funkcji w pliku wykonywalnym.

W przypadku aplikacji powiązanych dynamicznie zastępowanie odbywa się na poziomie biblioteki standardowej.

Ponadto, przygotowano narzędzia do analizy wywołań systemowych występujących w plikach wykonywalnych które pozwalają na skompilowanie minimalnego obrazu HermiTux zawierającego jedynie kod niezbędny do przetworzenia jedynie wywołań systemowych używanych w aplikacji.

Hermitux

Funkcje HermiTux

Hermitux wykorzystuje lekki hypervisor oparty na KVM, który ładuje plik binarny Linuksa wraz z minimalną warstwą systemu operacyjnego w ramach pojedynczej przestrzeni adresowej maszyny wirtualnej. W czasie wykonywania wywołania systemowe wykonywane przez aplikację są przechwytywane przez jądro HermiTux.

Opcjonalnie HermiTux zapewnia mechanizm zastępowania wywołań systemowych we wspólnych wywołaniach funkcji do jądra, znacznie zmniejszając opóźnienia wywołań systemowych.

Z punktu widzenia ochrony, Pozwala na to modułowośćIZamiast filtrować nieużywane wywołania systemowe (np. przez seccomp) do całkowicie wykluczyć je z rdzenia.

Aplikacja działa we współdzielonej przestrzeni adresowej (HermiTux został zaprojektowany do działania na hypervisorze pojedynczej aplikacji).

Dostępna jest podstawowa obsługa wątków (Pthreads Embedded).

Jako system plików proponowany jest MiniFS, w którym pliki umieszczane są w pamięci RAM (dysku RAM) i emulowane są niektóre elementy wirtualnych systemów plików (/dev/zero, proc/cpuinfo itp.).

Stos TCP/IP oparty jest na projekcie LWIP, a zmodyfikowana wersja projektu Musl jest używana jako standardowa biblioteka C.

HermiTux nie wymaga ponownego składania aplikacji i pozwala na uruchamianie zarówno skompilowanych plików wykonywalnych (łączonych statycznie i dynamicznie), jak i aplikacji w językach interpretowanych (Python, Lua itp.).

Link do projektu.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.