diff options
author | Christian Segundo | 2024-07-25 02:12:22 +0200 |
---|---|---|
committer | Christian Segundo | 2024-07-28 12:58:19 +0200 |
commit | 15e3dedcee1d0830871ffc692143318a87646101 (patch) | |
tree | 3e15f8a3f5082b7df89d208a4c8189b8ad453998 /content/posts/2018-07-18-better-init.es.md | |
parent | a248abee10bbcda6282982d72788acf689deb7aa (diff) | |
download | check-caps-lock-15e3dedcee1d0830871ffc692143318a87646101.tar.gz |
wip
Diffstat (limited to 'content/posts/2018-07-18-better-init.es.md')
-rw-r--r-- | content/posts/2018-07-18-better-init.es.md | 128 |
1 files changed, 128 insertions, 0 deletions
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. + +<hr> + +# 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) |