Instalar Arch GNU/Linux con LVM sobre LUKS sobre RAID

Buenas

Lo prometido es deuda. Hace algún tiempo, mas del que me gustaría dije que escribiría un articulo sobre como instalar Arch GNU/Linux con un sistema de particiones lógicas mediante volúmenes lógicos LVM, cifrados con dm-crypt y LUKS, sobre discos duros con particiones RAID1 por software.

Esquema de particionado LVM on LUKS on RAID
Esquema de particionado LVM on LUKS on RAID

Básicamente lo que vamos a hacer es lo que se muestra en la imagen. Sobre los discos físicos crearemos unas particiones de tipo linux-raid, y montaremos unos dispositivos virtuales RAID1 por software. Estos dispositivos RAID, los cifraremos con dm-crypt y LUKS, y dentro de los volúmenes cifrados, crearemos un sistema LVM donde crearemos los volúmenes lógicos necesarios para todas nuestras particiones.

Así a bote pronto, todo esto puede parecer muy complicado, pero una vez que lo hagáis veréis que realmente es muy sencillo.

Asumiré que todos sabéis bajaros la ISO de Arch Linux desde la pagina oficial, grabarla en un CD o USB y arrancar vuestro PC desde ella. Y por supuesto, que habéis echo una copia de seguridad de todo aquello que no queréis perder.

Una vez arrancado el sistema Live de Arch Linux, comenzamos a tirar comandos.

Configurar entorno de instalacion

Los primeros pasos son para configurar el entorno de instalación.

Lo que hacemos con estos comandos es cargar la disposición del teclado en español, poner una fuente que se vea algo mejor, escoger las locales que nos interesa usar, por ejemplo: gl_ES.UTF-8, es_ES.UTF-8 y en_GB.UTF-8. Generamos las locales seleccionadas y exportamos en la variable de sistema LANG la que queramos por defecto. Por ultimo comprobamos que tenemos conexión.

Particionado

Y entramos en faena. Para este ejemplo voy a asumir que tenemos cuatro discos, dos de 500GB y dos de 1TB, y que nuestro ordenador tiene firmware BIOS, no UEFI.

Para las particiones vamos a usar el sistema de particonado GPT en lugar del ya prácticamente obsoleto msdos. E instalaremos el gestor de arranque Grub.

Por ello, lanzamos el programa cgdisk indicándole sobre que disco queremos trabajar.

Se nos mostrara una pantalla similar a esta:

Moviendo de arriba a abajo podemos seleccionar entre los diferentes espacios en el disco, en este momento solo uno de 500GB libres. Moviendo de izquierda a derecha escogeremos entre las opciones del menú inferior.

Pulsamos New.
Se nos pregunta el sector inicial de la nueva partición. Dejamos el sugerido.
Se nos pregunta el tamaño de la partición. Indicamos +1M.
Se nos pregunta el tipo de partición que va a ser. Con L podemos ver los diferentes tipos. Indicamos ef02 (biosgrub).

Esta primera partición (sda1) de 1MB es necesaria precisamente porque estamos usando GPT con GRUB en firmware BIOS. Realmente no estoy al 100% seguro de si es necesaria, porque veréis que cgdisk ya deja 1007KB libres al principio del disco, pero por si acaso, la creamos.

Nos movemos al espacio libre al final del disco y repetimos el proceso creando dos particiones mas. Aceptamos el sector inicial sugerido para cada una, la primera de tamaño +1G (sda2), la segunda de tamaño +476472M (sda3), ambas de tipo fd00 (linuxraid).

Veréis que al final del disco siguen quedando unos 100MB libres, aproximadamente. Y os preguntareis porque puse ese tamaño tan raro en lugar de aceptar la sugerencia del programa y coger todo el espacio libre que quedaba.

No todos los discos ocupan lo mismo, y si particionaramos hasta el final del disco, cuando montemos los discos en RAID no estamos 100% seguros de que las particiones tengan exactamente el mismo tamaño. Al dejar el final del disco libre, nuestras particiones serán iguales independientemente de si uno de los discos es unos pocos Megas mas grande que el otro.

Con este esquema de particionado creado, escogemos la opción de Write, y los cambios se graban al disco. Ahora podríamos hacer lo mismo con el disco /dev/sdb, pero es mucho mas cómodo, copiar el esquema de particionado de un disco a otro, por lo que ejecutamos:

