Autor Tema: Script autoinstalación Wifislax 4.8 RC1  (Leído 1806 veces)

0 Usuarios y 1 Visitante están viendo este tema.

koji3

  • Visitante
Script autoinstalación Wifislax 4.8 RC1
« en: 29-01-2014, 00:00 (Miércoles) »
Hola,
Hoy cuando he visto que ya está disponible la nueva versión de wifislax la he descargado rápidamente. Sin embargo no tenía medios físicos en los que instalarlo para probar una versión live del sistema, por lo que he decidido añadir una nueva entrada al grub que lea el iso directamente.

He preparado este script de autoinstalación. Funciona simplemente pasándole por parámetro el archivo iso, añadiendo una entrada nueva al grub que lo cargará. De esta manera se pueden tener virtualmente tantos sistemas como espacio tenga el disco sin necesidad de utilizar máquinas virtuales.

Seguro que tiene mil errores, agradecería que me los indicarais:

Código: [Seleccionar]
#!/bin/bash

#Instala una nueva entrada en el menú de grub2 para Wifislax Live
#La imagen se pasa como parámetro

#Distribuido con la mejor intención pero sin ninguna garantía
#By: http://jose-linares.com

#Comprueba la cantidad de parámetros
if [[ $# != 1 ]] ; then
echo "Número de argumentos distinto de 1. Uso: $0 archivo.iso" >&2
exit 1
fi

#Comprueba si se tienen permisos de root
if [[ $(whoami) != 'root' ]] ; then
echo "Permisos insuficientes. Ejecutar como root" >&2
exit 1
fi

#Comprueba la integridad de los datos (md5 válido para la versión rc1)
echo "Comprobando suma de verificación..."
if [[ $(md5sum $1) != 'c35a1d39b4ea41f716693a174dc55984' ]] ; then
echo "Suma de comprobación incorrecta. Imagen corrupta o md5sum no instalado" >&2
exit 1
fi

#Comprueba si existe el archivo de configuración de grub2 necesario
if [[ ! -w '/etc/grub.d/40_custom' ]] ; then
echo "Archivo de configuración no encontrado. Grub instalado?" >&2
exit 1
fi

#Detecta el dispositivo donde se encuentra el iso y el punto de montaje, así como otros datos necesarios
ruta_absoluta=$(readlink -f $1)
p_montaje=$(df $1 --output=target | tail -n1)
dispositivo=$(df $1 --output=source | tail -n1)

letra_disco=$(echo $dispositivo | cut -b 8)
case $letra_disco in
a) num_disco=0;;
b) num_disco=1;;
c) num_disco=2;;
d) num_disco=3;;
e) num_disco=4;;
*) exit 1;;
esac

particion=$(echo $dispositivo | cut -b 9-)
iso_scan=${ruta_absoluta##$p_montaje}

#Escribe la información de la nueva entrada en el archivo 40_custom
echo "menuentry \"Wifislax 4.8 RC1\" {
set root=(hd$num_disco,$particion)
loopback loop $iso_scan
linux (loop)/boot/vmlinuz boot=casper iso-scan/filename=$iso_scan --
initrd (loop)/boot/initrd.xz
}" >> /etc/grub.d/40_custom

#Actualiza grub
update-grub > /dev/null 2> /dev/null
if [[ $? -ne 0 ]]; then
grub2-mkconfig -o /boot/grub2/grub.cfg > /dev/null 2> /dev/null
if [[ $? -eq 0 ]]; then echo "Correcto, prueba a reiniciar" ; else echo "ERROR" >&2 ; fi
else
echo "Correcto, prueba a reiniciar"
fi

Por ahora se llama wifislax2grub.sh, también solicito ayuda con lo del nombre. No sería dificil adaptarlo a cualquier iso linux, pero ahora con los exámenes no tengo tiempo, ya me pondré...

Saludos!

EDITO:
Se me olvidaba decir: enhorabuena a los desarrolladores porque se han marcado una distribución de culto  >:( >:( >:(


« Última modificación: 29-01-2014, 09:59 (Miércoles) por koji3 »