Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:linux:arch_linux

Arch Linux

Distribución de Linux ligera y flexible.

Instalación

Completar todos los pasos de la instalación

Descargar la ISO

Grabación de la ISO en un pendrive con dd:

dd bs=4M if=ruta/archlinux.iso of=/dev/sdx status=progress conv=fsync oflag=direct

Donde sdx es el dispositivo donde se escribirá la imagen de Arch Linux. Hay que poner el dispositivo, no la partición, es decir, sdb, no sdb1.

Para saber el nombre del dispositivo USB podemos usar el comando lsblk

El dispositivo USB no debe estar montado.

archinstall

Script para asistir en la instalación de Arch Linux. No es el método recomendado para instalar, pero ayuda mucho.

Una vez arrancada la ISO de Arch Linux, ejecutamos el comando archinstall.

Desde el 01/04/2021 Arch Linux vuelve a tener un instalador

Disposición de teclado en consola

Por defecto, la distribución es la americana, si queremos establecer la española:

loadkeys es

Si tenemos una pantalla de alta resolución o demasiado pequeña, podemos establecer la siguiente fuente para la consola que es mucho mayor de la que viene por defecto:

setfont ter-132b

Conexión a Internet

Verificamos el estado de las interfaces de red con:

ip link

Ejemplo de salida (resumido):

enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 11:de:33:04:06:fc brd ff:ff:ff:ff:ff:ff

Nos fijamos en:

<BROADCAST,MULTICAST,UP,LOWER_UP>

Si aparece UP es que la interfaz está funcionando. Verificamos si tenemos conectividad con Internet:

ping archlinux.org

Actualizando el reloj del sistema

Si tenemos conexión a Internet, el reloj se habrá sincronizado automáticamente. Podemos verificarlo con:

timedatectl

Particionado de discos

Si no existe, creamos un esquema de particionado. Tradicionalmente se usaba MBR, pero hoy en día tiene más sentido algo moderno como GPT (GUID Partition Table) que tiene más ventajas.

Podemos usar fdisk o cfdisk (más cómodo) para crear las particiones. Un ejemplo de particionado podría ser:

  • Al menos 300 MiB para ESP (EFI System Partition)
  • Más de 512 MiB para la partición de intercambio (swap)
  • 227,7 GiB para el sistema

Formato de particiones

Una vez creadas, debemos darle el formato adecuado a cada partición.

  • Partición ESP: mkfs.fat -F 32 /dev/sda1
  • Partición linux: mkfs.ext4 /dev/sda3

En cuanto a la swap, la inicializamos con mkswap /dev/sda2

Montaje del sistema de ficheros

Partición Linux (donde se instalará Arch Linux):

mount /dev/sda3 /mnt

Partición ESP:

mount --mkdir /dev/sda1 /mnt/boot/efi

Activamos la partición para la swap:

swapon /dev/sda2

Instalación de paquetes esenciales

pacstrap -K /mnt base linux linux-firmware networkmanager vim grub efibootmgr

Configuración del sistema

Creamos el fichero fstab:

genfstab -U /mnt >> /mnt/etc/fstab

Podemos revisar el fichero /mnt/etc/fstab a ver si es correcto.

Enjaulamos root:

arch-chroot /mnt

Establecemos nuestra zona horaria. Por ejemplo, para España:

ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime

Generamos el fichero /etc/adjtime:

hwclock --systohc

El comando anterior asume que el reloj de la BIOS está configurado como UTC.

Editamos el fichero /etc/locale.gen y descomentamos (en caso del español) es_ES.UTF-8 UTF-8. Generamos archivos de regionalización:

locale-gen

Creamos el fichero /etc/locale.conf con los valores adecuados:

LANG=es_ES.UTF-8

Establecemos la disposición de teclado para la consola en /etc/vconsole.conf:

KEYMAP=es

En cuanto a la configuración de red, primero creamos el fichero /etc/hostname y ponemos el nombre del equipo, por ejemplo:

arch

Establecemos la contraseña del usuario root:

