diff --git a/etc/dhcp_boot.ipxe.tmpl b/etc/dhcp_boot.ipxe.tmpl new file mode 100644 index 0000000..7a0b65f --- /dev/null +++ b/etc/dhcp_boot.ipxe.tmpl @@ -0,0 +1,16 @@ +#!ipxe +echo Booting by ipxe +echo MAC Address: ${net0/mac} +set macaddress ${net0/mac} +set prefix http://SERVERIP/ipxe_scripts +echo Prefix: ${prefix} +set configfile ${prefix}/01-${net0/mac} +echo Config File: ${configfile} +ifopen net0 +route +# Intentar cargar la configuración personalizada por MAC +sleep 5 +chain ${configfile} || + +# Si no se encuentra la configuración personalizada, cargar la configuración por defecto +chain $prefix/default.ipxe diff --git a/installer/ogboot_installer.sh b/installer/ogboot_installer.sh index 4f2d5b2..b637cb5 100644 --- a/installer/ogboot_installer.sh +++ b/installer/ogboot_installer.sh @@ -3,6 +3,7 @@ echo "Hello world" touch "Hello world" BRANCH=$1 +MAC_ADDRESSES=$2 if [[ -z $BRANCH ]]; then BRANCH="main" fi @@ -50,9 +51,40 @@ function add_tftpboot_files() { fi # Volver al directorio original - cd .. + } +generate_ipxe_script() { + + # Obtener la dirección IP de eth0 + ip_address=$(ifconfig eth0 | awk '/inet / {print $2}') + cd ogboot + ls -lha + template="etc/dhcp_boot.ipxe.tmpl" + + ipxe_output="/opt/opengnsys/tftpboot/ipxe_scripts/dhcp_boot.ipxe" + + # Reemplazar SERVERIP con la dirección IP en la plantilla y guardarla en el archivo de salida + sed "s/SERVERIP/$ip_address/g" "$template" > "$ipxe_output" + + echo "Archivo creado con éxito en $ipxe_output" + + template_default="etc/default.ipxe" + + default_output="/opt/opengnsys/tftpboot/ipxe_scripts/default.ipxe" + + sed "s/SERVERIP/$ip_address/g" "$template_default" > "$default_output" + echo "Creando ficheros MAC script" + ls -lh + for mac_address in $MAC_ADDRESSES; do + filename="01-${mac_address//:/-}" + echo "Creando archivo $filename..." + cp /ogboot/tftpboot/ipxe_scripts/default.ipxe /ogboot/tftpboot/ipxe_scripts/$filename + done + + + +} # Definir la función @@ -114,3 +146,12 @@ if [ $? -ne 0 ]; then echo "Error en el montaje NFS" exit 1 fi + +mount_NFS +if [ $? -ne 0 ]; then + echo "Error en el montaje NFS" + exit 1 +fi + + +generate_ipxe_script diff --git a/tftpboot/ipxe_scripts/01-00:50:56:22:11:11 b/tftpboot/ipxe_scripts/01-00:50:56:22:11:11 index 38d7dd0..8591b59 100644 --- a/tftpboot/ipxe_scripts/01-00:50:56:22:11:11 +++ b/tftpboot/ipxe_scripts/01-00:50:56:22:11:11 @@ -1,35 +1,12 @@ #!ipxe set timeout 0 set timeout-style hidden - set ISODIR ogLive set default 0 set kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788 -#kernel tftp://172.17.8.71/ogclient/ogvmlinuz ${kernelargs} -#route - -#echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net -#isset ${net} || set net 0 -#echo -n IP: && read net${net}/ip -#echo -n Subnet mask: && read net${net}/netmask -#echo -n Gateway: && read net${net}/gateway -#echo -n DNS: && read dns -#ifopen net0 -#route - -#echo Comprobando la conectividad con el servidor 172.17.8.71 -#ping 172.17.8.71 -#kernel http://172.17.8.71/ogclient/ogvmlinuz -#echo Verificando la conectividad con el servidor 172.17.8.71 -#imgfetch tftp://172.17.8.71/ogclient/testfile || goto fail -#imgfetch tftp://172.17.8.71/ogclient/ogvmlinuz || goto fail -#sleep 10 - # Si no existe el ogLive de ISODIR en la red, inicio ogLive por defecto -#kernel tftp://172.17.8.71/ogclient/ogvmlinuz ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=$ISODIR LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788 -time kernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs} - #sleep 10 -time initrd tftp://172.17.8.71/ogLive/oginitrd.img +kernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs} +initrd tftp://172.17.8.71/ogLive/oginitrd.img boot diff --git a/tftpboot/ipxe_scripts/01-00:50:56:22:11:12 b/tftpboot/ipxe_scripts/01-00:50:56:22:11:12 deleted file mode 100644 index d55a75d..0000000 --- a/tftpboot/ipxe_scripts/01-00:50:56:22:11:12 +++ /dev/null @@ -1,39 +0,0 @@ -#!ipxe -set timeout 0 -set timeout-style hidden - -set ISODIR ogLive -set default 0 -set kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788 - -#kernel tftp://172.17.8.71/ogclient/ogvmlinuz ${kernelargs} -echo "OgLive $ISODIR" -echo "-----------------------TEST------------------------------------" -#route - -#echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net -#isset ${net} || set net 0 -#echo -n IP: && read net${net}/ip -#echo -n Subnet mask: && read net${net}/netmask -#echo -n Gateway: && read net${net}/gateway -#echo -n DNS: && read dns -ifopen net0 -route - -#echo Comprobando la conectividad con el servidor 172.17.8.71 -#ping 172.17.8.71 -#kernel http://172.17.8.71/ogclient/ogvmlinuz -#echo Verificando la conectividad con el servidor 172.17.8.71 -#imgfetch tftp://172.17.8.71/ogclient/testfile || goto fail -#imgfetch tftp://172.17.8.71/ogclient/ogvmlinuz || goto fail -#sleep 10 - # Si no existe el ogLive de ISODIR en la red, inicio ogLive por defecto -#kernel tftp://172.17.8.71/ogclient/ogvmlinuz ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=$ISODIR LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788 -time kernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs} - #sleep 10 -time initrd tftp://172.17.8.71/ogLive/oginitrd.img - -sleep 10 - boot - - diff --git a/tftpboot/ipxe_scripts/default.ipxe b/tftpboot/ipxe_scripts/default.ipxe index d55a75d..af00c40 100644 --- a/tftpboot/ipxe_scripts/default.ipxe +++ b/tftpboot/ipxe_scripts/default.ipxe @@ -1,39 +1,14 @@ #!ipxe set timeout 0 set timeout-style hidden - set ISODIR ogLive set default 0 set kernelargs ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=${ISODIR} LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788 - -#kernel tftp://172.17.8.71/ogclient/ogvmlinuz ${kernelargs} echo "OgLive $ISODIR" -echo "-----------------------TEST------------------------------------" -#route - -#echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net -#isset ${net} || set net 0 -#echo -n IP: && read net${net}/ip -#echo -n Subnet mask: && read net${net}/netmask -#echo -n Gateway: && read net${net}/gateway -#echo -n DNS: && read dns ifopen net0 route - -#echo Comprobando la conectividad con el servidor 172.17.8.71 -#ping 172.17.8.71 -#kernel http://172.17.8.71/ogclient/ogvmlinuz -#echo Verificando la conectividad con el servidor 172.17.8.71 -#imgfetch tftp://172.17.8.71/ogclient/testfile || goto fail -#imgfetch tftp://172.17.8.71/ogclient/ogvmlinuz || goto fail -#sleep 10 - # Si no existe el ogLive de ISODIR en la red, inicio ogLive por defecto -#kernel tftp://172.17.8.71/ogclient/ogvmlinuz ro boot=oginit quiet splash irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogtmpfs=15 oglivedir=$ISODIR LANG=es_ES.UTF-8 ip=192.168.2.11:192.168.2.1:192.168.2.1:255.255.255.0:pc11:eth0:none group=Aula_virtual ogrepo=192.168.2.1 oglive=192.168.2.1 oglog=192.168.2.1 ogshare=192.168.2.1 ogprof=false vga=788 -time kernel tftp://172.17.8.71/ogLive/ogvmlinuz ${kernelargs} - #sleep 10 -time initrd tftp://172.17.8.71/ogLive/oginitrd.img - -sleep 10 - boot +kernel tftp://SERVERIP/ogLive/ogvmlinuz ${kernelargs} +initrd tftp://SERVERIP/ogLive/oginitrd.img +boot diff --git a/tftpboot/ipxe_scripts/dhcp_boot.ipxe b/tftpboot/ipxe_scripts/dhcp_boot.ipxe index 4f80174..be82b47 100644 --- a/tftpboot/ipxe_scripts/dhcp_boot.ipxe +++ b/tftpboot/ipxe_scripts/dhcp_boot.ipxe @@ -8,12 +8,7 @@ set configfile ${prefix}/01-${net0/mac} echo Config File: ${configfile} ifopen net0 route -#echo Comprobando la conectividad con el servidor 172.17.8.71 -#ping 172.17.8.71 -# -# Intentar cargar la configuración personalizada por MAC + sleep 5 chain ${configfile} || - -# Si no se encuentra la configuración personalizada, cargar la configuración por defecto chain $prefix/default.ipxe