Instalación de Hyperbola GNU/Linux-libre con cifrado de disco completo (incluido /boot)

Esta guía explica cómo instalar Hyperbola GNU/Linux-Libre, con cifrado completo del disco, incluido /boot (el directorio de inicio). En la mayoría de los sistemas, /boot debe dejarse sin cifrar, mientras que las otras particiones están cifradas. Esto es para que GRUB (y por lo tanto el kernel) se pueda cargar y ejecutar, porque la mayoría del firmware no puede abrir un volumen LUKS; sin embargo, con Libreboot, GRUB ya está incluido como una carga útil, por lo que incluso /boot se puede cifrar; esto protege a /boot de la manipulación por parte de alguien con acceso físico al sistema.

Esta guía es solo para la carga útil de GRUB. Si usa la carga útil de carga de profundidad, ignore esta sección por completo.
Esta guía se ha utilizado para quienes son nuevos en nuestro sistema; consulte sección para principiantes para obtener una descripción general.

Requerimientos Mínimos

Puede encontrar los requisitos mínimos para ejecutar Hyperbola GNU/Linux-libre en la página de descarga.

Preparación

Descarga la imagen en vivo

Para esta guía estamos usando la versión Milky Way, la imagen en vivo está disponible en la página de descarga.

Nunca debes copiar y pegar ciegamente ningún comando. En esta guía, copiar y pegar es asegurarse de que no se cometan errores al ingresar los comandos, para que no bloquee la instalación de manera efectiva y tenga que comenzar de nuevo. Es importante entender qué hace cada comando antes de usarlo, así que asegúrese de leer la página de manual.
Solo elige Imagen en vivo de Hypertalking, si eres ciego o tienes una discapacidad visual

Elija el dispositivo de instalación

Consulte la guía para principiantes, para encontrar y elegir el dispositivo de instalación adecuado, si está utilizando un disco óptico, o en una unidad USB.

Iniciar el entorno de instalación de Hyperbola

Después de descargar la ISO y crear algún tipo de medio de arranque, deberá iniciar la imagen en vivo. Si no está seguro de cómo hacerlo, consulte cómo iniciar un instalador de GNU/Linux, y continúe con el siguiente paso; de lo contrario, simplemente vaya al siguiente paso.

Configuración de la distribución del teclado

Para comenzar la instalación, primero debe seleccionar la distribución del teclado

Establecer una conexión a Internet

También deberá configurar una conexión de red, para instalar los paquetes.

Preparando el dispositivo de almacenamiento para la instalación

Debe preparar el dispositivo de almacenamiento que utilizaremos para instalar el sistema operativo. Puede usar el mismo nombre del dispositivo que usó anteriormente, para determinar el dispositivo de instalación para el ISO.

Limpie el dispositivo de almacenamiento

Desea asegurarse de que el dispositivo que está utilizando no contiene ninguna copia de texto simple de sus datos personales. Si la unidad es nueva, puede omitir el resto de esta sección; si no es nuevo, entonces hay dos maneras de manejarlo:

  1. Si la unidad no estaba cifrada previamente, bórrela de forma segura con el comando dd; puede elegir rellenarlo con ceros o datos aleatorios; elegí datos aleatorios (por ejemplo, urandom), porque es más seguro. Dependiendo del tamaño de la unidad, esto podría llevar un tiempo completar:
    #dd if=/dev/urandom of=/dev/sdX; sync 
  2. Si la unidad se cifró previamente, todo lo que debe hacer es borrar el encabezado LUKS. El tamaño del encabezado depende del modelo específico del disco duro; Puede encontrar esta información haciendo una investigación en línea. Consulte este artículo, para obtener más información acerca de los encabezados LUKS. Puede rellenar el encabezado con ceros o con datos aleatorios; otra vez, elegí datos aleatorios, usando urandom:
    # head -c 3145728 /dev/urandom > /dev/sdX; sync

Además, si estás usando un SSD, hay dos cosas que debes tener en cuenta:

  • Hay problemas con TRIM; no está habilitado de forma predeterminada a través de LUKS, y hay problemas de seguridad, si lo habilitas. Consulte esta página para obtener más información.
  • Asegúrese de leer este artículo, para obtener información sobre la gestión de SSD en Arch GNU/Linux (la información se aplica a Hyperbola, también).

