better-initramfs (Dropbear + LVM + LUKS) setup
Desde hace años que uso better-initramfs en todos los sistemas que necesiten un initramfs y es que como su nombre anuncia, es mejor que todas las alternativas IMO (mkinit, genkernel, dracut…etc). Es rápido, tiene soporte para lvm, luks, dropbear! y encima es totalmente independiente del kernel!, una vez ‘compilado’ te puedes olvidar (cuidado con los 0days de Dropbear)… todo ventajas. Esta es mi configuración para un servidor con LVM on LUKS en un SSD.
Instalación desde git
La compilación la hace en un chroot por lo que hace falta hacerlo como root!
Shell remota (Opcional)
Antes de crear la imagen tenemos que añadir las claves públicas que tendrán acceso.
Crear e instalar la imagen
Entrada de GRUB
better-initramfs es muy flexible y soporta muchísimas configuraciones, en la página oficial están explicadas al detalle todas las opciones. Es importante consultar la documentación oficial pues algunos parámetros pueden cambiar con el tiempo o dejar de existir (eg luks_trim
ya no existe).
Editamos el fichero /etc/grub.d/40_custom
y añadimos una nueva entrada, en mi caso queda así:
La mayoria de líneas se pueden copiar descaradamente de las entradas que genera GRUB automáticamente!
Básicamente las únicas dos líneas en las que estamos interesados son la del kernel (linux ...
), a la que se le pasan todos los parámetros y el initrd que debe apuntar a la imagen creada anteriormente (aparte del título, los echo
y demás pijadas).
root=
: partición con la raiz (/
).
lvm
: escanea los discos en busca de volúmenes.
enc_root=UUID=...
: especifica el UUID de la partición cifrada.
luks
: indica que queremos hacer luksOpen
en enc_root
.
ro
: monta la raiz en read-only.
binit_net_if
binit_net_addr
binit_net_gw
: interfaz, dirección y gateway que queremos usar.
sshd
: ejecutar el servidor ssh para poder introducir la clave de forma remota.
rootfstype
: el formato de la partición raíz.
Montamos /boot
si está en otra partición y regeneramos el grub.cfg
.
Cambiar el orden de las entradas de GRUB (Opcional)
El número delante de los ficheros en /etc/grub.d
especifica el orden en el que son procesados, para que la entrada personalizada sea seleccionada por defecto, basta con mover el fichero 40_custom
editado anteriormente y regenerar grub.cfg
.