En el artículo anterior, realizamos el particionado del sistema de archivos, cifrando los volúmenes. Utilizamos LVM para crear volúmenes virtuales y LUKS para cifrarlos. Ahora, continuemos con la instalación.
Lo siguiente que debemos hacer, una vez particionado y formateado el disco, será indicar los puntos de montaje. Para comprender mejor cómo es la jerarquía del sistema de archivos en ArchLinux, podéis leer esto.
Bastará montar las particiones, formando la estructura del sistema de archivos, por ejemplo, a partir de /mnt:
# Primero montamos el / mount /dev/mapper/root /mnt # Creamos los puntos de montaje mkdir /mnt/boot mkdir /mnt/home # Montamos el resto de particiones mount /dev/sda2 /mnt/boot mount /dev/mapper/home /mnt/home
Una vez hecho esto, podemos proceder a instalar el sistema base. Para ello, vamos a utilizar el script pacstrap, que nos permite instalar la paquetería, indicando que nuestro directorio raíz comienza en un lugar diferente a /:
pacstrap /mnt base base-devel grub
Una vez terminado el proceso, tendremos nuestro sistema base instalado. Toca configurar el nuevo sistema.
Para definir los puntos de montaje, bastará ejecutar:
genfstab -U /mnt > /mnt/etc/fstab
Al utilizar -U, indicamos que se utilicen los identificadores UUID. Es recomendable utilizar estos identificadores porque, en caso de utilizar los nombres de dispositivo (/dev/sda, /dev/sdb…) pueden presentarse problemas si añadimos más discos al sistema, sobre todo, si mezclamos discos ATA y SATA. Unas veces será /dev/sda el primer ATA y, otras, el primer SATA. Esto hará que nuestro sistema no pueda arrancar y, además, será aleatorio.
Ahora, debemos dar un nombre a nuestra máquina. Esto se hace creando o editando /etc/hostname, y añadiendo el nombre correspondiente:
echo nombre_máquina > /mnt/etc/hostname
Vamos a establecer el idioma. Primero, crearemos los archivos necesarios:
echo LANG=es_ES.utf-8 > /mnt/etc/locale.conf echo KEYMAP=es > /mnt/etc/vconsole.conf
Para el resto de la configuración, vamos a acceder al nuevo sistema mediante chroot. Éste es un comando que nos permite indicar al sistema que, a partir de ese momento, el directorio raíz empieza en un directorio diferente. Como es necesario crear dispositivos y realizar otras tareas, vamos a hacerlo con el script arch-chroot, que hará esas cosas por nosotros:
arch-chroot /mnt loadkeys es
Antes generamos los archivos para el idioma pero, todavía, no hemos generado los locales. Editados el /etc/locale.gen y descomentamos los correspondientes, podemos utilizar nano, debiendo quedar así:
Generamos los locales:
locale-gen
Si no está el sistema en nuestro idioma, ejecutados:
export LANG=es_ES.utf-8
Debemos especificar nuestro uso horario. Para ello, bastará crear un link al archivo correspondiente. Estos archivos se encuentran en /usr/share/zoneinfo. En nuestro caso:
ln -s /usr/share/zoneinfo/Europe/Madrid /etc/localtime
Se recomienda, y es así por defecto en Arch Linux y otras muchas distribuciones, que configuremos el reloj del sistema en modo UTC. En caso de tener otro sistema instalado, ambos deberán tener la misma configuración.
hwclock --systohc --utc
Para la red, podemos utilizar netctl, que es el gestor de red de Arch Linux. Otro gestor de red que podemos utilizar es NetworkManager. Éste último está muy bien y dispone de herramientas gráficas para su configuración, además está integrado en los escritorios GNome y KDE.
pacman -Syu networkmanager systemctl enable NetworkManager
En el caso de no disponer de conexión cableada, deberemos utilizar netctl para disponer de conexión al iniciar el sistema. Para identificar el nombre de la interfaz de red, ejecutamos:
iwconfig # Nos devuelve las interfaces y nos informa si son wireless o no. wifi-menu -o nombre_interfaz # Genera un perfil para netctl en /etc/netctl
Si vamos a utilizar, una vez instalado el sistema un gestor de red diferente, cuando iniciemos el sistema, tan solo debemos levantar la red, ejecutando:
netctl start <nombre_perfil>
En caso contrario, podemos utilizar los servicios automáticos que nos proporciona netctl. Para ello instalaremos los siguientes paquetes:
pacman -S ifplugd wpa_actiond
El perfil creado por wifi-menu incluye un – (guión) en el nombre, es necesario cambiarlo. Para que se inicie:
systemctl enable netctl-auto@nombre_perfil.service
Si no se iniciara automáticamente, comprobamos que, en el perfil, la variable Security está establecida a wpa-configsection. Si, aún así, no se inicia automáticamente, añadiremos la variable ExcludeAuto con el valor yes.
Los drivers propietarios no se instalan por defecto. Si nuestra tarjeta los necesita, debemos instalarlos. En caso contrario, no tendremos red al iniciar y habrá que arrancar con el medio de instalación para instalarlos. Un ejemplo para las Broadcom, con driver propietario, disponible en el AUR sería:
# Instalamos wget pacman -S wget # Descargamos e instalamos el paquete wget https://aur.archlinux.org/packages/br/broadcom-wl-dkms/broadcom-wl-dkms.tar.gz tar zxvf broadcom-wl-dkms.tar.gz cd broadcom-wl-dkms makepkg -si cd .. rm -r broadcom-wl-dkms.tar.gz # Habilitamos dkms systemctl enable dkms systemctl start dkms
Ahora mismo, solo existe un usuario en el sistema: El usuario root. Debemos asignarle una contraseña:
passwd
Ya tenemos el sistema con la configuración inicial. Vamos a instalar el gestor de arranque. Aquí debemos tener en cuenta dos cosas:
- El disco RAM inicial, que se encarga de la detección de dispositivos al iniciar el sistema, debe contener lo necesario para acceder a volúmenes LVM y cifrados.
- Configurar GRUB para que pase los argumentos necesarios al kernel.
Para el disco RAM inicial, editados el archivo /etc/mkinitcpio.conf y, en la lista de hooks, debemos especificar lvm2 y encrypt antes de filesystems:
HOOKS="base udev autodetect modconf block keyboard lvm2 encrypt filesystems fsck"
El hook keyboard debe estar antes de encrypt, para que esté el teclado presente antes de que se pida la contraseña.
Generamos la imagen:
mkinitcpio -p linux
Vamos a por el GRUB. Editados el /etc/default/grub. En la línea GRUB_CMDLINE_LINUX_DEFAULT, especificamos:
GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=/dev/Datos/rootvol:root quiet"
Creamos el menú:
grub-mkconfig -o /boot/grub/grub.cfg
En el caso de que nos lanzase los siguientes errores:
error: syntax error. error: Incorrect command. error: syntax error.
Añadimos al final del /etc/default/grub la siguiente línea:
GRUB_DISABLE_SUBMENU=y
Y volvemos a generar las entradas del menú, con el comando anterior.
Instalamos el GRUB:
grub-install --recheck /dev/sda
Aunque, al estar el sistema cifrado, no sea de vital importancia, es recomendable proteger también GRUB. En este artículo, María José nos cuenta cómo hacerlo, os recomiendo leerlo.
Ya está la instalación base hecha. Nos falta crear los KEY-files para que se monten automáticamente el home y swap:
dd if=/dev/random of=/etc/home.key bs=512 count=4 dd if=/dev/random of=/etc/swap.key bs=512 count=4 cryptsetup luksAddKey /dev/mapper/Datos-homevol /etc/home.key cryptsetup luksAddKey /dev/mapper/Datos-swapvol /etc/swap.key
Creamos el archivo /etc/crypttab con el siguiente contenido:
home /dev/mapper/Datos-homevol /etc/home.key swap /dev/mapper/Datos-swapvol /etc/swap.key
Reiniciemos el equipo:
exit umont /mnt/{boot,home} umount /mnt reboot
Ahora, en el arranque, tras seleccionar la opción en el menú, el sistema nos preguntará por la contraseña del volumen. Una vez abierto, continuará el arranque del equipo. En el siguiente vídeo, podemos ver el proceso:
En el siguiente artículo, continuaremos con la instalación del sistema gráfico, sonido, usuarios, etc., dejando ya un sistema completo instalado.
[…] Instalar ArchLinux cifrando el disco con dm-Crypt y LUKS – Parte II – Sistema base diciembre 9, 2013 […]
Hola Archuser. Quise hacer la instación en modo uefi, para lo que cree la partición efi y el resto del espacio fué para el contenedor LVM. no hice la partición ef02 en este caso. Iba todo bien hasta el momento de instalar el grub con grub-install –recheck /dev/sda. Me daba un error como que no encontrada el directorio efi o algo asi. Hay algo que hice mal o en modo uefi se hace de otra forma? Saludos
Hola! Para instalar grub con uefi, el comando es :
grub-install –target=x86_64-efi –efi-directory=/boot –bootloader-id=arch_grub
–recheck