117 lines
2.7 KiB
Bash
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
|