¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Arranque de Debian por iSCSI
De las mayores fumadas que se pueden hacer en esta bella arte, es el hecho de arrancar una máquina, virtual o no, mediante iSCSI, es decir, cargar un sistema operativo que está instalado en una ubicación remota. Permitiendo arrancar y usar ordenadores sin un disco duro instalado, o un sistema operativo “live” (aunque es persistente) de respuesto, cuando se te joda el principal
Otra razón para hacer esto es que tengo FreeBSD en mi escritorio pero a veces necesitaré Linux digo yo, y como no voy a tocar mi instalación de freebsd, lo tengo instalado por iSCSI.
Es un requisito que tengas un servidor de arranque por red funcional (que tengas iPXE funcionando cada vez que arrancas, por lo menos).
Introducción
Por como funciona iSCSI (cosa que obviaré) necesitaremos un archivo de bloques. De estos que crearías con qemu-img
. Pero nosotros usaremos zfs porque somos muy guays
Creación del target iSCSI
Crearemos un llamado “zvol”, que no es nada mas que un archivo de bloques gestionado por zfs:
zfs create -V 50G stranger/iscsi/debian1
Esto creará un archivo en /dev/zvol/stranger/iscsi/debian1, que es el archivo que exportaremos por iSCSI
Creación del iniciador iSCSI
En FreeBSD esto es mas o menos sencillo, en Linux no lo he probado. Pero no debería ser demasiado difícil usando open iscsi
- /etc/ctl.conf
portal-group example2 { discovery-auth-group no-authentication listen 0.0.0.0 } target iqn.2025-03.net.suragu:target0 { alias "Testing target" auth-group no-authentication portal-group example2 lun 0 { path /dev/zvol/stranger/iscsi/debian1 blocksize 4096 size 100G } }
Si no habias usado ctl antes, lo habilitas con service ctld enable
y lo inicias con service ctld start
Esto inicia el volumen para que un cliente pueda iniciarlo, en FreeBSD se hace de la siguiente manera y en Linux tampoco es tan dificil, open-iscsi está bien como os digo.
doas iscsictl -A -p 192.168.1.230 -t iqn.2025-03.net.suragu:target0
Donde -A es para crear una sesión, -p es la dirección del servidor iSCSI y -t es el target
Podemos comprobar que ha funcionado, pues ahora tenemos un nuevo dispositivo SCSI (nótese como es da0 en lugar de ada8, que sería ATA) (también tenía ya un sistema de ficheros creado aquí, por eso tiene particiones creadas)
~ [qmdx] % lsblk DEVICE MAJ:MIN SIZE TYPE LABEL MOUNT ada0 0:96 466G GPT - - ada0p1 0:97 260M efi gpt/efiboot0 /boot/efi ada0p2 0:98 512K freebsd-boot gpt/gptboot0 - <FREE> -:- 492K - - - ada0p3 0:99 2.0G freebsd-swap gpt/freebsd-swap SWAP ada0p4 0:100 464G freebsd-zfs gpt/freebsd-zfs <ZFS> <FREE> -:- 4.0K - - - da0 1:212 50G GPT - - <FREE> -:- 1.0M - - - da0p2 1:214 2.8G efi gpt/efi - da0p1 1:213 47G linux-data gpt/linux-data - <FREE> -:- 1.0M - - -
Cuando hayamos acabado de usar el disco iSCSI, acabamos la sesión con el mismo comando pero con -R en lugar de -A:
doas iscsictl -R -p 192.168.1.230 -t iqn.2025-03.net.suragu:target0
Instalación de un sistema operativo
Decide sabiamente.
Instalas Debian normalmente y en la parte de configuración de disco, verás la parte de “buscar dispositivos iSCSI”, sigue los pasos de ahí e instala debian normalmente. Te aseguro que funciona
(como veis, aquí me falta por escribir. Detallaré mas los pasos. Lo juro)
Arranque de Debian por iPXE
Tras haber instalado Debian en la target iSCSI, habrá instalado GRUB y toda la fumada. Debería simplemente funcionar. No me preguntéis como funciona. Pero funciona
Podéis intentar a arrancar el sistema operativo recién instalado con el siguiente comando en la shell de iPXE (cambiar vuestra target por como la tengáis vosotros)
En sistemas BIOS, debería funcionar haciendo esto:
sanboot iscsi:192.168.1.230::::iqn.2025-03.net.suragu:target0
En sistemas UEFI, tienes que especificar el fichero EFI a cargar (en este caso, el loader de GRUB)
sanboot --filename \EFI\debian\grubx64.efi iscsi:192.168.1.230::::iqn.2025-03.net.suragu:target0
Y debería arrancar el GRUB y el sistema operativo. Debian ha configurado bien el open iSCSI así que debería iniciar simplemente.
¡Felicidades! tienes un sistema operativo instalado en un sitio que no existe pero puedes usarlo normalmente y hacer todas tus tareas. Incluso jugar jugueteos. Increíble
Eso si, si vas a hacer carga profunda, será mejor que tu red sea de 10GBits en vez de un 1Gbit como lo suele ser. A pagar.