passwd

Podemos aprovechar a crear un usuario y añadirlo a los grupos habituales:

useradd -m -g users -G wheel,storage,power -s /bin/bash <NOMBRE_USUARIO>

Ponemos contraseña al nuevo usuario:

passwd <NOMBRE_USUARIO>

Para poder tener acceso de administrador en ciertos usuarios, instalamos sudo:

pacman -S sudo

Editamos el fichero /etc/sudoers para descomentar la línea:

# %wheel ALL=(ALL) ALL

Instalamos un gestor de arranque como GRUB:

grub-install /dev/sda --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
  • --efi-directory especifica dónde hemos montado la partición ESP.

Si estamos en sistemas que usan BIOS (o CSM), la instalación sería:

grub-install --target=i386-pc /dev/sda

Generamos el fichero de configuración de GRUB:

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

Habilitamos NetworkManager:

systemctl enable NetworkManager

Salimos del entorno chroot con exit y reiniciamos.

Post-instalación

Programas / Aplicaciones

Lo que suelo instalar:

terminus-font base-devel bash-completion xorg-server xorg-xinit xterm rxvt-unicode alacritty git openbox openbox-menu openbox-themes tint2 obconf networkmanager vim sudo fakeroot gmrun htop unzip unrar unp alsa-utils pulseaudio pulseaudio-alsa pavucontrol filezilla openssh mupdf libreoffice-fresh-es setxkbmap numlockx  moc-pulse mpv vlc ffmpeg gvfs-smb virtualbox virtualbox-guest-iso virtualbox-ext-oracle virtualbox-host-modules-arch network-manager-applet pnmixer feh udiskie docker docker-compose hwinfo simple-scan nicotine+ brother-dcp-l2530dw brscan5 cups cups-pdf transmission-gtk file-roller pcmanfm torbrowser-launcher qalculate-gtk heidisql wine wine-gecko wine-mono wget gimp inkscape system-config-printer android-tools mtr qtile firefox-i18n-es-es volumeicon nm-applet gnome-themes-extra oblogout-py3-git telegram-desktop ttf-inconsolata ttf-iosevka vim-jellybeans

En el portátil, además de las anteriores, suelo instalar:

xf86-input-libinput xorg-xinput xorg-xbacklight

Sincronizar fecha y hora

Si va a ser en un equipo que no está funcionando todo el tiempo, es recomendable usar chrony:

pacman -S chrony

Editamos la configuración en /etc/chrony.conf:

server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst

Para usar chrony sin nuestra intervención, podemos habilitar el servicio:

systemctl enable chronyd

Si queremos arrancar el servicio sin esperar a reiniciar el equipo:

systemctl start chronyd

A partir de este momento, chrony se encargará de sincronizar automáticamente la fecha y hora del sistema.

Sonido

Hay que activarlo, ya que viene silenciado por defecto. Instalamos alsa-utils para tener disponibles los programas amixer y alsamixer

amixer sset Master unmute
amixer sset Speaker unmute
amixer sset Headphone unmute

Repositorios

Si queremos instalar programas y bibliotecas para aplicaciones de 32 bits en sistemas de 64 bits, necesitaremos habilitar el repositorio multilib. Editamos el fichero /etc/pacman.conf y descomentamos las líneas:

[multilib]
Include = /etc/pacman.d/mirrorlist

TTY y caracteres latinos

Para poder usar y mostrar caracteres como € en una consola real (TTY), editamos el fichero /etc/vconsole.conf y lo dejamos tal que así:

FONT=lat9w-16
KEYMAP=es
KEYMAP_TOOGLE=euro2

Administración

Actualizar el sistema

sudo pacman -Syu

Si además quisiéramos forzar la descarga de la base de datos de paquetes del servidor:

sudo pacman -Syyu

pacman

Listar aplicaciones instaladas

Sin mostrar las dependencias:

pacman -Qet

Contar número de paquetes instalados

pacman -Q | wc -l

Gestión de paquetes