Con el segundo comando nos aseguramos de que regenere los UUIDS del segundo disco para que no sean los mismos del primero.

Repetimos el proceso para el disco /dev/sdc y creamos un esquema de particionado de una sola partición de todo el espacio libre menos 100MB al final, sin necesidad de dejar la partición de 1MB al principio, de tipo fd00 (linuxraid) (sdc1). Copiamos este esquema de particionado al disco /dev/sdd.

RAID

Ya con los cuatro discos particionados, vamos a crear los dispositivos RAID.

Los dispositivos RAID de tipo 1, como el que vamos a crear, son dos discos, o mas, en paralelo, sobre los que se escribe a la vez. Por lo que si en uno se producen errores físicos y hay que tirarlo, no perdemos los datos ya que están en el otro. Al remplazar el disco averiado, el otro disco se sincronizara con el nuevo. Con esto evitaremos en buena cantidad de riesgo para nuestros discos.

Ejecutamos:

Con esto le estamos indicando que nos cree un dispositivo RAID de tipo 1, de 2 discos, con nombre md0 formado por las particiones sda2 y sdb2.

Repetimos el proceso con las parejas sda3 y sdb3, y sdc1 y sdd1 con los nombres md1 y md2.

Una vez creados los dispositivos, no debemos continuar, pues aunque estén vacíos, deben sincronizarse entre ellos, y esto puede llevarles un rato largo. Para ver el estado de sincronización ejecutamos:

Cuando la sincronización haya finalizado, podemos ver la información de los dispositivos raid con el comando:

Cifrado dm-crypt LUKS

Ahora que tenemos tres dispositivos virtuales RAID1, vamos a cifrar dos de ellos. El md0 (originalmente sda2), donde alojaremos la partición /boot, no puede estar cifrada, ya que GRUB no sabría que hacer con ella.

Ejecutamos los comandos:

Con esto crearemos un cifrado de tipo aes-xts-plain64, con una llave de 512bits, en formato LUKS.

Una vez creado el cifrado, debemos abrirlo para que nos permita utilizar los dispositivos. Para esto ejecutamos:

Con este comando indicamos que nos abra para utilización dos dispositivos de tipo luks, con los nombres md1-crypt y md2-crypt. Podéis ponerle los nombres que queráis.

Volúmenes lógicos LVM

Ahora que tenemos nuestros dispositivos RAID cifrados y disponibles para su uso, dentro de ellos vamos a montar un sistema LVM para gestionar volúmenes lógicos, que vendrían a ser similares a las particiones, pero sin algunas restricciones de las mismas. Por ejemplo podríamos crear un volumen lógico, que se expanda en dos discos a la vez, algo que no podemos hacer con una partición tradicional.

Otra de las ventajas de los sistemas LVM es que no es necesario que el espacio de un mismo volumen esta a continuación en el disco. En un sistema tradicional de particiones, si creamos tres particiones: sda1, sda2, sda3, y en un determinado momento borramos sd3, o directamente queda espacio libre después de esta, no podríamos indicarle a sda1 que se extienda ocupando ese espacio, ya que están las otras particiones en el medio. Con LVM no tenemos este problema.

Al tener los dispositivos cifrados, esto nos limita a que nuestros grupos de volúmenes LVM solo comprendan un único dispositivo cifrado. Es por esto que en nuestro caso debemos de crear dos.

El primer paso es indicar cuales de las particiones de nuestros discos se podrán utilizar para el sistema LVM, y para ello crearemos un volumen
físico para cada uno de nuestros dispositivos RAID1 cifrados.

A continuación creamos los grupos de volúmenes.

Y por ultimo, creamos los volúmenes lógicos dentro de nuestros grupos.

Podemos crear tantos volúmenes lógicos como queramos, e incluso no utilizar todo el espacio libre para poder ampliar en un futuro alguno de los existentes, siempre que permanezcamos dentro del dispositivo cifrado. Es recomendable, aunque no obligatorio, crear un volumen lógico en cada disco físico que se este usando.

Podemos ver la información sobre nuestro sistema LVM con los comandos:

Sistema de ficheros

Ahora que ya tenemos nuestro esquema de particiones completo, con dispositivos RAID cifrados y el sistema LVM dentro, nos toca crear los sistemas de ficheros, montar las particiones e instalar Arch GNU/Linux propiamente.

