Rumprun Unikernel

Categorii: Programare, Unix

12-Jul-2017 10:21 - 399 vizionari

Dupa Erlang si XEN am gasit o solutie mult mai flexibila si mai stabila ca sa rulez aplicatii specifice pe platforme dedicate, virtualizate sau cu resurse putine.

Merriam-Webster: Rump in Engleza inseamna o bucata de carne sau un rest (ramasita) dintr-un grup de oameni …

Kernel inseamna nucleu sau samanta si in lumea calculatoarelor este primul program rulat de calculator la pornirea unui sistem de operare.

Unikernel este un kernel minimal destinat sa ruleze o aplicatie, nu un intreg sistem de operare, cu suport limitat pentru executia pe mai multe procesoare, optimizat pentru executie virtualizata.

Conceptul Rumprun Unikernel bazat pe kernel NetBSD este lucrarea de doctorat din 2013 a lui Antti Kantee.

Dupa ce am vizionat cateva filme pe YouTube, am citit lucrarea de doctorat pdf editia a doua (2016) si cateva tutoriale de la http://rumpkernel.org/, pot spune ca am gasit o solutie de testare a lucrarii lui Antti.

Tutorialul este la: https://github.com/rumpkernel/wiki/wiki/Tutorial%3A-Building-Rumprun-Unikernels

Lista de exemple: https://github.com/rumpkernel/rumprun-packages

Testele le-am facut in VirtualBox, cu QEMU.

Nu imi place Xen pentru ca partea de retea este dificil de configurat, Ling este instabil si Xen este incompatibil cu modul grafic pe calculatorul gazda.

Pentru serverul Ubuntu-16.04 64 biti:


#toate comenzile sunt pe cont non root

#instalare aplicatii necesare
sudo apt install libz-dev
sudo apt install build-essential
sudo apt install autoconf
sudo apt install libncurses-dev
sudo apt install libssl-dev
sudo apt install genisoimage
sudo apt install qemu-kvm

#in directorul $HOME
#se aduce rumprun
cd
git clone http://repo.rumpkernel.org/rumprun
cd rumprun/
git submodule update --init


#se construieste platforma hardware
#merge pe sisteme fizice si in masini virtuale kvm
CC=cc ./build-rr.sh hw

#actualizare calea de cautare catre compilatorul c pt rumprun
export PATH="${PATH}:$(pwd)/rumprun/bin"

#tot in directorul $HOME
#se aduc exemplele testate pe rumprun
cd
git clone https://github.com/rumpkernel/rumprun-packages
cd rumprun-packages/

#compilare python3
cd python3/
export RUMPRUN_TOOLCHAIN_TUPLE=x86_64-rumprun-netbsd
make
genisoimage -r -o examples/main.iso examples/main.py
rumprun-bake hw_generic examples/python.bin build/python

#in virtualbox nu merge kvm, dar merge qemu
#pornesc pe PC-ul cu virtualbox Xming server
#si actualizez variabila DISPLAY ca sa vad fereastra qemu
export DISPLAY=10.0.2.2:0

rumprun qemu -i \
   -b images/python.iso,/python/lib/python3.5 \
   -b examples/main.iso,/python/lib/python3.5/site-packages \
   -e PYTHONHOME=/python \
   -- examples/python.bin -m main


#compilare Erlang
cd ~/rumprun-packages/erlang/
make
rumprun-bake hw_virtio beam.hw.bin bin/beam
sudo ./network.sh
./erlrun.sh --virt=qemu


Dupa ce suita rumprun este compilata si executabilele sunt in folderul ~/rumprun/rumprun/bin/, inainte de fiecare compilare a aplicatiilor de test pe un Linux AMD-64 biti:


export PATH="${PATH}:~/rumprun/rumprun/bin"
export RUMPRUN_TOOLCHAIN_TUPLE=x86_64-rumprun-netbsd

Eu am pus comenzile de actualizare PATH si RUMPRUN_TOOLCHAIN_TUPLE in fisierul ~/.profile

Probabil pe un Linux x86 32 biti trebuie export RUMPRUN_TOOLCHAIN_TUPLE=i486-rumprun-netbsdelf

Odata ce aplicatiile demonstrative pornesc cu succes, este usor sa actualizezi scripturile sa porneasca aplicatiile tale.



Ultimele pagini: RSS

Alte adrese de Internet

Categorii

Istoric



Contorizari incepand cu 9 iunie 2014:
Flag Counter

Atentie: Continutul acestui server reprezinta ideile mele si acestea pot fi gresite.