From 6153c5fe9cb21e81bc5cc7789d4dafa96427725d Mon Sep 17 00:00:00 2001 From: tavo Date: Fri, 27 Dec 2024 22:29:58 -0600 Subject: [PATCH] arch install guide --- content/blog/2024-12-27-arch-install-guide.md | 257 ++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 content/blog/2024-12-27-arch-install-guide.md diff --git a/content/blog/2024-12-27-arch-install-guide.md b/content/blog/2024-12-27-arch-install-guide.md new file mode 100644 index 0000000..657ab76 --- /dev/null +++ b/content/blog/2024-12-27-arch-install-guide.md @@ -0,0 +1,257 @@ +--- +title: "Guía de instalación de archlinux" +date: 2024-12-27 +--- + +# Bootear el entorno y preparar el sistema + +En caso de tener un teclado con una disposición distinta a `us`: + +```sh +localectl list-keymaps # Listar keymaps disponibles +loadkeys mi-keymap # Cargar un keymap +``` + +## Particionar discos + +```sh +# listar los discos: +# fdisk -l + +fdisk /dev/sdx +``` + +La configuración mínima para UEFI son dos particiones: + +- Partición que será montada en `/boot` de al menos `1G` +- Partición que será montada en `/` de al menos `23G` + +NOTA: En el resto de la guía, se asume que las particiones + +- `sdx1` es la partición EFI que será montada en `/boot` +- `sdx2` será montada en `/` + +## Encripción (opcional) + +```sh +cryptsetup luksFormat /dev/sdx2 +cryptsetup open /dev/sdx2 cryptlvm +``` + +Necesitaremos los UUIDs de la partición encriptada y de cryptlvm para más adelante, es buena idea +guardarlos: + +```sh +# El primero es crypto_LUKS y el segundo es la partición root desencriptada +lsblk -f | grep 'crypto_LUKS\|cryptlvm' | awk '{print $4}' +``` + +## Formato + +```sh +mkfs.ext4 /dev/sdx2 +mkfs.fat -F 32 /dev/sdx1 +``` + +## Montar + +```sh +mount /dev/sdx2 /mnt +# mount /dev/mapper/cryptlvm /mnt # <- En caso de usar encripción +``` + +```sh +mkdir -p /mnt/boot +mount /dev/sdx1 /mnt/boot/ +``` + +## Pacstrap + +```sh +pacstrap -K /mnt base linux linux-firmware grub networkmanager efibootmgr + +# No olvidar el editor de texto, por ejemplo vim o nano +pacstrap -K /mnt vim + +# pacstrap -K /mnt cryptsetup lvm2 # <- En caso de usar encripción +``` + +# Configurar el sistema + +```sh +genfstab -U /mnt >> /mnt/etc/fstab +``` + +A partir de ahora, estaremos dentro del sistema que estamos instalando, con el comando: + +```sh +arch-chroot /mnt +``` + +## Locale + +```sh +# ln -sf /usr/share/zoneinfo/Region/City /etc/localtime +ln -sf /usr/share/zoneinfo/America/Costa_Rica /etc/localtime +``` + +Luego: + +```sh +hwclock --systohc +``` + +Editar `/etc/locale.gen` y descomentar las locales requeridas, por ejemplo: +`#es_CR.UTF-8 UTF-8` + +Luego, generarlas con: + +```sh +locale-gen +``` + +Crear el archivo `/etc/locale.conf` y configurar el lenguaje agregando la línea +(o cualquier otra locale de preferencia): + +```sh +LANG=es_CR.UTF-8 +``` + +## Redes + +Definir el hostname en `/etc/hostname`, escribiendo por ejemplo: `arch-pc` +o el hostname deseado. + +Configurar `/etc/hosts`, una configuración mínima de ejemplo: + +``` +127.0.0.1 localhost +127.0.1.1 arch-pc # (el nombre definido en /etc/hostname) +::1 localhost +``` + +```sh +systemctl enable NetworkManager +``` + +## Usuarios + +```sh +useradd -G -m wheel mi-usuario # utilizar el nombre de preferencia +passwd mi-usuario # definir la contraseña del usuario +``` + +Ejecutar `visudo` y descomentar la línea para habilitar a miembros de "wheel" usar "sudo", (o en su +defecto, agregarla manualmente): + +``` +# %wheel ALL=(ALL:ALL) ALL +``` + +(Opcional) Comprobar que se puede utilizar el comando `sudo` cuando se usa el nuevo +usuario: + +```sh +su - mi-usuario +sudo whoami # debería imprimir: root +exit # volver al usuario root +``` + +(Opcional) Bloquear usuario `root` por seguridad: + +```sh +passwd -l # correr como usuario root +``` + +## Initramfs + +(Opcional, en caso de habilitar encripción) Editar el archivo en +`/etc/mkinitcpio.conf` y agregar las siguientes HOOKS: + +```sh +# Asegurarse que estén en este orden y antes de "filesystems" y "fsck" +HOOKS=(... encrypt lvm2 ...) +``` + +Crear un entorno de disco ram inicial + +```sh +mkinitcpio -P +``` + +## Bootloader + +Asumiento que se utiliza GRUB: + +(Opcional, en caso de usar encripción) Modificar esta línea en +`/etc/default/grub`: + +```sh +... +# cryptdevice es crypto_LUKS y root es la partición root desencriptada +GRUB_CMDLINE_LINUX_DEFAULT="... cryptdevice=UUID=00000000-0000-0000-0000-000000000000:cryptlvm root=UUID=00000000-0000-0000-0000-000000000000" +... +``` + +Generar configuración de GRUB + +```sh +grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub +grub-mkconfig -o /boot/grub/grub.cfg +``` + +# Post-install + +Salir de `chroot` y reiniciar + +```sh +exit +reboot +``` + +Verificar que todo está en orden y proceder a instalar audio, drivers de video, +entorno de escritorio, etc. + +## Audio + +Suponiendo un sistema con `pipewire` (el servidor multimedia de preferencia +actualmente) + +```sh +pacman -S pipewire pipewire-alsa pipewire-pulse pipewire-jack wireplumber +``` + +## (Opcional) Nvidia + +```sh +pacman -S nvidia nvidia-utils lib32-nvidia-utils +``` + +Hasta la fecha actual (2024-12-27), es necesario agregar estas opciones para +utilizar un chip de nvidia junto con el driver propietario. + +Modificar esta línea en `/etc/default/grub` + +```sh +... +GRUB_CMDLINE_LINUX_DEFAULT="... nvidia-drm.modeset=1 nvidia_drm.fbdev=0" +... +``` + +Agregar/Modificar esta línea en `/etc/mkinitcpio.conf` + +```sh +... +MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm) +... +``` + +## DE + +```sh +pacman -S plasma-meta # Instalar todo el entorno +pacman -S plasma-desktop # Instalar la base solamente + +pacman -S gnome gnome-extra # Instalar todo el entorno +pacman -S gnome # Instalar la base solamente +```