Formateo del dispositivo de almacenamiento

Ahora que todos los datos personales se han eliminado del disco, es hora de formatearlos. Comenzaremos creando una partición grande y única en ella, y luego encriptándola usando LUKS.

Crear la partición LUKS

Necesitará el módulo de kernel de mapeador de dispositivos durante la instalación; esto nos permitirá configurar nuestro disco cifrado. Para cargarlo, usa el siguiente comando:

# modprobe dm-mod

Luego debemos seleccionar el nombre del dispositivo de la unidad en la que estamos instalando el sistema operativo; vea el método anterior, si es necesario, para averiguar los nombres de los dispositivos.

Ahora que tenemos el nombre del dispositivo correcto, necesitamos crear la partición en él. Para esto, usaremos el comando cfdisk:

# cfdisk /dev/sdX
  1. Use las teclas de flecha para seleccionar su partición, y si ya hay una partición en la unidad, seleccione Delete y luego New.
  2. Para el tamaño de la partición, déjelo como predeterminado, que será la unidad completa.
  3. Verá una opción para Primary o Logical; elija Primary y asegúrese de que el tipo de partición sea Linux (83).
  4. Seleccione Write; le preguntará si está seguro de que desea sobrescribir la unidad.
  5. Escribe yes, y presiona enter. Aparecerá un mensaje en la parte inferior que le indicará que la tabla de particiones se ha modificado.
  6. Seleccione Quit, para regresar a la terminal principal.

Ahora que ha creado la partición, es el momento de crear el volumen cifrado en ella, utilizando el comando cryptsetup, como este:

# cryptsetup -v --cipher serpent-xts-plain64 --key-size 512 --hash whirlpool >--iter-time 500 --use-random --verify-passphrase luksFormat /dev/sdXY

Estos son solo los valores por defecto recomendados; Si desea utilizar algo más, o para averiguar qué opciones hay, ejecute man cryptsetup.

El tiempo de iteración predeterminado es 2000ms (2 segundos), si no se especifica al ejecutar el comando cryptsetup. Debe establecer un tiempo inferior a este; de lo contrario, habrá un retraso de aproximadamente 20 segundos al arrancar el sistema. Recomendamos 500 ms (0,5 segundos), y esto se incluye en el comando de cryptsetup preparado anteriormente. Tenga en cuenta que el tiempo de iteración es por motivos de seguridad (mitiga los ataques de fuerza bruta), por lo que cualquier cosa inferior a 5 segundos probablemente no sea muy segura.

Ahora se te pedirá que ingreses una frase de contraseña; asegúrese de hacerlo seguro. Para la seguridad de la contraseña, la longitud es más importante que la complejidad (por ejemplo, correct-horse-battery-battery es más seguro que bf20$3Jhy3), pero es útil incluir varios tipos diferentes de caracteres (por ejemplo, mayúsculas/minúsculas, números, caracteres especiales). La longitud de la contraseña debe ser tan larga como sea posible de recordar, sin tener que escribirla o almacenarla en cualquier lugar.

Se recomienda el uso del método diceware para generar frases de contraseña seguras (en lugar de contraseñas).

Crear el grupo de volúmenes y los volúmenes lógicos

El siguiente paso es crear dos volúmenes lógicos dentro de la partición cifrada LUKS: uno contendrá su instalación principal y el otro contendrá su espacio de intercambio o swap.

Crearemos esto utilizando, el Gestor de Volumen Lógico (LVM).

Primero, necesitamos abrir la partición LUKS, en /dev/mapper/lvm:

# cryptsetup luksOpen /dev/sdXY lvm

Entonces, creamos la partición LVM:

# pvcreate /dev/mapper/lvm

Asegúrese de que se creó la partición:

# pvdisplay

A continuación, creamos el grupo de volúmenes, dentro del cual se crearán los volúmenes lógicos. Para este ejemplo, llamaremos a este grupo matrix. Puedes llamar al tuyo como quieras; Solo asegúrate de recordar su nombre:

# vgcreate matrix /dev/mapper/lvm

Asegúrese de que se creó el grupo:

# vgdisplay

