Guía de instalación de arch linux base

22 de marzo de 2016 • fjbalon

Adentrándonos en el vasto universo de Unix y GNU/Linux, en especial en su distributismo característico; Arch Linux se presenta como una distro recomendada a usuarios avanzados y con cierto conocimiento técnico dentro del cosmos de Linux. Arch presenta un enfoque minimalista y KISS (Keep It Simple, Stupid) y, en cierto modo, Do It Yourself.

Esta distribución tiene sus raíces en 2002, cuando Judd Vinet la construyó en un enfoque de entorno simple y elegante, permitiendo a sus usarios modelar su sistema de acuerdo a sus necesidades y preferencias. Se trata además de un sistema de actualización rolling release, lo que aporta un mantenimiento continuo sin necesidad de reinstalaciones periódicas; característica que, unida a su gestor de paquetes pacman ofrece una experiencia de usuario ágil y, sobretodo, rápida de gestión de las últimas versiones del software.

Realmente, el uso de Arch es muy simple, siendo incluso más simple que distribuciones basadas en Debian (sobretodo, por su gestor de paquetes, que lo hace excesivamente sencillo de utilizar incluso para un novato). Sin embargo, si hay una barrera de entrada para comenzar a usar este sistema operativo no es otra que cosa que la instalación. La instalación del sistema no cuenta con formularios gráficos ni diálogos que guien al usuario; sino simplemente ofrece una sesión de shell y otorga libertad total sobre ella al usuario.

Es por esta razón que he compendiado los pasos que realizó personalmente a la hora de construir mi sistema de Arch.

El inicio es sencillo, el console keymap por defecto es US (inglés americano). Para modificar el diseño, se puede agregar el nombre de layout correspondiente. Por ejemplo, para establecer una distribución de teclado en español utilizo:

loadkeys es

Verificación de modo de arranque (boot mode)

En términos simples, la BIOS (Sistema Básico de Entrada/Salida) y UEFI (Interfaz de Firmware Extensible Unificada) son dos tecnologías diferentes utilizadas para iniciar un sistema operativo en una computadora.

La BIOS, que significa Sistema Básico de Entrada/Salida, ha sido la interfaz estándar durante décadas. Se encarga de las operaciones básicas del sistema, incluido el proceso de arranque. Sin embargo, tiene limitaciones en cuanto a la capacidad de manejar discos duros grandes y sistemas operativos modernos.

Por otro lado, UEFI, que significa Interfaz de Firmware Extensible Unificada, es una tecnología más reciente que reemplaza gradualmente a la BIOS. UEFI proporciona una interfaz más avanzada y versátil, permitiendo un arranque más rápido y una mayor capacidad para gestionar hardware y sistemas operativos modernos. Además, UEFI supera las limitaciones de tamaño de disco asociadas con la BIOS.

Para verificar el modo de arranque, bastaría listar el directorio efivars:

ls /sys/firmware/efi/efivars

Si la salida muestra el contenido del directorio (stdout) sin error, entonces el sistema de inicio es UEFI. Si por el contrario ofrece error (stderr) debido a que el directorio no existe, entonces el sistema se inicia en modo BIOS (ó CSM).

Conexión a Internet

Si tenemos comunicación ethernet con salida a Internet, bastaría conectarlo; generalmente el DHCP trabajará solo. De lo contrario será necesario establecer conexión con la red a través de WiFi (siempre que el equipo cuente con el hardware necesario). Utilizaremos iwctl para autenticarnos a la red inalámbrica, identificaremos la interfaz de red, escanearemos las conexiones WiFi disponibles y conectaremos con la que identifiquemos por su SSID:

iwctl
[iwd]# device list
[iwd]# station d scan
[iwd]# station d get-networks
[iwd]# station d connect SSID

Particionado de discos

Cuando son reconocidos por el sistema live, los discos son asignados a un dispositivo de bloques como /dev/sda, /dev/nvme0n1 ó /dev/mmcblk0. Para identificar estos dispositivos, utilice lsblk ó fdisk. El siguiente presupondrá la siguiente partición de discos:

boot    /dev/sda1   /boot   150MB   *Bootable
root    /dev/sda2   /       -
home    /dev/sda3   /home   -
swap    /dev/sda4   /swap   2GB     Type: Linux Swap / Solaris

Formateo de particiones

Una vez particionados los discos y sus particiones, éstas deben ser formateadas con un sistema de archivos apropiado.

