En esta entrada se configurará el sistema operativo Arch.
1. Instalación de Arch
1.1. ¿Qué es Arch?
Arch Linux es una distribución GNU/Linux de propósito general x86-64, desarrollada de forma independiente, que se esfuerza por ofrecer las últimas versiones estables de la mayoría del software siguiendo un modelo rolling-release. La instalación por defecto es un sistema base mínimo, configurado por el usuario para añadir sólo lo que se requiere a propósito 1.
1.2. Conceptos básicos
LVM es una implementación de un gestor de volúmenes lógicos para el núcleo Linux. LVM incluye muchas de las características que se esperan de un administrador de volúmenes, incluyendo:
- Redimensionado de grupos lógicos
- Redimensionado de volúmenes lógicos
- Instantáneas de sólo lectura (LVM2 ofrece lectura y escritura)
- RAID0 de volúmenes lógicos. LVM no implementa RAID1 o RAID5, por lo que se recomienda usar software específico de RAID para estas operaciones, teniendo las LV por encima del RAID 2.
En esta configuración no se usará RAID.
LUKS es una especificación de cifrado de disco creado por Clemens Fruhwirth, originalmente destinado para Linux. Mientras la mayoría del software de cifrado de discos implementan diferentes e incompatibles formatos no documentados, LUKS especifica un formato estándar en disco, independiente de plataforma, para usar en varias herramientas. Esto no sólo facilita la compatibilidad y la interoperabilidad entre los diferentes programas, sino que también garantiza que todas ellas implementen gestión de contraseñas en un lugar seguro y de manera documentada. La implementación de referencia funciona en Linux y se basa en una versión mejorada de cryptsetup, utilizando dm-crypt como la interfaz de cifrado de disco 3.
Un boot loader carga un kernel del sistema operativo en la memoria y lo ejecuta. Un boot manager entrega el control a otro programa de arranque. GRUB es tanto un boot loader como un boot manager. Refind es sólo un boot manager.
Otro concepto fundamental es conocer la diferencia entre EFI/UEFI y BIOS.
LVM es una implementación de un gestor de volúmenes lógicos para el núcleo Linux. LVM incluye muchas de las características que se esperan de un administrador de volúmenes, incluyendo:
- Redimensionado de grupos lógicos
- Redimensionado de volúmenes lógicos
- Instantáneas de sólo lectura (LVM2 ofrece lectura y escritura)
- RAID0 de volúmenes lógicos. LVM no implementa RAID1 o RAID5, por lo que se recomienda usar software específico de RAID para estas operaciones, teniendo las LV por encima del RAID 2.
En esta configuración no se usará RAID.
LUKS es una especificación de cifrado de disco creado por Clemens Fruhwirth, originalmente destinado para Linux. Mientras la mayoría del software de cifrado de discos implementan diferentes e incompatibles formatos no documentados, LUKS especifica un formato estándar en disco, independiente de plataforma, para usar en varias herramientas. Esto no sólo facilita la compatibilidad y la interoperabilidad entre los diferentes programas, sino que también garantiza que todas ellas implementen gestión de contraseñas en un lugar seguro y de manera documentada. La implementación de referencia funciona en Linux y se basa en una versión mejorada de cryptsetup, utilizando dm-crypt como la interfaz de cifrado de disco 3.
En la tabla de particiones Tabla de particiones se utiliza el formato ext4 para las particiones porque mejora la velocidad de entrada y salida y utiliza menos CPU que los formatos ext3 y ext2. Se recomiendan como mínimo los siguientes valores:
| Particion | Tamaño recomendado | Asignado Debian | Asignado Propio | Contiene |
|---|---|---|---|---|
| / | >= 750MB | 22GB | 64GB | /etc, /bin, /sbin, /lib, /dev, /usr |
| /usr | >= 4-6GB | 0 | 0 | Programas de usuario, lib y docs |
| /var | >= 2-3GB | 32GB | 112GB | Variables de datos como emails |
| /tmp | >= 100MB | 16GB | 32GB | Páginas web, caché de paquetes, datos temporales |
| /home | >= 100MB | 200GB | 288GB | Directorio con Documentos, Descargas, … |
| /boot | >= 256MB | 500MB | 512GB | Partición Primaria, ext4 o ext2, no se recomienda cifrarla |
| /boot/efi | >= 100MB | 250MB | 0 | No se recomienda cifrarla y bootable flag: on |
| /swap | >= 8GB | 16GB | 16GB | Área de intercambio |
1.3. Quemar la imagen de Arch
Se ha seguido los pasos de la instalación de Arch 4.
Una forma de quemar una imagen es con el comando dd como se muestra a continuación:
| |
| |
| |
1.4. Arrancamos Arch
Conectamos el USB, ethernet y mediante la BIOS, arrancamos Boot Arch Linux desde el USB.
2. Configuración inicial
2.1. Definir la distribución del teclado en el entorno live
Cambiamos el teclado a castellano:
| |
2.2. Configurar la WiFi
Si no está instalado el paquete iwd, lo instalamos con una conexión ethernet;
| |
Configuramos la interfaz WiFi con:
: wlan0 : nombre de la WiFi : contraseña
Para localizar dichos valores, podemos utilizar el comando iwctl y después device device show.
| |
Para ver las redes WiFi disponibles escribimos los siguientes comandos:
| |
Comprobamos que tenemos IP con:
| |
Ahora si cambiamos la contraseña al usuario root, con el comando passwd, nos podremos conectar a la máquina con:
| |
2.3. Actualización horaria
Seguimos esta guía con los primeros pasos después de haber instalado Arch 5. Cambiamos la hora a la que nos corresponde con:
| |
Actualizamos el reloj con internet:
| |
2.4. Desbloquear partición cifrada con LUKS y configurada con volúmenes lógicos LVM
Desciframos la partición con:
| |
Posteriormente detectaremos el grupo de los volúmenes LVM con:
| |
Nota: es probable que los siguientes pasos no funcionen a la primera y sea necesario completarlos con la siguiente sección. Por lo que se podría obviar el final de esta sección e instalar el grub directamente.
Una vez ejecutados los comandos anteriores, seguir con la instalación hasta la instalación del GRUB. Volvemos a abrir una terminal e identificamos el UUID de la partición cifrada con:
| |
Lo siguiente es modificar el archivo /etc/crypttab:
| |
Y se añade el siguiente contenido, donde el UUID es el obtenido del comando blkid:
| |
Parece que esta configuración es necesaria repetirla más adelante.
2.5. Montar las particiones
Según la documentación de Arch para crear sistemas de archivos y montar volúmnes, formateamos los volúmenes ya creados y montamos las siguientes particiones:
| |
2.6. Instalación de paquetes esenciales y recomendados
Fuentes:
- [https://denovatoanovato.net/instalar-arch-linux/#uefi]
- [https://linuxhint.com/setup-luks-encryption-on-arch-linux/] Probar a seguirlo con encrypt en vez de lvm2 o poniendo ambas
Paquetes esenciales:
| |
Paquetes recomendados (aunque alguno puede dar error):
| |
Para activar el touchpad, instalar el paquete xf86-input-synaptics.
Otros paquetes adicionales podrían ser os-probes (parece que da error).
Después generaremos el archivo fstab, el encargado de contiener la tabla de particiones del sistema.
| |
2.7. Entrar al sistema base
Ya es momento que entremos al sistema base instalado, para seguir configurándolo desde dentro. Para acceder al sistema en chroot ejecutamos:
| |
2.8 Actualizar hostname
| |
2.9. Actualizar zona horaria
| |
2.10. Ajustamos el reloj
| |
2.11. Configurar distibución de teclado
| |
2.12. Configurar mkinitcpio
Fuentes:
- [https://www.linuxserver.io/blog/2014-01-18-installing-arch-linux-with-root-on-an-lvm]
- [https://wiki.archlinux.org/title/LVM_(Espa%C3%B1ol)#Crear_sistemas_de_archivos_y_montar_los_vol%C3%BAmenes_l%C3%B3gicos]
| |
Modificamos el HOOKS y añadimos lo siguiente:
| |
Y ejecutamos:
| |
Ahora, ya podríamos desmontar la partición y reiniciar el sistema operativo con los siguientes comandos en caso de no haber instalado Arch en una partición cifrada. En caso de haberlo instalado en una partición cifrada, deberemos configurar el grub para indicar que está cifrado (paso 2.13).
| |
2.13. Configurar Grub
Instalamos grub con los siguientes comandos:
| |
En /etc/default/grub editamos la línea GRUB_CMDLINE_LINUX por:
| |
[Consejo] Para buscar automáticamente otros sistemas operativos en su ordenador, instale os-prober (pacman -S os-prober) antes de ejecutar el siguiente comando.
Por último, configuramos el grub con:
| |
2.14. Configuración para particición cifrada con LUKS
Nota: los siguientes son los repetidos en la sección 2.4., por lo que fijarse bien si funcionó en ese paso o hay que repetirlos.
Detectamos el UUID de la partición cifrada. La X de sdaX corresponde al número de la partición cifrada, si no se conoce simplemente utilizar el comando blkid.
| |
Editamos el archivo /etc/crypttab con nano:
| |
Añadimos lo siguiente:
| |
Instalamos initramfs:
| |
Una vez terminado se utiliza el siguiente comando para actualizar initramfs:
| |
2.14 (Opcional) Inicialización del llavero de pacman
Instalamos el llavero:
| |
Inicializamos el llavero de pacman y rellenar las claves de firma de los paquetes de Arch Linux ARM (en caso de ser una raspberry):
| |
2.15 Desmontar las particiones
Desmontamos la partición mnt
| |
Reiniciamos el sistema operativo con:
| |
3. Configuración Avanzada
Volvemos a acceder por ssh a la máquina y seguimos los siguientes pasos.
3.1. Actualización del sistema
Una vez tengamos una consola con un usuario sin privilegios de root, abriremos una nueva consola como el usuario root:
| |
La contraseña por defecto suele ser root o la que ya se haya configurado previamente.
- Actualizamos Arch:
| |
3.2. Actualización del idioma
Si no está configurado anteriormente, descomentamos el idioma deseado en el archivo locale.gen (por ejemplo: en_US.UTF-8) :
| |
Ejecutamos:
| |
Y ejecutamos:
| |
3.3. Cambio de hostname
Cambiamos el hostname con:
| |
Añadimos un alias par el hostname en el archivo /etc/hosts del oredenador que estemos utilizando para la configuración. Usamos nano /etc/hosts:
| |
3.4. (Opcional) Cambiar el color a la salida de pacman
Si utilizamos Arch, ejecutamos:
| |
3.5. (Opcional) Añadimos 8GB de memoria SWAP
Si utilizamos Arch, ejecutamos:
| |
3.6. (Opcional) Nuevo usuario con permisos sudo
Si utilizamos Arch, ahora usaremos la utilidad visudo para editar los permisos de grupo para ejecutar comandos administrativos con sudo.
| |
Descomentamos la siguiente línea:
| |
Creamos un nuevo grupo sudo con:
| |
Creamos un nuevo usuario con:
| |
Ponemos una contraseña al nuevo usuario:
| |
Una vez tengamos el nuevo usuario, borraremos el usuario alarm o el usuario por defecto de la instalación (en caso de existir uno).
| |
Modificamos los permisos del usuario que habíamos creado durante la instalació y lo añadidos al grupo sudo con el siguiente comando:
| |
Reiniciamos el sistema:
| |
3.6. Claves SSH
En el siguiente paso es necesario copiar la clave pública al archivo ~/.ssh/authorized_keys de la máquina. Para ello se utilizará el siguiente comando:
| |
Ahora nos pedirá la contraseña de nuestra clave SSH y nos conectaremos a la máquina mediante:
| |
3.7. (Optional) Configuración Wi-Fi
Reproducido de la guía: los primeros pasos después de haber instalado Arch 5.karog, on ArchLinux ARM forums provee una manera de conectarse al Wi-Fi es muy sencilla. Como root, haz los siguientes pasos:
nano /etc/systemd/network/wlan0.networkpara configurar la interfaz wlan0:- Añade el siguiente contenido al archivo:
| |
wpa_passphrase "<SSID>" "<PASSWORD>" > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf. Sustituyey por el nombre y la contraseña de su red Wi-Fi. systemctl enable wpa_supplicant@wlan0para habilitar el Wi-Fi al arrancarsystemctl start wpa_supplicant@wlan0para conectarse al Wi-Fi.
Ya está todo listo. Aunque, si alguna vez quieres quitar la conexión Wi-Fi (por ejemplo, cuando quieras hacer que se conecte sólo a través de ethernet):
systemctl stop wpa_supplicant@wlan0systemctl disable wpa_supplicant@wlan0rm /etc/wpa_supplicant/wpa_supplicant-wlan0.confrm /etc/systemd/network/wlan0.network
4. Instalación de paquetes y programas
4.1. Paquetes básicos
gitywget:
| |
yay: Los ayudantes de AUR más utilizados en Arch Linux son Yaourt y Packer. Puede utilizarlos fácilmente para las tareas de gestión de paquetes de Arch Linux, como la instalación y actualización de paquetes.
Sin embargo, los dos han sido descontinuados en favor de yay, abreviatura de Yet Another Yaourt. Yay es un moderno ayudante de AUR escrito en el lenguaje GO. Tiene muy pocas dependencias y soporta el completamiento de pestañas de AUR para que no tengas que escribir los comandos en su totalidad.
Lo instalamos con los siguientes comandos en el directorio opt por ser la carpeta destinada a almacenar los programas externos.
| |
Actualizamos los repos con:
| |
4.2 Instalar zsh, Oh my zsh y Powerlevel10k
Instalamos zsh y oh-my-zsh con los siguientes comandos:
| |
Para instalar Powerlevel10k, necesitamos instalar las fuentes necesarias mediante el comando:
| |
Como alternativa lo podremos hacer manualmente si se descarga y se pega las 4 fuentes .ttf Meslo Nerd en /usr/local/share/fonts. Deben tener los permisos 644 (-rw-r–r–)6.
Creamos la carpeta /usr/local/share/fonts:
| |
Descargamos las fuentes:
| |
Instalamos y configuramos Powerlevel10k con:
| |
4.2. Docker y docker compose
Se recomienda instalar docker rootless (4.2.2.) pero puede dar problemas con algunos contenedores docker. En caso de no que quieras pegarte con esos problemas o que estes configurando un servidor en producción que requiera seguridad, sigue el siguiente apartado (4.2.1.).
4.2.1. Instalación en Arch
Instalamos docker de los repositorios oficiales:
| |
Añadir usuario al grupo docker:
| |
Activamos el demonio de docker:
| |
Si da error reiniciamos la máquina.
4.2.2 Docker rootless
- Arch:
| |
Añade kernel.unprivileged_userns_clone=1 in /etc/sysctl.conf:
| |
| |
Se prueba con docker run -d -p 8080:80 nginx.
Si queremos que se arranque en el arranque, escribimos los siguientes comandos:
| |
4.3 Gestor de ventanas i3wm
Siguiendo los pasos de Low Orbit Flux - Arch Linux How to Install i3 Gaps,instalamos el paquete xorg-xinit que instala xinit. El programa xinit permite al usuario iniciar manualmente un servidor de visualización Xorg. Instalamos el servidor de ventanas X xorg y xterm.
| |
Instalamos unos extras opcionales:
| |
Instalamos todo el grupo de i3, priorizamos i3-gaps sobre i3-wm por ser un fork el primero del segundo.
| |
Instalamos los drivers necesarios para nuestra máquina.
| |
Seguimos los pasos de Low Orbit Flux - Arch Linux How to Install i3 Gaps hasta terminarlos.