Por último, necesitamos crear los volúmenes lógicos en sí mismos, dentro del grupo de volúmenes; uno será nuestro swap, hábilmente llamado swapvol, y el otro será nuestra partición root, igualmente ingeniosamente nombrada como rootvol

  1. Primero crearemos el swapvol (nuevamente, elija su propio nombre, si lo desea). Además, asegúrese de escojer un tamaño de intercambio apropiado (por ejemplo, 2G se refiere a dos gigibytes; cambia esto como mejor te parezca):
    # lvcreate -L 2G matrix -n swapvol
  2. Ahora, crearemos una sola partición grande en el resto del espacio, para rootvol:
    # lvcreate -l + 100% FREE matrix -n rootvol

También puede ser flexible aquí, por ejemplo, puede especificar un /boot, un /, un /home, un /var, o un volumen /usr. Por ejemplo, si va a ejecutar un servidor web/mail, entonces desea /var (donde se almacenan los registros) en su propia partición, de modo que si se llena de registros, no bloqueará tu home/ de la computadora portátil (caso de uso típico), solo un root y un swap serán suficientes.

Verifique que los volúmenes lógicos fueron creados correctamente:

# lvdisplay

Prepare las particiones rootvol y swapvol para la instalación

Los últimos pasos para configurar la unidad para la instalación son convertir swapvol en una partición de intercambio activa y formatear rootvol.

Para convertir swapvol en una partición de intercambio, ejecutamos el comando mkswap (es decir, crear swap):

# mkswap /dev/mapper/matrix-swapvol

Active el swapvol, permitiendo que ahora se use como intercambio, usando el comando swapon (es decir, active swap)

# swapon /dev/matrix/swapvol

Ahora tenemos que formatear rootvol, para que esté listo para la instalación; lo hacemos con el comando mkfs (es decir, crear el sistema de archivos). Elegimos el sistema de archivos ext4, pero puede usar uno diferente, depende de su uso:

# mkfs.ext4 /dev/mapper/matrix-rootvol

Por último, necesitamos montar rootvol. Afortunadamente, GNU/Linux tiene un directorio para este propósito: /mnt:

# mount /dev/matrix/rootvol /mnt

Crear los directorios /boot y /home

Ahora que ha montado rootvol, debe crear las dos carpetas más importantes: /boot y /home; estas carpetas contienen sus archivos de arranque, así como los documentos personales, videos, etc. de cada usuario.

Ya que montó rootvol en /mnt, aquí es donde debe crearlos; lo hará usando mkdir:

# mkdir -p /mnt/home
# mkdir -p /mnt/boot

También puede crear dos particiones separadas para /boot y /home, pero tal configuración sería para usuarios avanzados, y por lo tanto no se trata en esta guía. Para obtener más información sobre cómo hacer esto, consulte la wiki de Arch en particiones.

La configuración de la unidad y las particiones ahora están completas; es hora de instalar Hyperbola.

Instalar el sistema base

Necesitamos instalar las aplicaciones esenciales para que se ejecute su instalación de Hyperbola; consulte Instalar el sistema base, en nuestro wiki.

Generar un fstab

El siguiente paso en el proceso, es generar un archivo conocido como fstab; el propósito de este archivo es que el sistema operativo identifique el dispositivo de almacenamiento utilizado por su instalación. En la guía para principiantes está la instrucción para generar ese archivo.

Dentro de Chroot y configurar el sistema

Ahora, necesita chroot en su nueva instalación, para completar el proceso de instalación y configuración. Chrooting se refiere a cambiar el directorio raíz de un sistema operativo por otro diferente; en este caso, significa cambiar su directorio raíz al que creó en los pasos anteriores, para que pueda modificar los archivos e instalar el software en él, como si fuera el sistema operativo host.

Para entrar al Chroot, siga las instrucciones de la guía para principiantes.

Coniguración regional

La configuración regional se refiere al idioma que usará su sistema operativo, así como a algunas otras consideraciones relacionadas con la región en la que vive. Para configurar esto, siga las instrucciones en la guía para principiantes.

Configurando la fuente de la terminal y el teclado

Esto determinará la distribución del teclado de su nueva instalación; siga las instrucciones en la guía para principiantes.

Configuración de la zona horaria

Deberá establecer su zona horaria actual en el sistema operativo; esto permitirá que las aplicaciones que requieren un tiempo preciso funcionen correctamente (por ejemplo, el navegador web). Para hacer esto, siga las instrucciones en la guía para principiantes.

