From 15e3dedcee1d0830871ffc692143318a87646101 Mon Sep 17 00:00:00 2001
From: Christian Segundo
Date: Thu, 25 Jul 2024 02:12:22 +0200
Subject: wip
---
content/posts/2018-07-18-better-init.es.md | 128 +++++++++++++++++++++++++++++
1 file changed, 128 insertions(+)
create mode 100644 content/posts/2018-07-18-better-init.es.md
(limited to 'content/posts/2018-07-18-better-init.es.md')
diff --git a/content/posts/2018-07-18-better-init.es.md b/content/posts/2018-07-18-better-init.es.md
new file mode 100644
index 0000000..62d3e44
--- /dev/null
+++ b/content/posts/2018-07-18-better-init.es.md
@@ -0,0 +1,128 @@
+---
+layout: post
+title: better-initramfs (Dropbear + LVM + LUKS) setup
+category: GNU/Linux
+showToc: true
+TocOpen: true
+tags:
+ - initramfs
+ - linux
+ - dropbear
+ - lvm
+ - luks
+---
+
+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
+
+```
+cd /opt
+git clone https://bitbucket.org/piotrkarbowski/better-initramfs.git
+```
+
+La compilación la hace en un chroot por lo que hace falta hacerlo como root!
+
+```
+cd better-initramfs
+bootstrap/bootstrap-all
+make prepare
+```
+
+## Shell remota (Opcional)
+
+Antes de crear la imagen tenemos que añadir las claves públicas que tendrán
+acceso.
+
+```
+cp /rutal/a/.ssh/authorized_keys /opt/better-initramfs/sourceroot
+```
+
+# Crear e instalar la imagen
+
+```
+make image
+cp /opt/better-initramfs/output/initramfs.cpio.gz /boot
+```
+
+# Entrada de GRUB
+
+better-initramfs es muy flexible y soporta muchísimas configuraciones, en la
+[página oficial](https://bitbucket.org/piotrkarbowski/better-initramfs#rst-header-parameters)
+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í:
+
+```
+#!/bin/sh exec tail -n +3 $0
+
+# This file provides an easy way to add custom menu entries. Simply type the
+
+# menu entries you want to add after this comment. Be careful not to change
+
+# the 'exec tail' line above.
+
+menuentry 'Gentoo Linux 4.17.7 (better-init)' --class gentoo --class gnu-linux
+--class gnu --class os { load_video insmod gzio insmod part_msdos insmod fat set
+root='hd2,msdos1' search --no-floppy --fs-uuid --set=root 2ACF-01EF echo
+'Loading Linux 4.17.7 ...' linux /vmlinuz-4.17.7-gentoo \
+ root=/dev/mapper/vg1-root ro lvm luks sshd\
+ binit_net_if=eth3 binit_net_addr=10.0.0.242/24\
+ binit_net_gw=10.0.0.1\
+ enc_root=UUID=ca098a60-f942-43be-9138-bcb06922211f\
+ rootfstype=ext4 echo 'Loading initial ramdisk ...' initrd /initramfs.cpio.gz }
+```
+
+_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`.
+
+```
+mount /boot
+grub-mkconfig -o /boot/grub/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`.
+
+```
+mv /etc/grub.d/40_custom /etc/grub.d/05_better-initramfs
+grub-mkconfig -o /boot/grub/grub.cfg
+```
+
+---
+
+**Fuentes**:
+
+- [better-initramfs](https://bitbucket.org/piotrkarbowski/better-initramfs#rst-header-build-from-source)
--
cgit v1.2.3