Hogyan tud egy operációs rendszer, amely sem nem tulajdonosi, sem nem a Linux kernel-re épül, mégis Docker-t futtatni? Ehhez olyan funkciókra van szükség, mint a namespace-ek és a cgroups. Pontosan ezt valósította meg a Vinix: saját megoldást készítette ezekre, kiegészítve overlayfs-sel és seccomp-pal, így az alap Alpine Linux Docker motor ARM64-en is fut. Emellett fut rajta a QEMU 9.1.2 is, amellyel az első Vinixen belül, egy ablakban el lehet indítani egy második Vinixet. Játékra pedig gond nélkül viszi a DOOM-ot, egy DOOM 3 demót, a Gothic II demóját OpenGothic segítségével, valamint a Minecraft Java Editiont.
De vannak még korlátok
A Docker támogatás például nem tud bridge hálózatot és iptables szabályokat kezelni, a QEMU pedig egyelőre szoftveres emuláción fut. A Minecraft interpreter módban fut egyetlen CPU-magon, a DOOM 3 pedig nagyjából 13 FPS-t ér el szoftveres rendereléssel.
Még egy új OS?
A Vinix célja, hogy gyors, minimalista, nyílt forráskódú rendszert adjon a MacBookoknak. A projektet az motiválta, hogy a macOS minden egyes kiadással egyre lassabb és egyre felduzzadtabb lett. Kezdetben Apple Silicon gépekre koncentrálnak, és idővel az egész M-szériát szeretnék lefedni, de jelenleg csak az M1-et támogatják.
A Linuxot használóknak kevés okuk van váltani, a Vinix inkább olyan rendszert céloz, amely systemd nélkül működik, és a kernel elég kicsi ahhoz, hogy egy ember végig tudja olvasni.
Ezen felül semmi sem fut a háttérben, amíg te el nem indítod, és a rendszer egyetlen init rendszert, egy asztalt, egy csomagkezelőt és egy bináris formátumot használ. A kernel kézzel kezeli a memóriát, nem garbage collector-t használ, így egy takarítási ciklus nem tud félbeszakítani egy rendszerhívást vagy a kompozitort.
Mindez a V programozási nyelvre épül, amelyet a gyors fordítás és az egyszerű, jól olvasható felépítés miatt választottak. A projekt egyben tesztkörnyezet is a bare metal programozáshoz V-ben.
A rendszer biztonsági modellje az OpenBSD-t követi, elérhető benne a pledge és unveil, bár ezeket az alkalmazásoknak külön kell kérniük, és felhasználói memória alapértelmezetten nem lehet egyszerre írható és futtatható. A bootloader, a kernel és a gyökér fájlrendszer ellenőrzését még nem támogatja.
Linuxos alkalmazásokat futtat
A Vinix alapja egy monolitikus kernel, amelyet a Limine bootol, a drivereket pedig közvetlenül beépítik az image-be. A kód nagy része V nyelven íródott, emellett C-t és assemblyt is használnak.
Saját, natív asztali felületet kínál, amelyet a V UI2-val építettek, és közvetlenül a framebufferre rajzol. ARM64-en választható X.org vagy Hyprland session is. A fejlesztők szerint a rendszer indulás után 50 MB RAM-ot foglal, a telepítés után pedig nagyjából 1 GB lemezterületet használ.
Az Alpine Linux, amely az említett Docker motor mögött álló disztribúció, kifejezetten pehelysúlyú és biztonság-központú, musl és BusyBox köré épül. A Vinix az Alpine aarch64 csomagjait célozza meg.
Ennek köszönhetően a Vinix képes Linuxos alkalmazásokat futtatni: megválaszolja az általuk használt rendszerhívásokat, és biztosítja az ELF formátumot és a musl viselkedését, amelyekre ezek a binárisok támaszkodnak. Így a programok natívan futnak, virtuális gép vagy emulátor nélkül.
Új alkalmazásokat a pkg eszközzel lehet telepíteni, ez egy parancssoros program, amely az Alpine aarch64 tárolóiból tölti le a csomagokat. Olyan alkalmazások működnek rajta, mint a Chromium, a GIMP, a Sublime Text vagy a Gnumeric, és a széles körben használt Wine kompatibilitási réteg is fut rajta.
Van azonban egy korlát: mindez ARM64-re és válogatott csomagokra szűkül. Az a szoftver, amely olyan Linux kernel funkcióra támaszkodik, amit a Vinix még nem valósított meg, lehet, hogy nem fog megfelelően működni.
Emellett hamarosan érkezik a támogatás az M3, M4 és M5 chipekhez is, a GPU drivereken viszont még dolgoznak.
Kik állnak mögötte?
A Vinix története több évre nyúlik vissza: az első commitok GitHub-on 2021 márciusáig vezethetők vissza, az eredeti kernel magot pedig Mintsuki, a Limine készítője írta. A fejlesztés ezután nagyjából két évre leállt, majd Alexander Medvednikov, a V nyelv megalkotója vette át a karbantartói szerepet.
Mintsuki magja lefedte a fizikai és virtuális memóriakezelőt, valamint az ütemezőt, az átadás óta viszont a Vinix tárhely-, hálózati-, beviteli- és grafikus támogatással bővült, Unix-szerű userspace-t kapott, és megjelent az Alpine-kompatibilitás is, amiről korábban szó volt.
Vinix letöltése
Az hivatalos weboldalon egy .dmg telepítő érhető el M1-es Macekhez, míg a projekt tárolója két külön ISO-t kínál: az egyik ARM64-re készült (QEMU-hoz és VirtualBoxhoz Apple Silicon Maceken), a másik pedig x86_64-re (Intel és AMD rendszerekhez).
Ha virtuális gépen szeretnéd kipróbálni, az igények elég alacsonyak. A Vinixnek legalább 4 GB memória és 4 GB vagy több tárhely kell. Forráskódból is le lehet fordítani.