AUR

  1. Clonar repositorio
  2. Entrar en el directorio
  3. Ejecutar makepkg -si

La última orden descargará el código, resolverá las dependencias con pacman, compilará, empaquetará e instalará el paquete.

Yay

sudo pacman -S git

Clonamos el repositorio de yay:

git clone https://aur.archlinux.org/yay.git

Nos metemos en el repositorio descargado, creamos e instalamos el paquete:

cd yay
makepkg -si

Para colorear la salida de yay, abrir el fichero /etc/pacman.conf y descomentar la línea que pone #Color.

Mantenimiento

Limpieza

Limpiar caché de paquetes (tanto instalados como no instalados):

sudo pacman -Scc

Eliminar paquetes huérfanos:

sudo pacman -Rns $(pacman -Qtdq)

Limpieza de caché en el directorio personal de usuario:

rm -rf ~/.cache/*

Con du -sh ~/.cache/ podemos ver el tamaño ocupado por el directorio de caché en la carpeta personal del usuario actual.

Limpiar el journal de Systemd:

sudo journalctl --vacuum-size=50M

Con el comando anterior, mantendríamos solo 50 M de ficheros de registro (/var/log/journal)

Resolución de problemas

dmesg no permitido

Desde la versión 5.10.4, se ha habilitado SECURITY_DMESG_RESTRICT que impide el uso de dmesg para usuarios sin privilegios. Para obtener un resultado similar a dmesg, pero sin necesidad de permisos especiales, podemos usar journalctl de la siguiente manera:

journalctl -ko short-monotonic --no-hostname

Error cargando kernel

Al intentar cargar el sistema, tras pasar del GRUB:

(...)
loading /boot/vmlinuz-linux not found.

La solución pasa por arrancar desde un medio de instalación de Arch Linux y:

# Montamos la partición donde esté instalado el sistema (/dev/sda1, por ejemplo):
mount /dev/X /mnt
# Si tuviésemos el directorio /boot en una partición aparte:
# mount /dev/Y /mnt/boot
arch-chroot /mnt
pacman -S linux 
pacman -S mkinitcpio

Y luego reiniciamos.

Problemas con yay

Lo más sencillo es eliminar y volver a instalar desde el repositorio git.

Primero desinstalamos el yay que tengamos en el sistema:

pacman -Rnsc yay

Clonamos el repositorio git:

git clone https://aur.archlinux.org/yay.git

Entramos en el directorio recién creado:

cd yay

Creamos el paquete:

makepkg

Instalamos el paquete:

sudo pacman -U yay-xxxxxx.pkg.tar.xz

Los dos últimos pasos se podrían hacer en un único comando: makepgk -si

Problemas con las firmas de los paquetes

Ejemplo:

error: python-orjson: la firma de «David Runge <dvzrv@archlinux.org>» es de confianza mínima
:: El archivo /var/cache/pacman/pkg/python-orjson-3.7.8-1-x86_64.pkg.tar.zst está dañado (paquete no válido o dañado (firma PGP)).
¿Quiere eliminarlo? [S/n]

Esto se debe a que las claves que tenemos de los desarrolladores no están actualizadas. Podemos actualizarlas de dos maneras:

Actualizar el paquete archlinux-keyring:

sudo pacman -S archlinux-keyring

Otra opción es:

# pacman-key --refresh-keys

Última alternativa para volver a generar claves de cero:

# Eliminamos el directorio que contiene todas las claves:
sudo rm -rf /etc/pacman.d/gnupg 

# Ejecutamos:
pacman-key --init

# Ejecutamos:
pacman-key --populate

Instalar o reinstalar GRUB

Esto no es propio de Arch Linux, pero usaremos la ISO de Arch para hacer todo el proceso.

Estas instrucciones están centradas en sistemas que soportan UEFI.

Primero, grabamos la ISO de Arch Linux y arrancamos el sistema con el GRUB a reparar.

Ya desde la ISO de Arch Linux, montamos la partición en la que esté un sistema Linux. Por ejemplo, si está en /dev/sda2:

mount /dev/sda2 /mnt

Identificamos dónde está instalada la partición EFI. Por ejemplo, podemos usar fdisk:

fdisk -l /dev/sda

La partición que sea de tipo EFI System o EFI es la que nos interesa. Para verificarlo, montamos esa partición:

mount /dev/sda1 /mnt/boot/efi

Si tiene un directorio llamado EFI, se trata efectivamente de ESP (EFI System Partition).

Montamos la partición raíz, por ejemplo, si la tenemos en /dev/sda3:

mount /dev/sda3 /mnt

Entramos en modo chroot:

arch-chroot /mnt

Instalamos los paquetes necesarios:

pacman -S grub efibootmgr os-prober

Si no tenemos otro sistema operativo instalado, podemos obviar os-prober

Instalamos GRUB:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

Editamos el fichero /etc/default/grub para descomentar (si no lo estuviera) la línea:

#GRUB_DISABLE_OS_PROBER=false

Si no lo hacemos, os-prober no se ejecutará y no buscará otros sistemas operativos instalados para crear las entradas correspondientes en la configuración de GRUB.

Generamos el fichero de configuración de GRUB:

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

Reiniciamos:

reboot

No se pudo bloquear la base de datos

Cuando pacman va a tocar la base de datos de paquetes, por ejemplo cuando va a instalar un paquete, crea un fichero de bloqueo en /var/lib/pacman/db.lck. Esto previene que otra instancia de pacman modifique la base de datos al mismo tiempo.

Si por alguna circunstancia este fichero existe y estamos seguros de que no hay ninguna instancia de pacman en ejecución, podemos borrar el fichero:

rm /var/lib/pacman/db.lck

No se pudo descargar community.db

Al tratar de actualizar repositorios, obtenemos un error similar a:

:: Sincronizando las bases de datos de los paquetes...
 core está actualizado
 extra está actualizado
 no se pudo descargar community.db
error: no se pudo obtener el archivo «community.db» desde es.mirrors.cicku.me: The requested URL returned error: 404
error: no se pudo obtener el archivo «community.db» desde es.mirrors.cicku.me: The requested URL returned error: 404
error: no se pudo obtener el archivo «community.db» desde mirror.cloroformo.org: SSL certificate problem: self-signed certificate
error: no se pudo obtener el archivo «community.db» desde mirror.librelabucm.org: The requested URL returned error: 530
error: no se pudo obtener el archivo «community.db» desde mirror.librelabucm.org: The requested URL returned error: 530
error: no se pudo obtener el archivo «community.db» desde mirrors.marquitos.space: Connection timed out after 10001 milliseconds
error: no se pudo obtener el archivo «community.db» desde mirrors.marquitos.space: Connection timed out after 10000 milliseconds
error: no se pudo obtener el archivo «community.db» desde nox.panibrez.com: Connection timed out after 10002 milliseconds
error: no se pudo obtener el archivo «community.db» desde mirror.raiolanetworks.com: The requested URL returned error: 404
error: no se pudo obtener el archivo «community.db» desde mirror.raiolanetworks.com: The requested URL returned error: 404
error: no se pudo obtener el archivo «community.db» desde ftp.rediris.es: The requested URL returned error: 404
error: no se han podido sincronizar todas las bases de datos (no se pudieron descargar algunos archivos)
 -> error refrescando las bases de datos - exit status 1

La explicación es que hace unos años se fusionó el repositorio [community] con [extra].

La solución es eliminar los siguientes repositorios del fichero /etc/pacman.conf:

  • [community]
  • [community-testing]
  • [testing]
  • [testing-debug]
  • [staging]
  • [staging-debug]

Configuración

Esto solo sirve para el entorno gráfico.

Podemos ver si hay alguno establecido por defecto:

xdg-settings get default-web-browser

Si queremos poner Firefox como navegador por defecto:

xdg-settings set default-web-browser firefox.desktop

Recursos

informatica/sistemas_operativos/linux/arch_linux.txt · Última modificación: por tempwin