Descargo de Responsabilidad

EVE-NG Docs - Out of EVE-NG Support

Las modificaciones y experimentos descritos en esta nota no forman parte del software oficial de EVE-NG ni cuentan con el respaldo del equipo de desarrollo. Cualquier modificacion realizado en el sistema, incluyendo la sustitucion de binarios, compilaciones o modificacion de compomentes del entorno, se hace con fines de investigacion, aprendizaje y experimentacion.

Si alguno de estos cambios entra en conflicto con los terminos de licencia o con las politicas del proyecto, las responsabilidades recae unicamente en quien decida aplicarlos. El objetivo de este documento es estudiar y comprender el funcionamiento de la plataforma y extender puntos tecnicos, no representar ni sustituir el trabajo del equipo de EVE-NG

De todas formas no afectara a la corrupcion futura de EVE-NG debido a que la version Community Murio. Asi que no tiene soporte de ninguna forma.

QEMU

Arregla QEMU Version

EVE-NG tiene un array hardcodeado en /opt/unetlab/html/includes/apu_nodes.php entre las lineas 645 y 656 que define que versiones de QEMU aparecen disponibles en la interfaz. Las versiones instaladas en /opt que no esten en este array simplemente no aparecen como opcion al configurar un nodo, existen en el disco pero son invisibles para EVE-NG

Antes, el array original solo tenia hasta la version 6.0.0, aunque en /opt ya existen versiones mas nuevas instaladas por EVE-NG

'list'  => Array ( '1.3.1' => '1.3.1' ,
	'2.0.2' => '2.0.2',
	...
	'6.0.0' => '6.0.0',
	'' => 'tpl'.( isset($p['qemu_version'])?'('.$p['qemu_version'].')':"(default 2.4.0)")));

Asi que solo debes agregar las versiones que faltan antes de la linea vacia '':

'6.0.0' => '6.0.0',
'7.2.9' => '7.2.9',
'8.2.1' => '8.2.1',
'9.2.2' => '9.2.2',
'' => 'tpl'...

Compila nueva version

Lecturas Recomendadas

Compilado y probado en Ubuntu 22.04 LTS (Jammy), usando la version de Qemu 11.0.2 sin problemas

Instala las dependencias de compilacion para Ubuntu 24.04LTS

sudo apt install python3-pip python3-tomli autoconf automake bison build-essential cmake flex libasound2-dev libepoxy-dev libfdt-dev libgbm-dev libgcrypt20-dev libglib2.0-dev libgtk-3-dev libpipewire-0.3-dev libpixman-1-dev libpulse-dev libslirp-dev libspice-server-dev libsdl2-dev libsdl2-net-dev libsdl2-image-dev libsdl2-ttf-dev libtool libusb-1.0-0-dev libbz2-dev libcbor-dev liblzo2-dev libncurses-dev libvirglrenderer-dev ninja-build zlib1g zlib1g-dev libaio-dev liburing-dev libseccomp-dev libcap-ng-dev libzstd-dev libcurl4-openssl-dev libnuma-dev libgnutls28-dev libusbredirparser-dev libbpf-dev libssh-dev libcapstone-dev libfuse3-dev libsnappy-dev libiscsi-dev

Crea una carpeta temporal de compilacion y ve alli

mkdir /root/test && cd /root/test

Revisa las fuentes disponibles para QEMU y descarga el TAR | QEMU Download Source

wget https://download.qemu.org/qemu-11.0.2.tar.xz

Descomprime el TAR

tar xvJf qemu-11.0.2.tar.xz

Entra a la carpeta creada

cd qemu-11.0.2

Configura QEMU

./configure --prefix=/opt/qemu-11.0.2 --target-list=i386-softmmu,x86_64-softmmu --enable-kvm --enable-vhost-net --enable-vnc --enable-vnc-jpeg --enable-spice --enable-spice-protocol --enable-slirp --enable-libusb --enable-virtfs --enable-opengl --enable-virglrenderer --enable-guest-agent --disable-docs

Compila la configuracion de QEMU (Se demoro 1:24min en 20 hilos)

make -j$(nproc)

Instala la version compilada en el prefijo /opt/qemu-11.0.2

make install

Escribe la nueva version en el array de EVE-NG para que aparesca en la interfaz, agrega la linea en /opt/unetlab/html/includes/apu_nodes.php

'11.0.2' => '11.0.2',

Crea la carpeta en el skeleton (/opt/unetlab/skeleton/) para que EVE-NG pueda crear correctamente el punto de montaje dentro de jails para cada nodo

