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/jcontrolSi te ha gustado el artículo puedes invitarme a un redbull aquí.