Arch Linux es una distrubución de GNU/LINUX que sigue un modelo de lanzamiento contínuo <<Rolling Release>>, esto quiere decir que el sistema se actualiza continua, sin interrupciones, con pequeñas actualizaciones. Todo esto implica que no existen versiones de Arch como de Ubuntu por ejemplo, que tiene lanzamientos completos cada tanto.
Además la instalación deja únicamente lo estrictamente necesario para funcionar. Y este proceso puede ser complejo, por eso elaboré esta guía de la forma más sencilla posible intentando explicar qué hace cada cosa.
Para el seguimiento de esta guía se asume que se conocen los comandos básicos de Linux así como también un conocimiento básico sobre grupos, usuarios, permisos, manejo de particiones, file system, archivos e inglés básico.
Índice
- Índice
- Disclaimer
- Guía Oficial
- Antes de Empezar
- Preparación del medio de instalación
- Preparando la instalación
- Creando las Particiones
- Configurando los mirrors
- Ahora sí. Instalamos el sistema
- Generando el archivo fstab
- Configurando el sistema
- Instalando Programas
- Creando el usuario
- Instalando Network Manager
- (Opcional) Instalando ZFS
- (Opcional) Instalando BTRFS
- Instalando GRUB
- Finalizando y primer reinicio
- Conectándonos a Internet (de nuevo)
- Comandos útiles
- Instalando Yay
- Instalando un Entorno de Escitorio
- Optimizando del sistema
Disclaimer
La siguiente guía no tiene garantía alguna. Sos completamente responsable de las acciones que harás a continuación y corrés el riesgo de perder todos los datos si no procedés con precaución. Leé 2 veces cada comando antes de ejecutarlo y prestá atención a todo lo que el Sistema Operativo devuelve ante cada comando. Si pasa que la instalación toma otro rumbo desconocido, ya sea por algun error o cambio en la instalación, lo mejor es googlear en busca de la solución.
Guía Oficial
Es altamente recomendable tener siempre a mano la guía oficial de instalación de Arch Linux en inglés que tendrá todos los últimos cambios que se hayan hecho sobre la instalación así como también todas las cosas que haya que tener en cuenta ante situaciones específicas.
Antes de Empezar
Instalación en Hardware
Si estás en Windows y querés mantener el sistema operativo para poder entrar tanto a Windows como a Arch Linux, es conveniente que dejes una parte del disco sin asignar para poder instalar ahí Arch Linux. Si bien no es necesario mucho espacio para instalarlo es conveniente pensar de antemano cuánto espacio vas a necesitar.
Unos 80GB estarían bien, aunque todo depende de para que vayas a utilizar el sistema. Este particionado te recomendamos que lo hagas desde Windows, porque Linux y Windows suelen llevarse como perro y gato.
Agarrá un lapiz y un papel y anotá el tamaño de cada partición de tu disco duro. Es probable que lo necesites más adelante.
Instalación sobre una Máquina Virtual
Si vas a realizar esta instalación sobre una máquina virtual, lo conveniente es que averigues la forma en la que se puede iniciar la máquina en modo UEFI.
En caso de que utilices una máquina VMWare, esto se logra añadiendo la siguiente línea al archivo .vmx de la vm: firmware = "efi"
Si usas Virt Manager, antes de terminar de configurar la máquina virtual tienes que elegir el sistema UEFI, como se ve en la captura de pantalla. Es posible que al hacerlo te cambie el orden de los discos de arranque, que hay que volver a ajustarlos:
Otros softwares de máquinas virtuales tienen otras formas muy distintas de entrar en modo UEFI y algunos incluso no pueden hacerlo, por lo que dejamos esto en tus manos. Dicho esto, empecemos.
Preparación del medio de instalación
Bien, lo primero y principal es la preparación del dispositivo booteable con la imagen del sistema que vamos a instalar. Para eso hay que descargarlo desde la página oficial de Arch Linux y mediante un software como Rufus o Etcher y grabarlo en modo GPT para sistemas UEFI en una USB.
Luego hay que reiniciar la PC y seleccionar como medio de arranque el USB accediendo a la BIOS.
Preparando la instalación
Si todo fue bien, habrás llegado a una pantalla como la siguiente:
Ahora mismo nos encontramos en un mini Sistema Operativo cargado desde el USB en la Memoria RAM de nuestra computadora que nos servirá para poder realizar la instalación y será tu ángel guardián, nunca lo borres porque es desde donde podés solucionar gran parte de los problemas que no te permitan acceder a Linux.
Configuración de Teclado
Si te ganó la curiosidad y empezaste a escribir algo, te habrás dado cuenta que el teclado está distinto, y si no probá escribir una ñ
o un -
y vas a ver que no te hace caso y pone lo que se le da la gana.
Esto es porque por defecto el teclado viene con el layout estadounidense y tenemos que cambiarlo para poder estar cómodos con nuestro teclado. Para eso necesitamos saber en dónde vivimos (?) y qué layout corresponde.
Esta configuración tendrá efecto sólamente durante la instalación, luego veremos cómo hacerlo en el sistema instalado.
TL;DR
Si estás en latinoamérica el comando que tenés que ejecutar es el siguiente:
loadkeys la-latin1
Y para ahorrarte el trabajo, el -
está en el lugar del ?
.
Para España (tu teclado probablemente tenga alguna tecla como esta: Ç
) el comando será:
loadkeys es
Y así se puede volver al teclado estadounidense:
loadkeys us
Para los curiosos
Las distribuciones disponibles para setear las podemos listar con el comando:
ls /usr/share/kbd/keymaps/**/*.map.gz
y veremos algo como lo siguiente:
Como evidentemente no entran en la pantalla, podemos copiarlos todos en un archivo y verlos más tranquilamente con:
ls /usr/share/kbd/keymaps/**/*.map.gz > /tmp/keymaps.txt
nano /tmp/keymaps.txt
O también podemos pasarle el comando mediante una pipe a less, que formatea el output de un comando de forma en que podamos desplazarnos más cómodamente:
ls /usr/share/kbd/keymaps/**/*.map.gz | less
Teniendo ya el teclado configurado podemos continuar con la instalación.
Conectándonos a internet
Si estás conectado por cable esto no te va a tomar mucho tiempo, podés probar hacer:
ping -c 5 archlinux.org
Y habrás obtenido algo similar a esto:
En ese caso podés continuar a la siguiente sección. Sino quedate que vamos a configurar el WiFi.
El instalador de Arch Linux viene con una herramienta que nos va a servir para conectarnos al WiFi durante la instalación que se llama iwd
que se ejecuta como daemon (proceso en segundo plano) y que se configura con el comando:
iwctl
Así habrás entrado a una consola interactiva en donde podemos escribir los comandos para conectarnos al WiFi. Para ver los adaptadores de red conectados ejecutamos:
device list
Por ejemplo, podría aparecer como dispositivo wlp1s0
o wlan0
o similar. Y para ver las redes disponibles ejecutamos:
station wlan0 scan
station wlan0 get-networks
Reemplazá wlan0
por el nombre del dispositivo que vas a usar. Luego de ver las redes disponibles vamos a conectarnos.
Supongamos que la red se llama Batman
y la contraseña es B4timovil
. Entonces nos conectamos con el siguiente comando:
station wlan0 connect Batman
## Nos va a pedir la contraseña y pondremos
B4timovil
## Para salir escribimos el
## siguiente comando o apretamos Ctrl + C.
exit
Ahora probá hacer un ping
como mostré antes y podemos continuar con la instalación.
Si tu placa de red no encontró ninguna red para conectarse, o tuviste problemas para conectarte te recomiendo que te conectes al modem por cable y sigas así con la instalación. Es probable que luego de la instalación del sistema, los paquetes que instalemos te permitan conectarte al WiFi.
Configurando la fecha y hora
Ahora que tenemos nuestro instalador conectado a internet, vamos a configurar la fecha y hora.
Para eso tenemos una herramienta que nos permite consultar o modificar la fecha y hora del sistema que es timedatectl
y lo vamos a hacer así:
timedatectl set-ntp true
Con este comando ya le decimos que use internet para sincronizar la fecha y la hora. Para comprobarlo podemos usar el comando:
timedatectl status
Creando las Particiones
Ahora sí se viene lo chido... diria Luisito Comunica.
Ya que tenemos la instalación del sistema preparada, vamos a crear las particiones que vamos a necesitar.
Si ya tenés Windows instalado, entonces ya hay particiones hechas que NO TENES QUE TOCAR. Entre ellas la EFI Partition y la partición de Windows (El disco C digamos...).
En mi caso no tengo Windows instalado y crearé las particiones de cero, pero vos ya tendrás 2 o más particiones asignadas.
Para listar los discos y particiones que tenemos usamos el siguiente comando:
lsblk
Si estás en una Máquina virtual o haciendo una instalación limpia habrás visto algo como lo siguiente:
En cambio si estás instalando en una PC con windows instalado habrás visto algo más similar a lo siguiente:
O a lo siguiente:
Explicación breve
Los discos instalados los vamos identificar por verse como sda
, sdb
, etc. O en el caso de nvme (que es una unidad de almacenamiento ultra rápida) se ven como nvme0n1
. Si estás en una máquina virtual puede que se vean como vda
.
El primer disco lo vamos a ver como sda, el segundo como sdb, y así sucesivamente.
Al mismo tiempo, cada disco puede tener sus particiones, por ejemplo, sda1
, sda2
, sdb1
, sdb2
, etc.
Cada partición puede organizarse internamente de distintas formas, que son los distintos File Systems. Por ejemplo el File System por defecto de Windows es NTFS, el de un PenDrive es Fat32 y el de Linux ext4. Y cada File System puede montarse en la ubicación que deseemos. En el ejemplo vemos que mi partición nvme0n1p6
está montada en /home
o en el caso de la Máquina Virtual el único volumen sda
no está montado en ningún lugar.
Preparando las particiones
Vamos a crear algunas particiones para instalar Arch Linux que van a ser las siguientes:
-
EFI Partition
-
En esta partición están los archivos necesarios para que el Sistema Operativo arranque.
Si tenés Windows instalado, esta partición ya existe y no tenés que tocarla porque sino puede que Windows no arranque.
Si vas a instalar Arch Linux solo, o en una Máquina Virtual, vamos a asignarle unos 550MiB de espacio. Aquí estarán nuestras imágenes del kernel, el initramfs y el cargador de arranque.
-
-
Swap
-
Es una partición que sirve para que el Sistema Operativo envíe los procesos que no se están ejecutando actualmente sobre todo en equipos con poca Memoria RAM.
La partición SWAP no tiene punto de montaje ni File System.
Por regla general si tenés hasta 2GB de Ram es recomendable usar 4GB de Swap. A partir de 4GB de Ram es conveniente tener no más de 4GB de Swap.
Más swap puede ser útil si tenemos un portátil y queremos que hiberne a la Swap en vez de en Ram (teniendo alrededor de la misma cantidad de Swap que de Ram), o si tenemos que compilar proyectos grandes en los que nos podamos quedar sin Ram.
-
-
Root
- La partición de root la vamos a montar en
/
. Aquí es donde vivirán todos los archivos del sistema. A diferencia de la partición EFI, aquí tenemos varias opciones para el formato que darle, y también el número de particiones que se usarán o como se separarán los archivos.
- La partición de root la vamos a montar en
(Opción 1) Root en EXT4
Aquí explicamos cómo usar el formato EXT4 para la partición principal. Es uno de los formatos más usados y más antiguos: es fácil de configurar y ha sido muy testado en linux. Por otra parte, tiene menos características que otros sistemas como ZFS, que se detalla en la sección siguiente.
-
Root
- Si estás instalando sobre una PC real necesita tener por lo menos unos 25Gb de espacio (aunque puede ser más, en mi caso he necesitado hasta 50Gb).
-
Home
-
La partición HOME la vamos a montar en
/home
y la vamos a formatear comoext4
también.Acá van a estar todos los archivos personales (por ejemplo todo lo que está en el escritorio, la carpeta de descargas, fotos, videos, configuraciones, etc).
Vamos a asignarle todo el resto del espacio que nos sobre.
-
Ahora sí, creamos las particiones
Después de tanto blabla vamos a ejecutar el siguiente comando para crear las particiones. Una vez tengamos reconocido el disco al que instalar, en nuestro caso sda:
cfdisk /dev/sda
Si nos pregunta qué tipo de tabla de particiones queremos le decimos que vamos a usar GPT. Hasta este punto tendremos algo similar a esto:
Si tenés windows instalado es CLAVE que no toques las particiones que ya están hechas y nos vamos a enfocar en aquellas que dicen Free Space
.
Acá te podés mover con las flechas hacia arriba y abajo para seleccionar la partición, o izquierda y derecha para seleccionar una opción.
Si nos paramos en Free Space
y seleccionamos [New]
nos preguntará el espacio que le queremos asignar y vamos poner lo que ya anotamos antes, en mi caso voy a instalarlo en un disco de 120GB y lo voy a hacer de la siguiente manera:
- 550MiB para EFI Partition
- 4G para Swap
- 25G para Root
- 90G para Home
Prestá atención a cómo escribí las dimensiones.
Y con si seleccionamos [Type]
vamos a poder seleccionar el tipo.
- EFI System para la EFI Partition
- Linux Root (x86-64) para Root
- Linux Home para Home
- Linux Swap para la Swap
Sacale foto a como quedó, lo vas a necesitar. A mí me quedó algo así:
Entonces nos queda:
/dev/sda1
para EFI Partition/dev/sda2
para Swap/dev/sda3
para Root/dev/sda4
para Home
Finalmente le damos a [Write]
, confirmamos la operación y salimos con [Quit]
.
Formateando y Montando las particiones
Vamos a formatear y montar las particiones que acabamos de crear.
Como dijimos, vamos a usar ext4 como File System y vamos a formatear las particiones de Root y de Home con ese File System:
mkfs.ext4 /dev/sda3
mkfs.ext4 /dev/sda4
Ahora toca formatear la partición EFI. SOLAMENTE SI LA ACABÁS DE CREAR SINO NO EJECUTES ESTE COMANDO.
mkfs.fat -F32 /dev/sda1
Por último queda formatear la partición de Swap.
mkswap /dev/sda2
Ahora queda montar las particiones que creamos sobre el File System del instalador para poder instalar sobre ellas el Sistema Operativo.
Lo haremos de la siguiente manera:
mount /dev/sda3 /mnt # Montamos Root sobre /mnt
mkdir /mnt/home # Creamos la carpeta Home
mount /dev/sda4 /mnt/home # Montamos Home sobre /mnt/home
mkdir /mnt/boot # Creamos la carpeta Boot
mount /dev/sda1 /mnt/boot # Montamos la partición EFI sobre /mnt/boot
swapon /dev/sda2 # Activamos Swap
Y con esto ya tenemos creadas las particiones y montadas sobre el File System del USB para poder instalar el sistema.
Luego si querés saber cómo quedaron las particiones podés usar este comando:
fdisk -l
(Opción 2) Root en ZFS
Como alternativa a usar EXT4, podemos usar el formato ZFS. Este formato tiene una serie de características muy interesantes, incluyendo pero no limitado a:
-
Compresión transparente del sistema:
Todos los archivos automáticamente se comprimen y descomprimen al escribirlos al disco, reduciendo el espacio ocupado y el número de lecturas/escrituras que desgastan el disco. El algoritmo de compresión es muy rápido y no supone un gran coste de computación.
-
Encriptado nativo:
El sistema nos preguntará por la contraseña del disco al arrancar. Esto hace que si nos roban el disco, el atacante no pueda acceder a los datos del interior sin la contraseña.
-
Subvolúmenes:
Se puede entender como "particiones" dentro de nuestro disco que almacenan distintos tipos de datos. Sin embargo no tienen un tamaño fijo y se pueden crear, destruir, copiar, en cualquier momento.
-
Snapshots:
Copias de seguridad de volúmenes, que debido a cómo funcionan el sistema (Copy on Write), no ocupan espacio al crearlas, sino que empiezan a ocupar cuando hay diferencias entre el estado del volumen y la copia. Por ejemplo: si borramos un archivo de 1MB del volumen, la copia pasará a ocupar 1MB.
-
Integridad de archivos:
ZFS desconfía de los discos, y hace todo lo posible para comprobar que los archivos no se corrompan, como crear una checksum al modificarlos.
-
Otras funciones:
-
RAID nativo: usar varios discos como un disco grande en el que se puede recuperar información perdida cuando uno o algunos de los discos se rompe.
-
Deduplicación de archivos: eliminación las copias de archivos que están en dos ubicaciones distintas para ahorrar espacio.
-
ZFS send/receive (enviar volúmenes por internet)
-
Y más...
-
El punto negativo es que por problemas de licencia, los drivers no se instalan con el kernel y se tendrán que instalar por separado.
Empezamos igual que en EXT4 creando las particiones:
cfdisk /dev/sda
Actuamos muy similarmente a como se haría con ext4, nos paramos en Free Space
y seleccionamos [New]
nos preguntará el espacio que le queremos asignar y vamos poner lo siguiente:
- 550MiB para EFI Partition
- 4G para Swap
- El resto para el Root
Y con si seleccionamos [Type]
vamos a poder seleccionar el tipo.
- EFI System para la EFI Partition
- Linux Swap para la Swap
- Linux Filesystem para el Root
Finalmente le damos a [Write]
, confirmamos la operación y salimos con [Quit]
.
Instalar ZFS en el Live System
A diferencia de EXT4, los drivers de ZFS no vienen incluidos en el live system de Arch, por lo que para poder formatear nuestra partición primero tendremos que instalarlos.
Por suerte un miembro de la comunidad ha puesto a disposición un script que lo hace de forma automática:
curl -s https://eoli3n.github.io/archzfs/init | bash
Formateado de las particiones
Creamos las particiones EFI y SWAP:
mkfs.fat -F32 /dev/sda1
mkswap /dev/sda2
Para crear el volumen ZFS, la documentación de ZFS recomienda elegir el disco según su id, en vez de /dev/sd[letra]
. Para conocer su id, ejecutamos:
ls -l /dev/disk/by-id
En nuestro caso, el que apunta a /dev/sda3
es /dev/disk/by-id/ata-QEMU_HARDDISK_QM00003-part3
.
Para crear el volumen ZFS, habrá que pasar varias opciones. Se listan una debajo de otra para poder leerse mejor, aunque se pueden pasar seguidas:
zpool create -f -o ashift=12 \
-O acltype=posixacl \
-O xattr=sa \
-O relatime=on \
-O atime=off \
-O dnodesize=auto \
-O normalization=formD \
-O mountpoint=none \
-O canmount=off \
-O devices=off \
-R /mnt \
zroot /dev/disk/by-id/ata-QEMU_HARDDISK_QM00003-part3
Si queremos compresión, añadimos:
-O compression=lz4 \
Si queremos encriptado con contraseña, añadimos:
-O encryption=aes-256-gcm \
-O keyformat=passphrase \
-O keylocation=prompt \
Crear y montar los datasets
Como hemos comentado antes, en ZFS se puede crear unos "volúmenes" o datasets, con los que podemos separar partes del disco sin tener que hacer una partición para cada una.
Vamos a crear algunos datasets:
-
zroot/arch/default: aquí estarán los archivos del sistema. Antes de realizar una actualización, podemos hacerle una snapshot (copia) y si algo va mal, podemos volver a la versión anterior. También podremos instalar otros sistemas operativos bajo zroot/ubuntu, zroot/fedora, etc.
-
zroot/var/log: se montará en /var/log, y será independiente de zroot/arch, asi si algo ha ido mal y tenemos que reiniciar desde un snapshot, podremos acceder a los logs del sistema.
-
zroot/data/home: se montará en /home y tendrá los archivos de los usuarios, independiente del sistema operativo.
Los comandos serán:
zfs create -o mountpoint=none zroot/arch
zfs create -o mountpoint=/ -o canmount=noauto zroot/arch/default
zfs create -o mountpoint=none zroot/var
zfs create -o mountpoint=/var/log zroot/var/log
zfs create -o mountpoint=none zroot/data
zfs create -o mountpoint=/home zroot/data/home
Desmontamos y volvemos a montar todo para comprobar que no haya errores:
zpool export zroot
zpool import -d /dev/disk/by-id/ata-QEMU_HARDDISK_QM00003-part3 -R /mnt zroot -N
zfs load-key zroot # Sólo si hemos usado encriptado
zfs mount zroot/arch/default
zfs mount -a
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
swapon /dev/sda2
Comprobamos que esté todo correcto:
(Opción 3) Root en BTRFS
Finalmente como otra alternativa podemos usar el sistema btrfs. Se trata de un sistema que es un compromiso entre la cantidad de características de ZFS, pero fácil de instalar e incluido por defecto en el kernel, como EXT4. En Fedora 33 pasó a ser el formato de almacenamiento por defecto. Entre sus características:
-
Compresión transparente del sistema:
Todos los archivos automáticamente se comprimen y descomprimen al escribirlos al disco, reduciendo el espacio ocupado y el número de lecturas/escrituras que desgastan el disco. El algoritmo de compresión es muy rápido y no supone un gran coste de computación.
-
Subvolúmenes:
Se puede entender como "particiones" dentro de nuestro disco que almacenan distintos tipos de datos. Sin embargo no tienen un tamaño fijo y se pueden crear, destruir, copiar, en cualquier momento.
-
Snapshots:
Copias de seguridad de volúmenes, que debido a cómo funcionan el sistema (Copy on Write), no ocupan espacio al crearlas, sino que empiezan a ocupar cuando hay diferencias entre el estado del volumen y la copia. Por ejemplo: si borramos un archivo de 1MB del volumen, la copia pasará a ocupar 1MB.
Igual que en las demás opciones, empezamos creando las particiones y después les daremos el formato.
cfdisk /dev/sda
Actuamos muy similarmente a como se haría con ext4, nos paramos en Free Space
y seleccionamos [New]
nos preguntará el espacio que le queremos asignar y vamos poner lo siguiente:
- 550MiB para EFI Partition
- 4G para Swap
- El resto para el Root
Y con si seleccionamos [Type]
vamos a poder seleccionar el tipo.
- EFI System para la EFI Partition
- Linux Swap para la Swap
- Linux Filesystem para el Root
Finalmente le damos a [Write]
, confirmamos la operación y salimos con [Quit]
.
Formateando las particiones
Creamos las particiones EFI y SWAP:
mkfs.fat -F32 /dev/sda1
mkswap /dev/sda2
Para crear el sistema btrfs sólo necesitamos:
mkfs.btrfs /dev/sda3
Crear y montar los subvolúmenes
Podemos entender los subvolúmenes en btrfs como unas "carpetas" especiales. Por una parte, las podemos montar y asignar disntintos parámetros como si fuesen particiones, pero no ocupan un espacio fijo. La convención es llamar a los subvolúmenes empezando con la letra '@' para saber que es un subvol.
Igual que con ZFS, podemos organizarlos como queramos. En este tutorial proponemos la siguiente organización:
-
@arch: aquí estarán los archivos del sistema. Antes de realizar una actualización, podemos hacerle una snapshot (copia) y si algo va mal, podemos volver a la versión anterior. También podremos instalar otros sistemas operativos bajo @ubuntu, @fedora, etc.
-
@var_log: se montará en /var/log, y será independiente de @arch, asi si algo ha ido mal y tenemos que reiniciar desde un snapshot, podremos acceder a los logs del sistema.
-
@home: se montará en /home y tendrá los archivos de los usuarios, independiente del sistema operativo.
Primero montamos el sistema base de forma provisional:
mount /dev/sda3 /mnt
cd /mnt
Creamos los subvolúmenes:
btrfs subvolume create @arch
btrfs subvolume create @var_log
btrfs subvolume create @home
Si hacemos un simple ls
, podemos ver que se han creado unas carpetas con los mismos nombres. Sin embargo con btrfs subvolume list /mnt
, el comando nos dice que están registradas esas carpetas como volúmenes.
Ahora mismo el volumen por defecto de /dev/sda3
es /
, es decir, la raíz. Para evitar problemas en el arranque vamos a registrar nuestro volumen @arch
como el volumen por defecto.
btrfs subvolume set-default @arch
Ahora desmontamos el sistema y volvemos a montar todo con sus opciones. En este caso usaremos compresión transparente lzo
, que es la que ofrece un mejor rendimiento. Si queremos un sistema más comprimido podemos usar zstd
, o no
para no usar compresión (el valor por defecto si borramos la opción es ztsd
).
cd /
umount /mnt
mount -o noatime,space_cache=v2,compress=lzo /dev/sda3 /mnt
mkdir -p /mnt/{home,var/log,boot}
mount -o noatime,space_cache=v2,compress=lzo,subvol=@home /dev/sda3 /mnt/home
mount -o noatime,space_cache=v2,compress=lzo,subvol=@var_log /dev/sda3 /mnt/var/log
mount /dev/sda1 /mnt/boot
swapon /dev/sda2
Si todo ha salido bien, deberíamos ver un montaje así:
Configurando los mirrors
Los paquetes que instalamos se descargan de servidores que están repartidos por todo el mundo, hay un archivo que ahora vamos a revisar, que tiene en orden de prioridad descendente cada uno de los servidores. Normalmente ya viene configurado con los mirrors más rápidos para nuestra ubicación. Lo podemos ver con el siguiente comando:
cat /etc/pacman.d/mirrorlist
Si ves algo como lo de la imagen, entonces ya podés continuar a la próxima sección, si no, quedate que los vamos a configurar.
Vamos a usar reflector
que es una herramienta que se va a encargar de probar todos los servidores actualizados y meterlos en el archivo mirrorlist ordenados según la velocidad. Lo haremos con el siguiente comando:
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak ## Creamos un Backup por las dudas
reflector --verbose --latest 5 --save /etc/pacman.d/mirrorlist ## Hacemos la magia
cat /etc/pacman.d/mirrorlist ## Comprobamos que se han añadido los servidores
## Y si algo salió mal:
cp /etc/pacman.d/mirrorlist.bak /etc/pacman.d/mirrorlist ## Levantamos el backup.
## Sino ya podemos borrar el backup
rm /etc/pacman.d/mirrorlist.bak
## Copiamos nuestros mirrors desde el Live a nuestro sistema para no tener que recrearlo
mkdir -p /mnt/etc/pacman.d
cp /etc/pacman.d/mirrorlist /mnt/etc/pacman.d/mirrorlist
Ahora sí. Instalamos el sistema
Para instalar el sistema, el instalador de Arch Linux nos provee de una herramienta llamada pacstrap
y lo vamos a usar de la siguiente manera:
pacstrap /mnt base base-devel linux linux-firmware
Puede que tarde un rato, mientras se instala te cuento que esta herramienta va a usar los servidores que configuramos hace un ratito y va a descargar el sistema e instalarlo sobre /
, te acordás que lo montamos en /mnt
¿no?.
Luego usaremos otra herramienta llamada pacman
para instalar los paquetes.
Bien. Ya tenemos Arch Linux instalado, pero esto todavía no termina. Nos vemos en la próxima sección.
Generando el archivo fstab
¿Te acordás que hace un rato montamos las particiones a mano con el comando mount
?
Bien, hacer eso todo el tiempo es insano, por eso el Sistema Operativo tiene un archivo con la tabla de File Systems y se encarga de automatizar el proceso. Para generar ese archivo hacemos:
genfstab -U /mnt >> /mnt/etc/fstab
IMPORTANTE, sólo en ZFS: tenemos que eliminar todas las lineas del fstab que hagan referencia a nuestro zroot, dejando las demás.
Y si por curiosidad queremos verlo podemos hacer:
cat /mnt/etc/fstab
Se vería algo así:
Configurando el sistema
Lo primero es movernos al Root de nuestra máquina que creamos hace un rato y donde instalamos el sistema operativo:
arch-chroot /mnt
Para definir la zona horaria vamos a crear un Soft Link de nuestra región+ciudad.
Para ver qué regiones hay disponibles lo hacecmos con:
ls /usr/share/zoneinfo/
Y si queremos ver qué ciudad hay para una región tenemos que hacer:
ls /usr/share/zoneinfo/America/
Finalmente lo seteamos:
ln -s /usr/share/zoneinfo/America/Buenos_Aires /etc/localtime
Para configurar la hora usamos hwclock que va a generar el archivo /etc/adjtime
:
hwclock --systohc
Ahora toca configurar el idioma. Para ver los idiomas disponibles podemos ver el archivo haciendo:
cat /etc/locale.gen
Sí, ya se, no entran en la pantalla. Para ver los que nos interesan podemos usar:
cat /etc/locale.gen | grep -E "en|es" | grep UTF
Elegimos uno (o alguno) de esos. Y hacemos lo siguiente. En mi caso voy a seleccionar inglés de Estados Unidos y español de Argentina, pero vos podes seleccionar el que más te guste.
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
echo "es_AR.UTF-8 UTF-8" >> /etc/locale.gen
Y generamos los archivos de localización con:
locale-gen
Si querés ver el idioma seteado podés hacer:
locale
Y si querés cambiar el idioma podés hacer:
localectl set-locale LANG=en_US.UTF-8
Ahora seteamos el layout del teclado (si, de nuevo, pero ahora en el Sistema Operativo instalado)
echo "KEYMAP=la-latin1" > /etc/vconsole.conf
Tenemos que definir un nombre para el equipo. El mío se va a llamar archvm
y lo hacemos de la siguiente manera:
echo "archvm" > /etc/hostname
Bien, ahora tenemos que definir el archivo /etc/hosts
.
Nos va a permitir mapear algunos alias a algunas IP's específicas.
De esta manera, por ejemplo, vamos a poder usar localhost
para referirnos a nuestro equipo.
Reemplazá archvm
por el nombre de tu equipo. Revisá que esté todo bien copiado
echo -e "127.0.0.1\tlocalhost" >> /etc/hosts
echo -e "::1\t\tlocalhost" >> /etc/hosts
echo -e "127.0.1.1\tarchvm.localhost archvm" >> /etc/hosts
Tuvo que haber quedado algo así:
cat /etc/hosts
Con esto ya terminamos la parte más pesada de la instalación. Continuamos con la configuración del usuario, pero antes vemos cómo instalar paquetes.
Instalando Programas
El gestor de paquetes por defecto de Arch Linux es Pacman
, como luego vamos a tener que usarlo paso a explicar ahora como funciona. Memorizate estos comandos porque los vas a necesitar:
pacman -S <nombre_paquete> ## Instala un paquete
pacman -Rns <nombre_paquete> ## Desinstalar un paquete
pacman -Sy ## Actualiza la base de datos de los paquetes
pacman -Syu ## Actualizar todos los paquetes y el Sistema Operativo
pacman -h ## Listar las posibles opciones que te acabo de listar
Entonces vamos a instalar algunas cosas como por ejemplo un editor de texto. Yo uso vim, pero si preferís usar nano, neovim, o algun otro podés instalarlo de igual manera:
pacman -S vim
Podemos instalar varios paquetes de una también:
pacman -S vim nano htop neofetch
pss: Cuando estemos en el sistema ya instalado, logueados con nuestro usuario, vamos a tener que ejecutar este comando con sudo
Creando el usuario
Lo primero es definir la contraseña del root.
passwd
Y ahora creamos el usuario, en mi caso lo voy a llamar batman, vos llamalo como quieras. Luego le asignamos una contraseña.
useradd -m batman
passwd batman
Vamos a instalar sudo
para poder ejecutar comandos con privilegios de root.
pacman -S sudo
Luego, nos agregaremos el grupo wheel a los grupos que tienen permiso para usar sudo.
## Usamos este comando para editar el archivo
EDITOR=vim visudo
## Y descomentamos esta línea
%wheel ALL=(ALL) ALL
## Salimos de vim con ESC y escribimos :wq!
Si leíste lo que estamos haciendo, dice que hay que descomentar la línea para que todos aquellos usuarios que estén en el grupo wheel
puedan ejecutar comandos de sudo, con lo cual ahora toca asignarnos ese grupo. Aparte de eso, vamos también a asignarnos otros grupos que podrían llegar a ser necesarios:
usermod -aG wheel,audio,video,storage batman
Instalando Network Manager
Para poder conectarnos a internet en nuestro sistema ya instalado vamos a tener que usar una herramienta llamada Network Manager
, pero claro, tenemos que instalarla antes de reiniciar porque sino no vamos a tener internet para instalarlo luego.
pacman -S networkmanager
Ya tenemos instalado el servicio, pero aún tenemos que habilitarlo para que se inicie junto con el sistema operativo y quede ejecutándose:
systemctl enable NetworkManager
Todavía no nos vamos a conectar, porque seguimos con la conexión que teníamos en el instalador. Luego de reiniciar nos conectamos
(Opcional) Instalando ZFS
Si optamos por usar ZFS en el sistema, tenemos que terminar de configurarlo antes.
Como ya se ha comentado, por los problemas de licencia se deben de instalar los drivers a parte del kernel. Para EXT4 los drivers ya vienen incluidos en el kernel y no hace falta más configuración.
Lo primero que debemos de hacer es habilitar unos repositorios en los que se distribuyen los módulos de kernel ya compilados para el kernel que usar Arch.
Con nuestro editor de texto favorito, editamros /etc/pacman.conf
y añadimos al final:
[archzfs]
Server = https://archzfs.com/$repo/x86_64
Sincronizamos la base de datos de paquetes:
pacman -Syu
Para instalar los módulos del kernel deberemos instalar la versión del paquete que se corresponda con nuestro kernel. Anteriormente instalamos linux
, así que tenemos que usar el paquete zfs-linux
. Si más adelante instalamos otro kernel como linux-lts
, habrá que instalar también zfs-linux-lts
.
pacman -S zfs-linux
Después, ajustamos nuestro sistema para que pueda arrancar correctamente desde ZFS, generando el hostid
y el caché de discos:
zgenhostid
zpool set bootfs=zroot/arch/default zroot
zpool set cachefile=/etc/zfs/zpool.cache zroot
systemctl enable zfs.target
systemctl enable zfs-import-cache.service
systemctl enable zfs-mount.service
systemctl enable zfs-import.target
Editando /etc/mkinitcpio.conf
para que se incluyan los drivers de ZFS en el initramfs, en la parte "HOOKS", borramos fsck
y filesystems
y añadimos zfs filesystems
al final, quedando:
HOOKS=(base udev autodetect modconf block keyboard zfs filesystems)
Recreamos el initramfs con:
mkinitcpio -P
Finalmente nos adelantamos un paso: en la sección siguiente instala GRUB, y antes de usar grub-mkconfig
vuelve aquí.
Tenemos que editar /etc/default/grub
, para añadir los parámetros:
GRUB_CMDLINE_LINUX="dozfs root=ZFS=zroot/arch/default"
Generamos la configuración de grub con:
ZPOOL_VDEV_NAME_PATH=1 grub-mkconfig -o /boot/grub/grub.cfg
(Opcional) Instalando BTRFS
Si hemos usado btrfs como formato para nuestra partición, antes de terminar tenemos que instalar los componentes necesarios para que funcione.
pacman -S btrfs-progs
También tenemos que asegurarnos que nuestro initramfs contenga los módulos de btrfs. Editamos nuestro /etc/mkinitcpio.conf
y editamos:
# Por defecto viene vacío
MODULES=(btrfs)
Guardamos, y regeneramos el initramfs:
mkinitcpio -P
Instalando GRUB
Ahora toca instalar Grub, que es el gestor de arranque de nuestro sistema operativo. Nos va a permitir elegir el sistema operativo con el que vamos a arrancar cada vez que iniciemos la PC.
Presta atención y lee 2 veces antes de ejecutar cada comando, si lo hacés mal puede ser que no arranque el sistema operativo. Vamos a ejecutar los siguientes comandos:
## Lee bien cada comando antes de ejecutarlo
pacman -S grub efibootmgr dosfstools
grub-install --target=x86_64-efi --efi-directory=/boot
grub-mkconfig -o /boot/grub/grub.cfg
Finalizando y primer reinicio
Luego hay que cruzar los dedos, reiniciar y sacar el pen drive
exit
umount -R /mnt
# Solo si usamos ZFS
zfs unmount -a
zpool export zroot
reboot
Si todo salió bien, al reiniciar se habrá iniciado GRUB y te dió a elegir la posibilidad de entrar a Arch Linux habiendo llegado a algo como esto:
Ponemos nuestro usuario y contraseña y ya hemos terminado con la instalación del Sistema Operativo.
Conectándonos a Internet (de nuevo)
Sí, ya sé que nos habíamos conectado a internet antes con iwctl
, pero eso fue en el instalador, ahora si ya tenes el PC conectado por cable, podés continuar. Sino quedate que vamos a conectarnos al WiFI.
Network Manager nos ofrece nmcli
para conectarnos al WiFi. Si por ejemplo nuestra Red Wifi se llama Batman
y la contraseña es B4timovil
:
nmcli device wifi list ## Listar las redes disponibles
nmcli device wifi connect Batman pasword B4timovil
Si tu Red WiFi o contraseña tiene espacios, ponela entre comillas.
Comandos útiles
Ya tenemos una bella, hermosa, y muy poco intuitiva terminal.
Por eso te voy a dejar acá algunos comandos útiles. No te olvides que de todas formas google existe!.
ping archlinux.org ## Comprobar si tenemos conexión a internet
reboot ## Reiniciar
shutdown now ## Apagar
ls -l ## Listar todos los archivos del directorio actual
cd <nombreDirectorio> ## Cambiar de directorio
cd .. ## Volver hacia atrás
cd ~ ## Ir a la carpeta home
pwd ## Saber en qué directorio estás
cat <nombreArchivo> ## Leer un archivo de texto
CTRL + C ## Para parar una ejecución
Repositorios de la Comunidad
A veces los repositorios oficiales de Arch Linux (esos que usa pacman
para descargar cosas) no tienen todo lo que queremos (Y sinó hace un sudo pacman -S google-chrome
y fijate que pasa).
Por eso hay repositorios de la comunidad (AUR) que nos van a facilitar la vida.
Instalando Yay (Opción 1)
En este caso vamos a usar Yay. Para poder instalarlo tenemos que ejecutar esta secuencia de comandos:
sudo pacman -Sy git
cd /tmp
git clone https://aur.archlinux.org/yay-git.git
cd yay-git
makepkg -sric ## Se compilará e instalará
cd ~ ## Volvemos a nuestro home
rm -rf /tmp/yay-git # Ya no necesitamos esto, yay es capaz de actualizarse a él mismo
Y con esto ya podemos instalar paquetes con yay
. Lo bueno es que tiene casi las mismas opciones que pacman
. Entonces, lógicamente para instalar un paquete con yay
tenemos que ejecutar:
yay -S <nombrePaquete> ## Mirá que no puse sudo
Y para actualizar todos los paquetes... sí, adivinaste:
yay -Syu
Instalando Paru (Opción 2)
Otra opción para los repositorios de la comunidad es usar Paru. Para instalarlo tenemos que ejecutar esta secuencia de comandos:
sudo pacman -Sy git
cd /tmp
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si ## Se compilará e instalará
cd ~ ## Volvemos a nuestro home
rm -rf /tmp/paru # Ya no necesitamos esto, paru es capaz de actualizarse a él mismo
Comandos básicos:
paru <target> ## Buscar e instalar el paquete
paru ## Actualizar todos los paquetes, es un alias de paru -Syu
paru -S <target> ## Instalar un paquete en específico
paru -Sua # Actualizar los paquetes de AUR
paru -Qua ## Ver las actualizaciones de paquetes de AUR disponibles
Instalando Flatpak (Opcional)
Muchas veces los programas que instalamos tienen dependencias que pueden conflictuar entre ellas, por eso la gente maravillosa de Flatpak también tiene un gestor de paquetes que instala cada uno de ellos con sus dependencias de manera aislada; recomiendo utilizarlo para programas grandes, como por ejemplo una suite de office. Instalarlo es muy sencillo
sudo pacman -S flatpak
Para usarlo es bastante simple
flatpak install <target> ## Instalar un paquete
flatpak update <target> ## Actualizar un paquete
flatpak uninstall <target> ## Desinstalar un paquete
flatpak list ## Listar todos los paquetes
Acá vas a encontrar una lista de apps que se pueden instalar con Flatpak
Reiniciamos y ya tendremos nuestros gestores de paquetes instalados
Instalando un Entorno de Escitorio
Arch Linux viene pelado, le tenemos que instalar un entorno de escritorio para poder usarlo.
Te dejo algunos que seguro ya conocés de otras distribuciones, pero tené en cuenta que hay más y que hay todo un mundo y una vez que entrás ya no podés salir (googleá qtile
, xmonad
, i3
, etc)
KDE Plasma
Al principio es feo como golpearse el dedo chiquito del pie con la pata de la cama, pero con un poco de amor puede quedar muy bien.
sudo pacman -S xorg ## Gestiona la comunicación con los distintos periféricos y nuestro SO
sudo pacman -S plasma-meta kde-applications-meta ## Instalamos KDE Plasma
sudo systemctl enable sddm ## Habilitamos el servicio que nos permitirá loguearnos en el siguiente inicio
reboot
Paciencia, esto va a tardar un rato.
Una vez instalado y reiniciado, aparecerá la pantalla para iniciar sesión.
Si estás en vmware y no podés cambiar la resolución: System Settings > Startup and ShutDown > Background Services > Disable KScreen2
Si por algun motivo, ves que aparece algo como esto:
WARNING: Possible missing firmware for moudule: wd719x
WARNING: Possible missing firmware for moudule: aic94xx
WARNING: Possible missing firmware for moudule: xhci_pci
No te hagas problema que lo solucionamos más tarde.
Optimizando del sistema
Configuración de Pacman
Usando nuestro editor favorito, vamos a cambiar unas opciones de configuración de pacman.
Para empezar, abrimos /etc/pacman.conf
, y cambiaremos:
Color # Por defecto viene comentado, activa los colores en la salida de los comandos
ParallelDownloads = 5 # Descargar varios paquetes a la vez, en vez de uno a uno
Ahora abriremos /etc/makepkg.conf
y editamos las líneas en las que se encuentran...
# Usar todos los nucleos disponibles cuando nos encontremos con paquetes que haya que compilar.
MAKEFLAGS="-j$(nproc)"
# Compilar los paquetes necesarios desde la RAM en vez del disco duro. Reducimos el desgaste del disco y aceleramos la compilación. No usar si tenemos <4GB RAM.
BUILDDIR=/tmp/makepkg
Cuando hagamos una actualización al sistema, puede que haya archivos de configuración en /etc
que también haya que actualizarlos. Para ello podemos usar la herramienta:
yay -S etc-update
# Después de hacer yay -Syu, ejecutamos
sudo etc-update
Durante la instalación, ya configuramos los mirrors. Si en el futuro alguno de estos mirrors se cae o se se vuelve lento, seguirá en nuestra configuración, pero no queremos eso. Instalamos reflector
en nuestro sistema y lo configuramos:
yay -S reflector
Configuramos reflector para que use los mirrors más rápidos y recientes, editando el archivo /etc/xdg/reflector/reflector.conf
:
--save /etc/pacman.d/mirrrorlist
--protocol https
--latest 30
--sort rate
sudo systemctl enable --now reflector.timer
Ananicy (Nice daemon)
Una herramienta que podemos instalar se llama "Ananicy", que automaticamente establece las prioridades de los procesos para que el sistema responda mejor.
yay -S ananicy
sudo systemctl enable --now ananicy
SSD TRIM
Para reducir el desgaste en nuestro SSD, tenemos que hacer un TRIM cada cierto tiempo. Se puede activar con:
sudo systemctl enable --now fstrim.timer
En ZFS podemos activarlo con:
sudo zpool set autotrim=on zroot