Configuración del reloj de hardware

Para asegurarse de que su computadora tenga la hora correcta, tendrá que configurar la hora en el reloj interno de su computadora. Siga las instrucciones en la guía para principiantes para hacer eso.

Configurando los módulos del kernel

Ahora debemos asegurarnos de que el kernel tenga todos los módulos que necesita para iniciar el sistema operativo. Para hacer esto, necesitamos editar un archivo llamado mkinitcpio.conf. Puede encontrar más información sobre este archivo en la Arch wiki, pero para esta guía, simplemente debe ejecutar el siguiente comando.

# nano /etc/mkinitcpio.conf

Hay varias modificaciones que debemos hacer en el archivo:

  1. Cambie el valor de la línea MODULES sin comentarios a i915.
    • Esto obliga al controlador a cargarse antes, por lo que la fuente de la consola que seleccionó anteriormente no se borra después de iniciar sesión.
    • Si está utilizando un Macbook 2,1 también deberá agregar hid-generic, hid, y hid-apple entre comillas, para que el teclado funcione cuando se le solicite ingresar la contraseña de LUKS. Asegúrese de separar cada módulo por un espacio.
  2. Cambie el valor de la línea HOOKS sin comentarios:
    # nano /etc/mkinitcpio.conf
     
    "base udev autodetect modconf block keyboard keymap consolefont encrypt lvm2 filesystems fsck shutdown"

Esto es lo que hace cada módulo:

  • keymap agrega a initramfs el keymap que especificó en /etc/conf.d/keymaps
  • consolefont agrega a initramfs la fuente que especificó en /etc/conf.d/keymaps
  • lvm2 agrega soporte LVM a initramfs - necesario para montar las particiones LVM en el momento del arranque
  • shutdown es necesario según la Arch wiki, para desmontar dispositivos (como LUKS/LVM) durante el apagado

Después de modificar el archivo y guardarlo, debemos actualizar el(los) núcleo(s) con la nueva configuración.

También instalaremos el paquete grub, que necesitaremos más adelante, para realizar nuestras modificaciones al archivo de configuración de GRUB:

# pacman -S grub

Luego, actualizamos el núcleo, usando el comando mkinitcpio:

# mkinitcpio -p linux-libre-lts

Configurando el nombre de host (hostname)

Ahora necesitamos configurar el nombre de host para el sistema; esto es para que nuestro dispositivo pueda ser identificado por la red. Consulte la sección de nombre de host de la guía para principiantes. Puedes hacer el nombre de host como quieras; por ejemplo, si quisiera elegir el nombre de host hyperbola, ejecutaría el comando echo, de la siguiente manera:

# echo hyperbola > /etc/hostname

Y luego modificaría /etc/hosts así, agregándole el nombre de host:

# nano /etc/hosts
 
#<ip-address> <hostname.domain.org>    <hostname>
127.0.0.1     localhost.localdomain    localhost   hyperbola
::1           localhost.localdomain    localhost   hyperbola

Configurar la red

Ahora que tenemos un nombre de host, necesitamos configurar los ajustes para el resto de la red, sugerimos usar netifrc para configurar su conexíon cableado/inalámbrica. Consulte el Gentoo Handbook que explica los scripts de netifrc con un alto nivel de detalle.

Establecer la contraseña root

La cuenta root tiene control sobre todos los archivos en la computadora; por seguridad, debemos protegerlo con una contraseña. Los requisitos de contraseña indicados anteriormente, para la frase de contraseña LUKS, también se aplican aquí. Establecerá esta contraseña con el comando passwd:

# passwd

Ajustes de seguridad extra

Hay algunos cambios finales que podemos hacer en la instalación, para hacerla significativamente más segura; estos se basan en la sección de securidad de la wiki Arch.

Fortalecimiento de claves

Debemos abrir el archivo de configuración para configurar la contraseña y aumentar la solidez de nuestra contraseña root:

# nano /etc/pam.d/passwd

Agregue rounds=65536 al final de la línea de “password” sin comentarios. en términos simples, esto forzará a un atacante a tomarse más tiempo con cada conjetura de contraseña, mitigando la amenaza de ataques de fuerza bruta.

Restringir el acceso a directorios importantes

