ogboot/installer/ogboot_installer.sh

130 lines
3.6 KiB
Bash

TFTPSERV=tftp
TFTPCFGDIR=/var/lib/tftpboot
function createDirs()
{
if [ $# -ne 1 ]; then
errorAndLog "${FUNCNAME}(): invalid number of parameters"
exit 1
fi
local path_ogboot_base="$1"
# Crear estructura de directorios.
echoAndLog "${FUNCNAME}(): creating directory paths in $path_ogboot_base"
mkdir -p $path_ogboot_base
mkdir -p $path_ogboot_base/bin
mkdir -p $path_ogboot_base/client/{cache,images,log}
mkdir -p $path_ogboot_base/doc
mkdir -p $path_ogboot_base/etc
mkdir -p $path_ogboot_base/lib
mkdir -p $path_ogboot_base/log/clients
ln -fs $path_ogboot_base/log /var/log/ogboot
mkdir -p $TFTPCFGDIR
ln -fs $TFTPCFGDIR $path_ogboot_base/tftpboot
mkdir -p $path_ogboot_base/tftpboot/{menu.lst,grub}
if [ $? -ne 0 ]; then
errorAndLog "${FUNCNAME}(): error while creating dirs. Do you have write permissions?"
return 1
fi
# Crear usuario ficticio.
if id -u $OPENGNSYS_CLIENT_USER &>/dev/null; then
echoAndLog "${FUNCNAME}(): user \"$OPENGNSYS_CLIENT_USER\" is already created"
else
echoAndLog "${FUNCNAME}(): creating OpenGnsys user"
useradd $OPENGNSYS_CLIENT_USER 2>/dev/null
if [ $? -ne 0 ]; then
errorAndLog "${FUNCNAME}(): error creating OpenGnsys user"
return 1
fi
fi
# Mover el fichero de registro de instalación al directorio de logs.
echoAndLog "${FUNCNAME}(): moving installation log file"
mv $LOG_FILE $OGLOGFILE && LOG_FILE=$OGLOGFILE
chmod 600 $LOG_FILE
echoAndLog "${FUNCNAME}(): directory paths created"
return 0
}
# Copia ficheros de configuración y ejecutables genéricos del servidor.
function copyServerFiles ()
{
if [ $# -ne 1 ]; then
errorAndLog "${FUNCNAME}(): invalid number of parameters"
exit 1
fi
local path_ogboot_base="$1"
# Lista de ficheros y directorios origen y de directorios destino.
local SOURCES=( server/tftpboot \
/usr/lib/shim/shimx64.efi.signed \
/usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed \
)
local TARGETS=( tftpboot \
tftpboot \
tftpboot/grubx64.efi \
)
if [ ${#SOURCES[@]} != ${#TARGETS[@]} ]; then
errorAndLog "${FUNCNAME}(): inconsistent number of array items"
exit 1
fi
# Copiar ficheros.
echoAndLog "${FUNCNAME}(): copying files to server directories"
pushd $WORKDIR/ogboot
local i
for (( i = 0; i < ${#SOURCES[@]}; i++ )); do
if [ -f "${SOURCES[$i]}" ]; then
echoAndLog "Copying ${SOURCES[$i]} to $path_ogboot_base/${TARGETS[$i]}"
cp -a "${SOURCES[$i]}" "${path_ogboot_base}/${TARGETS[$i]}"
elif [ -d "${SOURCES[$i]}" ]; then
echoAndLog "Copying content of ${SOURCES[$i]} to $path_ogboot_base/${TARGETS[$i]}"
cp -a "${SOURCES[$i]}"/* "${path_ogboot_base}/${TARGETS[$i]}"
else
warningAndLog "Unable to copy ${SOURCES[$i]} to $path_ogboot_base/${TARGETS[$i]}"
fi
done
popd
}
############################################################
### Esqueleto para el Servicio pxe y contenedor tftpboot ###
############################################################
function tftpConfigure()
{
echoAndLog "${FUNCNAME}(): Configuring TFTP service."
# Habilitar TFTP y reiniciar Inetd.
if [ -n "$TFTPSERV" ]; then
if [ -f $INETDCFGDIR/$TFTPSERV ]; then
perl -pi -e 's/disable.*/disable = no/' $INETDCFGDIR/$TFTPSERV
else
service=$TFTPSERV
$ENABLESERVICE; $STARTSERVICE
fi
fi
service=$INETDSERV
$ENABLESERVICE; $STARTSERVICE
# comprobamos el servicio tftp
sleep 1
testPxe
}
# Comprueba que haya conexión al servicio TFTP/PXE.
function testPxe ()
{
echoAndLog "${FUNCNAME}(): Checking TFTP service... please wait."
echo "test" >$TFTPCFGDIR/testpxe
tftp -v 127.0.0.1 -c get testpxe /tmp/testpxe && echoAndLog "TFTP service is OK." || errorAndLog "TFTP service is down."
rm -f $TFTPCFGDIR/testpxe /tmp/testpxe
}