Usando un initrd comprimido al arrancar pxe

Usando un initrd comprimido al arrancar pxe

Estoy usando netboot/pxeboot con grub.

menuentry "Install Ubuntu 20.04" {
  set gfxpayload=keep
  echo 'Loading vmlinuz ...'
  linux  /tftp/vmlinuz ip=dhcp netboot=nfs nfsroot=10.0.0.20:/data/netboot/nfs/ubuntu2004/ boot=casper toram noquiet splash=off console=tty0 console=ttyS1,57600n8 ---
  echo 'Loading initrd, this takes a long time ...'
  initrd /tftp/initrd
}

Funciona bien, sin embargo, la carga de initrd a través de tftp lleva mucho tiempo (más de 30 minutos). Me gustaría comprimir (gz/bz2) este archivo para ahorrar tiempo de transferencia.

Había visto algunos ejemplos que se referían a initrd.gz(Un ejemplo:https://unix.stackexchange.com/questions/217002/what-iso-file-vmlinuz-and-initrd-gz-to-use-for-installing-centos-from-multiboo) pero cuando intenté comprimir el archivo con gzip y usarlo, aparece un error como:

[   12.543547] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
[   12.558487] Please append a correct "root=" boot option; here are the available partitions:
[   12.575161] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

¿Hay alguna manera de comprimir este archivo para que pueda transferir un tamaño de archivo más pequeño y descomprimirlo antes de intentar montar el archivo raíz fs?

Alternativamente, ¿hay alguna manera de transferirlo a través de un protocolo diferente (HTTP/FTP/SFTP/SCP/etc)?

Respuesta1

Un initrd es una estructura CPIO comprimida creada a partir de una estructura de árbol de archivos con un comando como:

find . | cpio -o -c -R root:root | gzip -9 > /boot/new.img

El ubuntu-20.04-desktop-amd64initrd ya está comprimido y pesa alrededor de 87 MB. La transferencia TFTP de ese archivo debería durar unos 36 segundos.

[04/05 08:17:46.445] TFTP Inf: <\NWA_PXE\ubuntu-20.04-desktop-amd64\casper\initrd>: sent blks=63901 blkSz=1408, Total 89971296 bytes in 36s, err recovery=0 

Si su transferencia TFTP demora media hora, tiene un problema diferente en la configuración de su red TFTP. Una captura de tráfico de Wireshark puede ayudarle a identificar su problema.

Respuesta2

La respuesta de @Pat se acepta y es más detallada; sin embargo, aquí están las respuestas directas a las preguntas originales:

¿Hay alguna manera de comprimir este archivo para que pueda transferir un tamaño de archivo más pequeño y descomprimirlo antes de intentar montar el archivo raíz fs?

No, ya está comprimido. La respuesta aceptada da un ejemplo de esto.

Alternativamente, ¿hay alguna manera de transferirlo a través de un protocolo diferente (HTTP/FTP/SFTP/SCP/etc)?

No con PXE normal. Utilice otro sistema de arranque de red, como iPXE, que permita http/nfs

información relacionada