Puede evitar que cualquier usuario, que no sea el usuario root, acceda a los directorios más importantes del sistema mediante el comando chmod.

# chmod 700 /boot /etc/{iptables,arptables}
Para obtener más información sobre chmod, ejecute:
~ man chmod

Bloqueo de usuario después de tres intentos fallidos de inicio de sesión

También podemos configurar el sistema para bloquear la cuenta de un usuario, después de tres intentos fallidos de inicio de sesión.

Para hacer esto, tendremos que editar el archivo /etc/pam.d/system-login, y comentar esta línea:

auth required pam\_tally.so onerr=succeed file=/var/log/faillog*\

También puedes borrarlo. Por encima de ella, ponga la siguiente línea:

auth required pam\_tally.so deny=2 unlock\_time=600 onerr=succeed file=/var/log/faillog

Esta configuración bloqueará al usuario durante diez minutos. Puede desbloquear la cuenta de un usuario manualmente, utilizando la cuenta root, con este comando:

# pam_tally --user *theusername* --reset

Generar grub.cfg

Edit configuration in /etc/default/grub, remembering to use UUID when pointing to mbr/gpt partition. Use blkid to get list of devices with their respective UUIDs. Next generate grub.cfg with: Edite la configuración en /etc/default/grub, recuerde usar UUID cuando señale la partición mbr/gpt. Utilice blkid para obtener una lista de dispositivos con sus UUID respectivos. Luego genere grub.cfg con:

# grub-mkconfig -o /boot/grub/grub.cfg

Si tiene una partición separada /boot, no olvide agregar el enlace simbólico de arranque que apunta al directorio actual:

# cd /boot
# ln -s . boot

Desmonta todas las particiones y reinicia

¡Felicidades! Ha finalizado la instalación de Hyperbola GNU/Linux-libre. Ahora es el momento de reiniciar el sistema, pero primero, hay varios pasos preliminares:

Salga del chroot, usando el comando exit:

# exit

Desmonte todas las particiones de /mnt, y “apague” el volumen de intercambio (swap):

# umount -R /mnt
# swapoff -a

Desactive los volúmenes lógicos rootvol y swapvol:

# lvchange -an /dev/matrix/rootvol
# lvchange -an /dev/matrix/swapvol

Bloquee la partición cifrada (es decir, ciérrela):

# cryptsetup luksClose lvm

Apague la máquina:

# openrc-shutdown -p now

Una vez que la máquina esté apagada, retire los medios de instalación y enciéndala.

Arrancando la instalación manualmente desde el GRUB

Cuando olvida configurar o configure incorrectamente grub en su hdd, debe iniciar el sistema manualmente ingresando una serie de comandos en la linea de comandos de GRUB.

Después iniciar la computadora, presione C para que aparezca la línea de comando de GRUB Aquí están los comandos:

grub> cryptomount -a
grub> set root='lvm/matrix-rootvol'
grub> linux /boot/vmlinuz-linux-libre-lts root=/dev/matrix/rootvol cryptdevice=/dev/sda1:root
grub> initrd /boot/initramfs-linux-libre-lts.img
grub> boot
En las máquinas con sata nativo, durante el arranque, una unidad de disco óptico (defectuosa) (como dvd) puede hacer que el comando cryptomount -a falle o se bloquee, así como el error:
AHCI time out out

La solución es desconectar la unidad de DVD.

Configurar pacman

Edite /etc/pacman.conf y configure las opciones de pacman, también habilitando los repositorios que necesita.

Consulte Pacman y los Repositorios para obtener más información.

Actualizar el sistema

En este punto debes actualizar tu sistema.

Consulte Actualizar paquetes para obtener instrucciones.

Añadir un usuario

Finalmente, agregue un usuario normal como se describe en la Gestión de usuarios.

Gestión De Servicios

Desde Hyperbola que eliminó todo el soporte de systemd, le sugerimos que lea sobre OpenRC que es nuestro principal sistema de inicio predeterminado.

Conclusión

Su nuevo sistema base Hyperbola GNU/Linux-libre ahora es un entorno GNU/Linux funcional.

Licencias

Este artículo de wiki se publica bajo la Licencia de Documentación Libre de GNU 1.3 sin secciones invariantes, sin textos de portada y sin contraportada.

Créditos

Este artículo de wiki se basa en la documentación de Libreboot.