==== 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 [[:red:arranque_por_red|servidor de arranque por red]] funcional (que tengas iPXE funcionando cada vez que arrancas, por lo menos).
También necesitarás un servidor con gran almacenamiento que esté dispuesto a servir archivos todo el rato. En mi caso cuento con Icarus. (esto es un SAN, no un NAS, vamos a servir almacenamiento sin sistema de archivos. Para mas información busque en Wikipedia)
===== 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 [[:freebsd: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
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 -
-:- 492K - - -
ada0p3 0:99 2.0G freebsd-swap gpt/freebsd-swap SWAP
ada0p4 0:100 464G freebsd-zfs gpt/freebsd-zfs
-:- 4.0K - - -
da0 1:212 50G GPT - -
-:- 1.0M - - -
da0p2 1:214 2.8G efi gpt/efi -
da0p1 1:213 47G linux-data gpt/linux-data -
-:- 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
{{:smile.png?200|}}
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.