esto es la suraguwiki el contenido, como puedes ver, deja mucho que desear para comentarios sobre los cosos aquí, puedes mandar un correo a diego arroba suragu punto net

Si eres un putísimo crack y quieres contribuir a esta wiki, pídeme una cuenta en el mismo correo de arriba

¡Esta es una revisión vieja del documento!


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 100G stranger/iscsi/debian1

Esto creará un archivo en /dev/zvol/stranger/iscsi/debian1, que es el archivo que exportaremos por iSCSI con 100GiBs de tamaño

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

Tendréis que haceros la pregunta de ¿en que máquinas voy a usar este Debian remoto? para así decidir si vais a instalar el arranque para BIOS o UEFI.

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.


QR Code
QR Code red_arranque_iscsi (generated for current page)