ogboot/installer/ogboot_installer.sh

117 lines
2.7 KiB
Bash

#!/bin/bash
echo "Hello world"
touch "Hello world"
BRANCH=$1
if [[ -z $BRANCH ]]; then
BRANCH="main"
fi
GIT_REPO="ssh://git@ognproject.evlt.uma.es:21987/opengnsys/ogboot.git"
# Obtiene el código fuente del proyecto desde el repositorio de GitHub.
function downloadCode()
{
if [ $# -ne 1 ]; then
echo "${FUNCNAME}(): invalid number of parameters"
exit 1
fi
local url="$1"
echo "${FUNCNAME}(): downloading code from '$url'..."
GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=accept-new" git archive --remote=$url --format zip --output ogboot.zip --prefix=ogboot/ $BRANCH && unzip ogboot.zip
if [ $? -ne 0 ]; then
echo "${FUNCNAME}(): error getting OpenGnsys code from $url"
return 1
fi
rm -f ogboot.zip
echo "${FUNCNAME}(): code was downloaded"
return 0
}
function add_tftpboot_files() {
# Navegar al directorio ogboot
cd ogboot
src_dir="tftpboot"
dest_dir="/opt/opengnsys/tftpboot"
# Crear el directorio de destino si no existe
mkdir -p "$dest_dir"
# Copiar los archivos sin sobrescribir los existentes
cp -rn "$src_dir/." "$dest_dir/"
# Comprobar si la copia fue exitosa
if [ $? -eq 0 ]; then
echo "Los archivos se añadieron con éxito."
else
echo "Hubo un error al añadir los archivos."
fi
# Volver al directorio original
cd ..
}
# Definir la función
mount_NFS() {
if sudo mount -t nfs ognartefactos.evlt.uma.es:/ /mnt; then
echo "Sistema NFS montado correctamente."
else
echo "Error: No se pudo montar el sistema NFS."
exit 1
fi
ls /mnt/
sudo cp -r /mnt/srv/artefactos/ipxe/ /tmp
cd /tmp/ipxe/src
if sudo make -j 4; then
echo "Directorio /tmp/ipxe/src montado correctamente."
else
echo "Error: No se pudo montar el directorio /tmp/ipxe/src."
exit 1
fi
if sudo make bin/undionly.kpxe EMBED=/opt/opengnsys/tftpboot/ipxe_scripts/dhcp_boot.ipxe; then
echo "Fichero de arranque montado correctamente."
else
echo "Error: No se pudo montar el fichero de arranque."
exit 1
fi
sudo cp bin/undionly.kpxe /opt/opengnsys/tftpboot
if sudo make bin-x86_64-efi/ipxe.efi EMBED=/opt/opengnsys/tftpboot/ipxe_scripts/dhcp_boot.ipxe; then
echo "Fichero EFI construido correctamente."
else
echo "Error: No se pudo construir el fichero EFI."
exit 1
fi
sudo cp bin-i386-pcbios/ipxe.efi /opt/opengnsys/tftpboot
}
downloadCode $GIT_REPO
if [ $? -ne 0 ]; then
echo "Error while getting code from the repository"
exit 1
fi
add_tftpboot_files
if [ $? -ne 0 ]; then
echo "Error añadiendo ficheros"
exit 1
fi
mount_NFS
if [ $? -ne 0 ]; then
echo "Error en el montaje NFS"
exit 1
fi