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 }