Instalar y configurar Arch GNU/Linux

Una vez montadas nuestras unidades en su sitio, instalamos el sistema base de Arch.

Realizamos las primeras configuraciones de nuestro nuevo sistema

Con estos comandos rellenamos un par de archivos, el primero para que nuestro sistema conozca los dispositivos RAID, y el segundo para que conozca como debe montar los volúmenes lógicos y particiones para formar el sistema de ficheros de nuestra instalación.

Ejecutamos el siguiente comando para averiguar el UUID de nuestros dispositivos raid.

Obtendremos un resultado similar a este. Apuntamos aparte los UUIDs de md1 y md2.

Hacemos chroot a nuestro nuevo sistema con el comando:

Configuramos el nuevo sistema

Esto es prácticamente lo mismo que hicimos anteriormente para configurar el entorno de instalación, pero para nuestro sistema.

Añadimos el nombre de nuestro equipo

Escogemos nuestro uso horario

Configuramos el reloj indicando que esta en UTC

Añadimos de nuevo el nombre de nuestro host como alias de la IP 127.0.0.1

Definimos una clave para el usuario root

Inicializamos las llaves de verificación de pacman

Añadimos la opción ILoveCandy que le da un mejor aspecto a las barras de progreso de pacman, descomentamos el repositorio multilib si nuestro procesador es, o soporta, arquitectura de 64bits y estamos instalando en esa arquitectura. Y añadimos opcionalmente el repositorio de Arch GNU/Linux Francia para poder disponer de yaourt, que nos permitira instalar comodamente paquetes del repositorio AUR, sin tener que compilarlo desde AUR.

Añadimos en la linea de HOOKS los ganchos de encrypt y lvm2, para disponer de soporte de cifrado y LVM en el kernel, y cambiamos el gancho de keyboard para que se inicie antes del de cifrado, y podamos meter la clave para abrir las unidades al inicio.

Generamos de nuevo las imagenes del kernel con los cambios introducidos.

Añadimos una entrada por cada dispositivo cifrado, para que el sistema sepa que nos debe pedir la clave de ese dispositivo al inicio.

Gestor de arranque GRUB

Ahora nos toca configurar el gestor de arranque, dado que al tener los dispositivos RAID cifrados, GRUB no sabe donde se encuentra nuestra particion de /.

Ejecutamos a continuación:

Buscamos la linea GRUB_CMDLINE_LINUX_DEFAULT y le añadimos los parametros cryptdevice=, indicando el UUID del dispositivo que incluye la particion de /, y root=, indicandole exactamente donde esta esta particon.

Ademas en la linea GRUB_PRELOAD_MODULES le indicamos que carge los mods de insmod y modraid para que GRUB entienda como funcionan los dispositivos RAID.

Generamos la configuracion de Grub con los cambios realizados, e instalamos Grub en los dos discos que forman el primer dispositivo RAID. A la hora de generar la configuracion, mientras Grub intenta buscar que sistemas encuentra en los discos, pueden salir multitud de avisos, pero no debemos hacerles caso, a no ser que claramente indique algun error.

Reinicio

Ya solo nos queda reiniciar en nuestro nuevo sistema, y verque todo haya ido bien.

Salimos del chroot de nuevo al entorno de instalacion. Desmontamos las particiones, y reiniciamos.

Si todo fue correctamente despues de escoger la entrada a arrancar en Grub, se nos pedira la clave de cifrado de md1 y a continuacion la de md2, y el sistema arrancara normalmente.

Para acabar ya, diré que no soy ningún experto en el tema. Este tutorial esta hecho a partir de mi propia experiencia, y de lo que he aprendido por ahí. En concreto las fuentes que debería mencionar son tres.

Por un lado la magnifica guía de Arch GNU/Linux, donde se explica las diversas combinaciones jugando con RAID, LUKS y LVM. dm-crypt/Encrypting an entire system.

Por otro lado el par de magnificos post de Archuser, donde explica una manera de hacerlo algo distinta, el crea un sistema LVM con volumenes logicos cifrados dentro. Instalar ArchLinux cifrando el disco con dm-Crypt y LUKS – Parte I y Instalar ArchLinux cifrando el disco con dm-Crypt y LUKS – Parte II – Sistema base.

