Została wydana wersja hipernadzorcy Bareflank 3.0, która dostarcza narzędzi do szybkiego rozwoju specjalizowanych hipernadzorców. Bareflank napisano w języku C++, wspiera C++ STL. Modularna architektura Bareflank umożliwia łatwe rozszerzanie istniejących możliwości hipernadzorcy oraz tworzenie własnych wariantów hipernadzorców, działających zarówno na sprzęcie (jak Xen), jak i uruchamianych w istniejącym środowisku programowym (jak VirtualBox). Istnieje możliwość uruchamiania systemu operacyjnego w środowisku hosta w oddzielnej maszynie wirtualnej. Kod projektu jest dystrybuowany na licencji LGPL 2.1.
W Bareflank zrealizowano wsparcie dla Linuxa, Windows i UEFI na 64-bitowych procesorach Intel i AMD. Do sprzętowego podziału zasobów maszyn wirtualnych wykorzystywana jest technologia Intel VT-x. Na przyszłość zaplanowano wsparcie dla macOS i systemów BSD, a także możliwość działania na platformie ARM64. Dodatkowo projekt rozwija własny sterownik do uruchamiania VMM (Virtual Machine Manager), loader ELF do ładowania modułów VVM oraz aplikację bfm do zarządzania hipernadzorcą z przestrzeni użytkownika. Udostępniane są narzędzia do pisania rozszerzeń przy użyciu elementów określonych w specyfikacjach C++11/14, biblioteka do rozpakowywania wyjątków (unwind), a także własna biblioteka runtime do wsparcia stosowania konstruktorów/destruktorów oraz rejestrowania obsługiwaczy wyjątków.
Na bazie Bareflank prowadzone są prace nad systemem wirtualizacji Boxy, wspierającym uruchamianie systemów gościnnych i pozwalającym na użycie lekkich maszyn wirtualnych z Linuxem oraz Unikernel do uruchamiania specjalizowanych usług lub aplikacji. W formie odizolowanych usług można uruchamiać zarówno zwykłe usługi internetowe, jak i aplikacje, które mają szczególne wymagania dotyczące niezawodności i bezpieczeństwa, izolowane od wpływu środowiska hosta (środowisko hosta jest izolowane w oddzielnej maszynie wirtualnej). Bareflank jest także podstawą hipernadzorcy MicroV, przeznaczonego do uruchamiania minimalistycznych maszyn wirtualnych (maszyna wirtualna jednej aplikacji), implementującego API KVM i nadającego się do tworzenia systemów krytycznych.
Główne nowości Bareflank 3.0:
- Przejście na wykorzystanie koncepcji mikrojądra. Wcześniej hipernadzorca miał monolityczną architekturę, w której do rozszerzenia funkcjonalności trzeba było korzystać ze specjalnego API do rejestrowania wywołań callback, co utrudniało rozwój rozszerzeń z powodu związania z językiem C++ i wewnętrzną strukturą. Nowa architektura oparta na mikrojądrze zakłada podział hipernadzorcy na komponenty jądra, wykonywane w zerowym poziomie ochrony, oraz rozszerzenia, realizowane na trzecim poziomie (przestrzeń użytkownika). Obie części działają w trybie root VMX, a wszystko inne, w tym środowisko hosta, w trybie nie-root VMX. Rozszerzenia w przestrzeni użytkownika realizują funkcjonalność menedżera maszyn wirtualnych (VMM) i interakcjonują z jądrem hipernadzorcy przez wywołania systemowe, dla których zapewniona jest wsteczna zgodność. Rozszerzenia mogą być tworzone w dowolnych językach programowania, w tym obsługiwany jest język Rust.
- Zrealizowano przejście na wykorzystanie własnej biblioteki BSL z obsługą Rust i C++, która zastąpiła zewnętrzne biblioteki libc++ i newlib. Rezygnacja z zewnętrznych zależności pozwoliła na wdrożenie w Bareflank natywnego wsparcia kompilacji w Windows dla uproszczenia rozwoju na tej platformie.
- Dodano wsparcie dla procesorów AMD. Co więcej, rozwój Bareflank obecnie odbywa się na systemie z CPU AMD, a następnie portowany jest dla CPU Intel.
- W bootloaderze dodano wsparcie dla architektury ARMv8, a dostosowanie hipernadzorcy do tej architektury zostanie zakończone w jednym z kolejnych wydań.
- Zagwarantowano zgodność z wymaganiami dotyczącymi rozwoju krytycznych systemów, sformułowanymi przez organizacje AUTOSAR i MISRA.
Źródło: opennet.ru