mkdir /opt/unetlab/skeleton/opt/qemu-11.0.2

EVE-NG ejecuta cada nodo dentro de un chroot jail, QEMU 11.0.2 enlaza librerias mas nuevas que las incluidas en el jail base, por lo que se deben copiar

Verifica y quita el flag de inmutable a la carpeta

lsattr /opt/unetlab/jail/lib/x86_64-linux-gnu/

chattr -R -i /opt/unetlab/jail/lib/x86_64-linux-gnu/

Copia las librerias que faltan (1 por linea)

cp /lib/x86_64-linux-gnu/libcapstone.so.4 /opt/unetlab/jail/lib/x86_64-linux-gnu/

cp /lib/x86_64-linux-gnu/libSDL2_image-2.0.so.0 /opt/unetlab/jail/lib/x86_64-linux-gnu/

cp /lib/x86_64-linux-gnu/libcurl.so.4 /opt/unetlab/jail/lib/x86_64-linux-gnu/

cp /lib/x86_64-linux-gnu/libtiff.so.5 /opt/unetlab/jail/lib/x86_64-linux-gnu/

cp /lib/x86_64-linux-gnu/libwebp.so.7 /opt/unetlab/jail/lib/x86_64-linux-gnu/

cp /lib/x86_64-linux-gnu/libjbig.so.0 /opt/unetlab/jail/lib/x86_64-linux-gnu/

cp /lib/x86_64-linux-gnu/libdeflate.so.0 /opt/unetlab/jail/lib/x86_64-linux-gnu/

cp /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-15.99.so /opt/unetlab/jail/lib/x86_64-linux-gnu/

Arregla los permisos

/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

Kernel

Documentacion

Fuentes (Lo unico util de aqui es el nuevo kernel)

EVE-NG requiere un kernel con soporte para KSM (Kernel Same-page Merging), una funcion que fusiona paginas de memoria identicas entre multiples VMs, permitiendo que varios nodos compartan la misma base de imagen sin duplicar el uso de RAM. Es lo que hae que levantar 10 nodos con la misma imagen no consuma 10 veces la misma memoria

Un kernel mainline normal puede no incluir los parches especificos de KSM que EVE-NG utiliza (no parecen ser parches publicos hasta donde se).

La solucion es utilizar los kernels compilados por el equipo de EVE-NG para la version freemium de Eve-NG Pro 7.x, viene con KSM habilitado y soporte para Hypr-V, y no tiene prerequisitos que eviten su uso en Ubuntu 22.04LTS

Versiones Disponibles

El equipo de EVE-NG solo mantiene la ultima version en su repositorio. Revisa los repos, copia cada link y los descargas en la maquina utilizando wget

Crea una carpeta temporal y ve alli

mkdir /root/linux && cd /root/linux

Descarga las versiones, corrobora con el callout de arriba

wget https://www.eve-ng.net/noble/pool/main/l/linux-hv-utils-7.1.1-eve-ksm+/linux-hv-utils-7.1.1-eve-ksm+_7.1.1-eve-ksm+-1_amd64.deb

wget https://www.eve-ng.net/noble/pool/main/l/linux-upstream/linux-headers-7.1.1-eve-ksm+_7.1.1-eve-ksm-g0fc53eda58f0-1_amd64.deb

wget https://www.eve-ng.net/noble/pool/main/l/linux-upstream/linux-image-7.1.1-eve-ksm+_7.1.1-eve-ksm-g0fc53eda58f0-1_amd64.deb

wget https://www.eve-ng.net/noble/pool/main/l/linux-upstream/linux-libc-dev_7.1.1-eve-ksm-g0fc53eda58f0-1_amd64.deb

Instala los paquetes descargados

sudo apt install ./*.deb

Reinicia y deberia eligir automaticamente el nuevo kernel

Reboot

Antes

uname -r

6.7.5-eveng-6-ksm+

Despues

uname -r

7.1.1-eve-ksm+

Cierre

Bueno, no pense que funcionaria, El Kernel y Qemu son el 80% de la base de EVE-NG

Para un futuro, espero lograr hacer lo que hize con IOU WEB - Rocky Linux 8.10. La base es del mismo autor, Andrea Dainese, en los tiempos de UNL, es factible

Aunque haya sido el hater n°1, le deseo lo mejor al equipo de EVE-NG, es una herramienta estupenda y util y eso no se borra con simples y llanas malas desiciones. Solo espero que se centren en la comunidad otra vez

Mientras que siga encendiendo hay esperanza

— Keep Learning —