Error: no ikvm64 in java.library.path en FreeBSD


Para la mayoría de KVMs con tener OpenJDK e IcedTea instalado debería ser suficiente pero hay algunos modelos como los de SuperMicro que son problemáticos, para estos casos utilizaremos el binario de Linux mediante la compatibilidad Linux-FreeBSD tal y como se explica en este artículo.

El error en cuestión es el siguiente:

no ikvm64 in java.library.path

Este se debe a que el applet solo es compatible con Windows, MacOSX y Linux y busca binarios que en FreeBSD no existen, para resolver el problema tendremos que utilizar el binario de Java de Linux mediante la compatibilidad de binarios de FreeBSD.

Cargamos el módulo de compatibilidad con Linux tanto para 32 como para 64 bits:

kldload linux
kldload linux64

Comprobamos que ambos módulos estén cargados:

kldstat|grep linux
13    2 0xffffffff8425f000    3df60 linux.ko
24    1 0xffffffff84319000    35b20 linux64.ko

Instalamos los binarios y librerías base de Linux:

pkg install emulators/linux_base-c7

Habilitamos la compatibilidad en el boot:

vi /etc/rc.conf
linux_enable="YES"

El único modo de instalar oracle-jdk de Linux es mediante ports ya que se trata de un software restringido por temas de licencias:

RESTRICTED: Redistribution of repackaged binaries not permitted
A package is not available for ports marked as: Forbidden / Broken / Ignore / Restricted

No hay problema en mezclar paquetes binarios y ports en este caso porque este software solo está disponible mediante ports, además no se instala en el sistema como tal si no que se instala en el directorio donde residen los binarios de Linux.

Instalamos los requisitos previos:

pkg install javavmwrapper linux-c7-xorg-libs

Antes de compilar el port hay que bajarse un fichero de la web de Oracle:

jdk-8u241-linux-x64.tar.gz

NOTA: La versión del fichero irá cambiando con el paso del tiempo, para averiguar que versión intentaremos compilar el port tal y como se indica unos pasos mas abajo y él mismo nos mostrará por pantalla la versión a descargar.

Lo descargamos en el directorio:

/usr/ports/distfiles

Compilamos e instalamos el port linux-oracle-jdk18

cd /usr/ports/java/linux-oracle-jdk18/
make install clean

Java intentará obtener cierta información del sistema accediendo al directorio proc de Linux, para que esta información esté disponible hay que cargar el módulo linprocfs y montar el directorio /compat/linux/proc.

Cargamos el módulo linprocfs

kldload linprocfs

Editamos el fstab:

vi /etc/fstab
linprocfs   /compat/linux/proc   linprocfs   rw   0  0

Montamos el directorio:

mount /compat/linux/proc

En teoria se puede configurar el navegador para que abra el fichero directamente con el binario de Linux pero yo prefiero guardar el fichero y abrirlo manualmente:

/usr/local/linux-oracle-jdk1.8.0/bin/javaws -verbose FILENAME.jnlp

Normalmente el acceso al KVM es necesario en algún tipo de emergencia donde necesitamos acceso rápido al servidor, para tal fin yo utilizo un script muy simple en bash:

vi javaApplet
#!/usr/bin/env bash

if [ $# -eq 0 ]; then
    echo "ERROR: No arguments supplied"
    exit
fi
/usr/local/linux-oracle-jdk1.8.0/bin/javaws -verbose $1
chmod 700 javaApplet

Tan solo tendremos que pasarle el nombre del fichero:

./javaApplet FILENAME.jnlp

Si necesitamos acceder a la configuración de Java lo haremos ejecutando:

/usr/local/linux-oracle-jdk1.8.0/bin/jcontrol
Si te ha gustado el artículo puedes invitarme a un redbull aquí.
Si tienes cualquier pregunta siempre puedes enviarme un Email o escribir en el grupo de Telegram de AlfaExploit.
Autor: kr0m -- 17/08/2020 03:44:16 -- Categoria: FreeBSD