# ogLive

**ogLive** es el sistema operativo ligero que se ejecuta temporalmente en los clientes gestionados por OpenGnsys. Se encarga de ejecutar las órdenes enviadas desde la consola web, como la creación de imágenes, el despliegue de sistemas operativos o la ejecución de comandos remotos.

ogLive está basado en Linux y se distribuye en formato ISO. Su gestión completa (descarga, instalación, selección por defecto, cacheado, etc.) se realiza desde el componente **ogboot**, por lo que en esta sección nos centraremos únicamente en el comportamiento de ogLive una vez que ha arrancado en el cliente.

---

## ¿Qué ocurre al arrancar ogLive?

Cuando un cliente se inicia en modo PXE, se le envía:

- El núcleo (`ogvmlinuz`) con los parámetros de arranque necesarios obtenidos desde la plantilla PXE asignada
- El initrd (`oginitrd.img`)

Estos archivos son montados en memoria, iniciando un entorno de Linux desde el que se puede interactuar con la consola web de OpenGnsys.

> **Nota:**  
> La máquina cliente debe tener al menos 1.5 GB de RAM para que ogLive funcione correctamente.

Una vez operativo, el cliente carga y renderiza automáticamente una interfaz gráfica accesible por web (**ogBrowser**), que permite visualizar el estado del sistema, ver las particiones detectadas y recibir comandos directamente desde el servidor central.

---

## Interfaz del cliente ogLive

La interfaz gráfica que se presenta tras el arranque muestra las particiones del sistema, indicando:

- **Número de disco y partición**
- **Tamaño de la partición**
- **Tipo de sistema de archivos** (FAT32, NTFS, EXT4, CACHE, etc.)
- **Sistema operativo detectado**, si lo hay
- **Acciones disponibles**, como arrancar un sistema instalado

Además, ofrece botones para reiniciar o apagar el cliente, así como un terminal inferior (modo técnico) para interacción directa.

---

## Asignación del menú ogLive

El contenido de la interfaz web que se muestra al arrancar ogLive puede personalizarse desde la consola web de OpenGnsys. Para ello:

1. Accede a la sección **Clientes** y edita el cliente deseado.
2. En el formulario de edición, localiza el campo **Menú**.
3. Selecciona uno de los menús disponibles.
4. Guarda los cambios.

Este menú determina qué archivos HTML o interfaces se cargan en el navegador del cliente cuando se ejecuta ogLive.

---

## Arquitectura y dependencias

El correcto funcionamiento de ogLive requiere:

- Haber configurado previamente un ogLive válido desde **ogboot**
- Que el cliente tenga acceso a los archivos de arranque por **TFTP/HTTP**
- Que el navegador embebido (**ogBrowser**) se comunique correctamente con el servidor web de OpenGnsys

El sistema utiliza **Qt6** sobre **Sway** como entorno gráfico, y se ejecuta en memoria para evitar alteraciones en el disco del cliente.

---

## Notas adicionales

- Se recomienda que el ogLive cargado por defecto esté cacheado en el cliente si se van a realizar operaciones intensivas, para reducir tráfico de red.
- El arranque de ogLive puede automatizarse mediante plantillas PXE personalizadas.
- Si el menú seleccionado en el cliente apunta a una URL no válida o inaccesible, la interfaz gráfica no se mostrará correctamente.

---

## Gestión de menús de inicio personalizados

OpenGnsys permite definir menús personalizados que serán renderizados en el cliente al arrancar mediante el navegador embebido ogbrowser. Estos menús se utilizan como interfaz de instalación para el usuario, ofreciendo opciones como "Instalar Windows", "Instalar GNU/Linux" o "Apagar el equipo". La personalización de estos menús permite adaptar la experiencia de arranque a distintos grupos de ordenadores, aulas, o necesidades específicas de despliegue.

Cada menú creado dispone de una URL pública única, la cual será asignada a los clientes desde la interfaz de administración. Esta URL es accedida automáticamente por ogbrowser tras el arranque del sistema ogLive.


### Crear un nuevo menú

Para dar de alta un nuevo menú personalizado, accede al módulo lateral **Menús** y pulsa sobre el botón **Añadir menú** situado en la parte superior derecha. Se abrirá un formulario como se muestra en la imagen:

![oggui-oglive-menu-add.png](oggui-oglive-menu-add.png)

**Los campos requeridos son:**

- **Nombre del menú:** identificador único que se usará tanto en la lista de menús como en la URL pública.
- **Resolución:** resolución base del menú para su diseño. Debe coincidir con la resolución del cliente o de la mayoría de los equipos destino (por ejemplo, 1920x1080).
- **Comentarios (opcional):** anotaciones internas sobre el propósito del menú.
- **Menú por defecto:** si se marca esta casilla, el menú quedará asignado como predeterminado para todos los clientes que no tengan uno asignado explícitamente.

Una vez completado el formulario, pulsa en **Guardar**. El menú quedará registrado y aparecerá en la tabla principal de menús.

---

### Consultar y editar un menú existente

En la tabla de menús creados, puedes ver información relevante de cada menú:

- **Nombre del menú**
- **URL pública:** dirección web completa a la que apuntará ogbrowser al arrancar (por ejemplo, `https://127.0.0.1:8443/menu/main`)
- **Estado por defecto:** si es el menú predeterminado
- **Resolución**
- **Fecha de creación**
- **Acciones disponibles:** editar o eliminar

Al pulsar sobre el botón de edición, se accede a un panel que muestra una vista previa en tiempo real del menú renderizado. Este renderizado es el que se presentará en el cliente a través del navegador ogbrowser.

![oggui-oglive-menu.png](oggui-oglive-menu.png)

En esta vista puedes:

- Modificar el nombre, resolución y comentarios del menú.
- Visualizar en tiempo real el resultado HTML del menú.
- Marcarlo como predeterminado.
- Guardar los cambios realizados.

![oggui-oglive-menu-edit.png](oggui-oglive-menu-edit.png)