mkfs.vfat -F32 $boot # UEFI
mkfs.ext2 $boot # BIOS
mkfs.ext4 $root
mkfs.ext4 $home
mkswap $swap
swapon $swap

Montaje de sistema de archivos

El montaje en el directorio /mnt debe comenzar siempre con la raíz:

mount $root /mnt
mkdir -p /mnt/boot/efi && mount $boot /mnt/boot/efi # UEFI
mkdir /mnt/boot && mount $boot /mnt/boot # BIOS
mkdir /mnt/home && mount $home /mnt/home

Instalación del sistema base

Los paquetes a instalar se descargarán de los servidores espejo, que se definen en /etc/pacman.d/mirrorlist. Cuanto más alto se coloca un espejo en la lista, más prioridad se le da al descargar un paquete; por lo que es posible que desee inspeccionar el archivo para ver si se encuentra en una prioridad deseable. Si no fuera así, edite el archivo en consecuencia y mueva los espejos geográficamente más cercanos a la parte superior de la lista (aunque existen otros criterios).

Use el script pacstrap para instalar el paquete base, el kernel de Linux y el firmware para hardware común:

pacstrap /mnt base linux linux-firmware

Puede sustituir linux por un paquete de kernel de su elección, por supuesto. Tenga en cuenta que el paquete base no incluye todas las herramientas de la instalación en vivo, por lo que la instalación de otros paquetes puede ser necesaria para mantener el sistema base funcional. Como es mi caso, que añado:

pacstrap /mnt base-devel grub networkmanager nano dhcpcd
pacstrap /mnt efibootmgr # UEFI

Configuración del sistema base

Generamos el archivo /etc/fstab, que contiene los parámetros de configuración de montaje de los distintos sistemas de archivos para el sistema. Puede usar -U ó -L para definir por UUID o labels, respectivamente). Después, nos enjaularemos en la partición montada en /mnt con chroot:

genfstab -U -p /mnt >> /mnt/etc/fstab
arch-chroot /mnt

Una vez enjaulados, podemos proceder a realizar parametrizaciones y configuraciones propias del sistema operativo en instalación, como son la zona horario, la localización y el mapa de teclas (keymap):

ln -s /usr/share/zoneinfo/Europe/Madrid /etc/localtime
echo "LANG=es_ES.UTF-8" >> /etc/locale.conf
echo "es_ES.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
echo "KEYMAP=es" >> /etc/vconsole.conf
hwclock -w

También configuraremos el hostname e instalaremos los paquetes adicionales a través de pacman:

echo $hostname >> /etc/hostname
pacman -Sy --noconfirm git tree openssh openvpn gnupg nmap ipcalc pulseaudio pulseaudio-alsa pavucontrol pamixer acpi acpid

Configuración de usuario

La nueva instalación le dejará sólo con una cuenta de root. Iniciar sesión como root durante períodos prolongados de tiempo o exponerlo a través de SSH en un servidor es altamente inseguro. Por ello, le recomiendo (según sus necesidades) crear y usar una cuenta de usuario sin privilegios, que empleará en la mayoría de las tareas de usuario, dejando la cuenta root para la administración del sistema. Además, añadiremos al grupo wheel, grupo al que pertenece el nuevo usuario creado, permisos de sudo.

useradd -m -g users -G audio,lp,optical,storage,video,wheel,games,power,scanner -s /bin/bash $username
passwd # clave de root
passwd $username
echo "%wheel ALL=(ALL) ALL" >> /etc/sudoers

Arch User Repository [AUR]

Si bien el Sistema de Compilación de Arch (Arch Build System) permite la capacidad de compilar software disponible en los repositorios oficiales, el Repositorio de Usuarios de Arch (Arch User Repository - AUR) es el equivalente para los paquetes enviados por el usuario. Para poder usarlo es necesario un software de gestión de paquetes especializado, como yay:

git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
yay -Syu

Configuración del gestor de arranque (bootloader)

Elija e instale un gestor de arranque compatible con Linux. En este caso yo uso grub:

grub-install --efi-directory=/boot/efi --bootloader-id='Arch Linux' --target=x86_64-efi # UEFI
grub-install /dev/sda # BIOS
grub-mkconfig -o /boot/grub/grub.cfg

Initframs

Por lo general, no es necesario crear un nuevo initramfs, ya que mkinitcpio se ejecutó en la instalación del paquete del kernel con pacstrap. Tenga en cuenta que para LVM, cifrado del sistema o RAID será necesario modificar mkinitcpio.conf y volver a crear la imagen initramfs.

mkinitcpio -p linux