David Thompson publica una imagen de Guix lista para subir a Linode
El desarrollador descarta el método del cookbook, que convertía una Debian en Guix, y deja una configuración que genera el disco ya preparado para arrancar
David Thompson ha publicado la configuración de Guix System con la que genera imágenes de disco listas para subir a Linode y arrancar sin más pasos. El cookbook oficial parte de una imagen Debian de Linode y la convierte a Guix; a Thompson, que dice venir del mundo devops, ese rodeo no le servía. Quería subir una imagen ya preparada, y ha dejado el código de su configuración en un repositorio público.
Qué hace la imagen al arrancar
La configuración parte de %base-services y toca varios puntos. El initrd carga virtio_scsi, necesario para ver los discos virtuales de Linode. Se monta /dev/sda como raíz ext4 y /dev/sdb como swap.
El redimensionado de la raíz necesitó un servicio propio. El resize-file-system-service de Guix hace suposiciones que no se cumplen en este entorno, así que escribió un shepherd service que llama a resize2fs de e2fsprogs en cada arranque para que el sistema de archivos ocupe todo el volumen asignado.
Añade también un servidor SSH sin autenticación por contraseña, solo con claves públicas, y un sudoers con NOPASSWD para el grupo wheel: sin eso, guix deploy no puede entrar después. En la misma línea, la configuración suma claves de firma al guix-service-type para aceptar el envío de elementos del store desde otras máquinas Guix. Al conjunto se suma nftables, que bloquea casi todo por defecto.
Para IPv6 hay un detalle que se les escapa a muchas recetas: dhcpcd se configura con slaac en "hwaddr" porque los servidores de Linode obtienen la dirección por SLAAC y el valor por defecto, "private", no funciona.
El arranque también se aparta de lo habitual. Guix lanza grub-install sobre el dispositivo de arranque, cosa que no funciona aquí; en su lugar, el instalador copia las fuentes y los módulos de GRUB al sistema de archivos raíz, igual que hace Guix con las imágenes de disco.
Del código a la imagen
Para generar el disco se usa guix system image con el tipo mbr-raw, que produce un formato compatible con Linode. Antes de subirlo hay que comprimirlo con gzip, y un script hace las dos cosas. El procedimiento está descrito en la receta del cookbook.
Thompson cuenta que se ha mudado de DigitalOcean a Linode, entre otras cosas por una donación de 3 millones de dólares a un proyecto de software libre que no comparte; es su opinión, no un dato técnico. Lo aprovechable es el resultado: quien quiera montar Guix en Linode ya no tiene que partir de una distribución ajena ni reconstruir a mano el redimensionado del volumen, el arranque o el acceso para guix deploy.


