Parametrise iso_file_name and document it

This commit is contained in:
Sergio Giménez Antón 2025-02-15 12:44:54 +01:00
parent ef17701a68
commit 0c2d669bb5
2 changed files with 76 additions and 8 deletions

View file

@ -22,7 +22,13 @@ install_dependencies:
boot_iso:
sudo qemu-system-x86_64 \
-enable-kvm -m 2G -vga qxl -netdev user,id=wan -device virtio-net,netdev=wan,id=nic1 \
-drive format=raw,file=iso/workbench_production.iso,cache=none,if=virtio
-drive format=raw,file=$(ISO_FILE),cache=none,if=virtio
boot_iso_from_usb:
sudo qemu-system-x86_64 \
-enable-kvm -m 2G -vga qxl -netdev user,id=wan -device virtio-net,netdev=wan,id=nic1 \
-drive format=raw,file=$(USB_DEVICE),cache=none,if=virtio
# src https://www.ubuntubuzz.com/2021/04/how-to-boot-uefi-on-qemu.html
# needs `sudo apt-get install ovmf`
@ -30,18 +36,16 @@ boot_iso_uefi:
sudo qemu-system-x86_64 \
-bios /usr/share/ovmf/OVMF.fd \
-enable-kvm -m 2G -vga qxl -netdev user,id=wan -device virtio-net,netdev=wan,id=nic1 \
-drive format=raw,file=deploy/iso/WORKBENCH_debug.iso,cache=none,if=virtio
-drive format=raw,file=$(ISO_FILE),cache=none,if=virtio
boot_iso_uefi_secureboot:
# For ovmf 2020.08-1, the change of boot order is usually necessary because the UEFI shell has the highest boot priority in OVMF_VARS*.ms.fd.
sudo cp /usr/share/OVMF/OVMF_VARS_4M.ms.fd /tmp/efivars_4M.fd
# src https://wiki.debian.org/SecureBoot/VirtualMachine
sudo qemu-system-x86_64 \
-machine q35,smm=on -global driver=cfi.pflash01,property=secure,value=on \
-drive if=pflash,format=raw,unit=0,file=/usr/share/OVMF/OVMF_CODE_4M.secboot.fd,readonly=on \
-drive if=pflash,format=raw,unit=1,file=/tmp/efivars_4M.fd \
-enable-kvm -m 2G -vga qxl -netdev user,id=wan -device virtio-net,netdev=wan,id=nic1 \
-drive file=deploy/iso/workbench_debug.iso,cache=none,if=virtio,format=raw,index=0,media=disk \
-drive file=$(ISO_FILE),cache=none,if=virtio,format=raw,index=0,media=disk \
-boot menu=on
# when you change something, you need to refresh it this way

View file

@ -40,8 +40,72 @@ Se puede especificar un fichero de configuración con el argumento `--config`, y
workbench-script trata de ser simple y minimalista, una función principal y funciones de soporte la lectura de las diferentes funcionalidades.
## Generar ISO para el USB
## Generar una ISO para el USB
Para generar la iso y preparar un usb que arranque con workbench necesitas generarte una workbench de este, con tu configuración específica
Para crear una imagen ISO y preparar un USB que arranque con Workbench, primero debes generar una versión personalizada de Workbench con tu configuración específica. Como mínimo, necesitas un archivo `settings.ini` que contenga la URL de tu instancia de DeviceHub y el token de acceso.
Existen dos métodos para generar la ISO:
### 1. Usando Docker (Método recomendado)
Este método es el más sencillo y compatible con cualquier sistema operativo (incluyendo Windows y macOS). Solo necesitas tener Docker instalado en tu máquina.
Una vez instalado Docker, ejecuta el siguiente comando en la terminal:
```bash
docker compose up
```
Este comando creará un contenedor de Docker con el script de Workbench y generará una ISO que incluirá tanto el script como el archivo `settings.ini` de tu directorio. La ISO resultante se guardará en:
```bash
iso/workbench_debug.iso
```
### 2. Generando la ISO directamente en tu máquina
Si prefieres generar la ISO sin Docker, puedes hacerlo manualmente ejecutando el script `deploy-workbench.sh`. Para ello, primero debes instalar las dependencias necesarias con el siguiente script:
```bash
install-dependencies.sh
```
Luego, ejecuta:
```bash
deploy-workbench.sh
```
Este proceso generará la ISO en el directorio `iso/workbench_debug.iso`.
> [!NOTE]
> Se ha detectado que `deploy-workbench.sh` no funciona correctamente en distribuciones basadas en Ubuntu 24.04.
## Testear la ISO Generada (Solo para linux)
Para testear la ISO Generada, se proveé un Makefile. Este Makefile proporciona comandos para desplegar el sistema Workbench, gestionar dependencias y arrancar imágenes ISO con QEMU.
Antes de usar el `Makefile`, instala las dependencias necesarias:
```bash
make install_dependencies
```
### Arranque de Imágenes ISO
```bash
make boot_iso ISO_FILE=iso/workbench_production.iso
```
O bien:
```bash
make boot_iso ISO_FILE=iso/workbench_debug.iso
```
También es posible arrancar desde un live USB:
```bash
make boot_iso_from_usb USB_DEVICE=/dev/sda
```
Ejecuta `./deploy-workbench.sh`