Archivo etiqueta Ubuntu

Actualizando modulos de VirtualBox en Ubuntu

Los usuarios de Ubuntu que tengan VirtualBox OSE [VB-OSE] instalado, sabrán que cada ves que se actualiza el kernel a una nueva versión, nuestro tan querido VB-OSE deja de funcionar, esto se debe a que los chicos que mantienen los módulos del kernel para VB-OSE, ya se por procastrinación, o falta de tiempo, no los tienen estos justo a tiempo para el release del kernel.

Esta dessincronizacion, nos puede causar muchos problemas si dependemos de este software para correr otros sistemas operativos para realizar tareas cotidianas. Por lo que desarrollé un pequeño script que nos ayudara a mantener actualizados nuestros modulos directamente desde la fuente en cuanto se detecte un cambio de version de kernel. Este script no detecta nuevas versiones del codigo de los modulos de VB-OSE, la verdad no tenia ganas de hacerlo y ademas por que quiero tener el control de lo que descomprimo en el directorio src.

Pasemos a ver que tenemos en la lista de compras , estos seran los paquetes que deberemos tener instalados:

  • vitualbox-ose
  • vitualbox-ose-source
  • Headers del Kernel [no me acuerdo el nombre del paquete ... pero pueden buscarlo fácilmente]
  • gnone-schedule [lo usaremos como interface para cron, el cual nos dejara planificar cuando correra el script]

y por supuesto sus dependencias.

Una ves que tengamos estos paquetes deberemos descomprimir el codigo provisto por el paquete vitualbox-ose-source, este lo instala en /usr/src/virtualbox-ose.tar.bz2.

Bien hasta ahora todo lindo, paso a presentarles a nuestro querido script

#!/bin/bash
#=========================================
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; version 2 of the License.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#=================================
#          FILE:  vbcompiler.sh
#
#         USAGE:  ./vbcompiler.sh
#
#        AUTHOR:   (Damian M. Sartori – TheCoffeMaker)
#       VERSION:  1.0
#       CREATED:  10/12/08 22:53:41 ARST
#=====================================

#===  FUNCTION  =========================
#          NAME:  checkcommandstatus
#   DESCRIPTION:  Checks last command status and if it has failed
#          script will fail and log error message.
#    PARAMETERS:  command, command exit status
#       RETURNS:  nothing
#==================================
LOGSF=[DIRECTORIO_DELOGS]/vbcompiler.log
KVF=[DIRECTORIO_DEOLDKERNEL]/oldkernel
function checkcommandstatus () {
if [ 0 -ne $1 ] ; then
echo $(date) – COMMAND: $2 FAILED – Exit status $0 >> $LOGSF
exit -1
else
echo $(date) – COMMAND: $2 COMPLETE >> $LOGSF
fi
}    # ———-  end of function checkcommandstatus  ———-
echo ———- STARTING VBCOMPILER $(date) ———— >> $LOGSF
KERNELV=$(uname -r);
OLDKERNELV=$(cat $KVF);

if [ $KERNELV != $OLDKERNELV ] ; then
cd /usr/src
rm linux
checkcommandstatus $? “RM”;
ln -s linux-headers-$KERNELV linux
checkcommandstatus $? “LN”;
cd modules/virtualbox-ose/
make
checkcommandstatus $? “MAKE”;
make install
checkcommandstatus $? “MAKE INSTALL”;
/etc/init.d/vboxdrv start
checkcommandstatus $? “VBOXDRV START”;
echo $KERNELV > $KVF
checkcommandstatus $? “UPDATE CURRENT KERNEL”;
else
checkcommandstatus 0 ‘KERNEL AND MODULES ARE UPDATED’;
fi
echo ———- FINISHING VBCOMPILER $(date) ———— >> $LOGSF

[DIRECTORIO_DELOGS] Lo tienen que reemplazar por el lugar donde quieren que se alojen los logs. Por ejemplo /tmp/logs/

[DIRECTORIO_DEOLDKERNEL] Lo tienen que reemplazar por el lugar donde el script guardara la ultima version del kernel. Por ejemplo /etc/scripts/

Metan este codigo en un arhivo llamado vbcompiler.sh o como quieran y denle permisos de ejecución.

Si quieren ya pueden ejecutarlo con sudo, sino pueden planificarlo con cron o utilizando el gnome-schedule (ejecutado como root, usando gksudo o el mismo sudo) y listo.

Espero que les sea de utilidad.

Saludos.

, ,

No hay Comentarios