Y ya finalmente, y dejo de daros la lata, el articulo en ingles de Jayson Ryan: LVM on LUKS on RAID1 on Arch Linux.

Acerca de Laegnur

3
Deja una respuesta

avatar
3 Hilos de comentario
0 Respuestas de hilo
0 Seguidores
 
Comentario más reaccionado
El hilo de comentarios más caliente
1 Autores de comentarios
AnonymousInstalar Arch GNU/Linux con LVM sobre LUKS sobr...Bitacoras.com Autores de comentarios recientes
  Suscribirse  
Los más recientes Los más antiguos Más votados
Notificarme las
Anonymous
Invitado
Anonymous

Grub2 si puede estar dentro de LUKS y LVM Stripping, tan solo hay que decirle que Grub2 se instale con módulos precargados.

Salvo el MBR (que define una partición protectora para GPT), los sectores propios de GPT (al inicio y al final del disco) y la partición BIOSGRUB (mejor hacerla de 2 a 8 megas, 1 es muy corta), el resto puede estar bajo una o varias capas de LUKs.

Al arrancar, antes de que salga el menú de Grub2 (grub.cfg está dentro de un cifrado LUKS) nos pedirá la ‘password’ de cada capa de LUKs.

Ah, si, por si no quedó claro, las capas de LUKS se pueden anidar u as sobre otras y cada una con su propio algoritmo de cifrado y password, esa es la forma de hacer LUKS con algoritmos en cascada.

Ahora no recuerdo la URL de un tuto sobre el parámetro ‘modules’ de grub2-install, pero creo recordar (si no me equivoco) que era algo tan simple como:

grub2-install -modules=”luks,lvm” /dev/sdX

Te lo comento por si deseas ‘ampliat’ tus instrucciones y corregir la ‘errata’ de que Grub2 no puede estar dentro de LUKS.

Mi GRUB2 está en una ext4, que está sobre un LUKS, que a su vez está sobre otro LUKS,el cual se aloja sobre una lógica de LVM distribuida en striping (tipo rad0, rendimiento distribuido) sobre tres LUKS difetentes, cada uno alojado sobre una partición GPT en sendos tres discos… al arrancar, para que Grub2 pueda leer su grub.cfg, saltan las peticiones de crypto, tres (una por cada LUKS sobre vada disco) mas dos mas ya sobre LVM, total 5 passwords diferentes… de forma que no solo distribuyo los datos entre los tres discos (en mi caso tupo raid 0 – striped, no 1 – mirror), sino que además cifro con dos algoritmos en cascada antes de hacer la distribución y después de hacer la distribución cada disco se cifra con un algoritmo más, sin necesidad de que ninguno de los cinco sea igual a otro… lento, lo se, pero que venga la NSA/CIA o quien sea a descifrarlo, menudo barapalo se llevarán.
Nota: El esquema del ejemplo es una simplificación muy grande, en realidad (dada mi amplia paranoya) uso más de ocho discos y los troceo y entremezclo, etc., con más de diez niveles de cifrado y algo más de cien passwords a teclear (sin errores se tarda más de una hora en teclear todas las passwords, como dije, soy muy paranóico). Y eso lo uso para arrancar luego ISOs de versiones Live, ni os imaginais lo que hago para mis datos ‘privados’.

En fin, Grub2 si puede estar dentro de LUKS, para que eso funcione el Stage1 de LUKS lo instala con los módulos precargados, pero al hacer la instalación hay que decirlemqué módulos debe tener precargados.

trackback

[…] Buenas Lo prometido es deuda. Hace algún tiempo, mas del que me gustaría dije que escribiría un articulo sobre como instalar Arch GNU/Linux con un sistema de particiones lógicas mediante volúmenes lógicos LVM, cifrados con dm-crypt y LUKS, sobre…  […]

trackback

Información Bitacoras.com

Valora en Bitacoras.com: Buenas Lo prometido es deuda. Hace algún tiempo, mas del que me gustaría dije que escribiría un articulo sobre como instalar Arch GNU/Linux con un sistema de particiones lógicas mediante volúmenes lógicos LVM, cifrados …

Suscríbete gratis

Suscríbete gratis

Recibe las últimas noticias y novedades de LiGNUx en tu email.
Sin publicidad, sin Spam.

Gracias por suscribirte a LiGNUx.

Share This