{"id":13339077,"url":"https://github.com/kurosaki1976/archlinux-efi","last_synced_at":"2025-07-09T04:31:10.386Z","repository":{"id":197259487,"uuid":"232634184","full_name":"kurosaki1976/archlinux-efi","owner":"kurosaki1976","description":"Instalar Arch Linux con modelo de interfaz UEFI","archived":false,"fork":false,"pushed_at":"2020-01-08T19:55:53.000Z","size":84,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-24T00:22:45.254Z","etag":null,"topics":["arch-linux","arch-linux-distro","arch-linux-efi","archlinux","archlinux-efi","bios","grub","grub2","linux","systemd-boot","uefi"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kurosaki1976.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-01-08T18:45:27.000Z","updated_at":"2023-05-09T01:23:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"44a199fc-5b91-42e7-bf88-fc9c5c1dd00d","html_url":"https://github.com/kurosaki1976/archlinux-efi","commit_stats":null,"previous_names":["kurosaki1976/archlinux-efi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kurosaki1976%2Farchlinux-efi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kurosaki1976%2Farchlinux-efi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kurosaki1976%2Farchlinux-efi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kurosaki1976%2Farchlinux-efi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kurosaki1976","download_url":"https://codeload.github.com/kurosaki1976/archlinux-efi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225482440,"owners_count":17481214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arch-linux","arch-linux-distro","arch-linux-efi","archlinux","archlinux-efi","bios","grub","grub2","linux","systemd-boot","uefi"],"created_at":"2024-07-29T19:19:01.048Z","updated_at":"2024-11-20T07:08:40.374Z","avatar_url":"https://github.com/kurosaki1976.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Instalación de Arch Linux con modelo de interfaz UEFI\n\n## Autor\n\n- [Ixen Rodríguez Pérez - kurosaki1976](ixenrp1976@gmail.com)\n\n## Introducción\n\n#### ¿Qué es Arch Linux?\n\n`Arch Linux` es una distribución `GNU/Linux` de propósito general, desarrollada independientemente para `x86-64`, que se esfuerza por proporcionar las últimas versiones estables de la mayoría del software, siguiendo un modelo de lanzamiento continuo (`rolling-release`). La instalación por defecto deja un sistema de base mínima, que el usuario configurará posteriormente agregando lo que necesite.\n\nLos desarrolladores definen el proyecto bajo el acrónimo `KISS` (`Keep It Simple, Stupid`; en español Mantenlo simple, estúpido). `Arch Linux` se enfoca en 5 principios generales: simplicidad, modernidad, pragmatismo, centrado en el usuario y versatilidad; siendo el primero, su principal objetivo. Los desarrolladores de Arch son voluntarios no remunerados, a tiempo parcial, y no hay perspectivas de monetizar `Arch Linux`, por lo que seguirá siendo libre en todos los sentidos de la palabra.\n\n#### ¿Qué es UEFI?\n\nLa `Unified Extensible Firmware Interface` (`UEFI` o `EFI` para abreviar) es un modelo de interfaz para interactuar entre los sistemas operativos y el firmware. Proporciona un entorno estándar para iniciar un sistema operativo y ejecutar aplicaciones previas al inicio. Es un método distinto del comúnmente usado \"código de arranque `MBR`\" seguido por los sistemas `BIOS` estándar presentado en las computadoras personales `IBM PC` como `IBM PC ROM BIOS`.\n\n## Consideraciones previas\n\nA los efectos prácticos de esta guía se instalará la distribución de `GNU/Linux` `Arch Linux` en un ordenador que dispone del modelo de interfaz `UEFI` activo a nivel de `BIOS`, y con las siguientes características de `hardware`.\n\n- **CPU**: Intel Core i5 3.20GHz\n- **RAM**: 8 GiB\n- **SSD**: 120 GiB\n- **HDD**: 1 TiB\n- **Adaptador de red**: Gigabyte Onboard Ethernet\n\nSe dispone además de un direccionamiento `IPv4` con acceso a `Internet`.\n\nEl sistema operativo instalado, será utilizado con el propósito de explotar un sistema de escritorio o estación de trabajo para usuarios finales.\n\n## Instalación\n\n`Arch Linux` se instala ejecutando el entorno `live` de la imagen `ISO` desde un dispositivo óptico, memoria `USB` o una red con `PXE`. La imagen `ISO` puede descargarse desde [Arch Linux - Downloads](https://www.archlinux.org/download/).\n\n#### Preinstalación\n\n1. Definir la distribución de teclado.\n\n    ```bash\n    loadkeys us-acentos\n    ```\n\n    \u003e **NOTA**: Por defecto, la distribución del teclado de la consola es la de EE.UU.; las distribuciones de teclado disponibles se pueden listar ejecutando `ls /usr/share/kbd/keymaps/**/*.map.gz`.\n\n2. Verificar la modalidad de arranque.\n\n    Si el modo `UEFI` está activado, la imagen `ISO` arrancará mediante `systemd-boot`. Para comprobarlo, se debe listar el contenido del directorio `efivars`, ejecutando `ls /sys/firmware/efi/efivars`. Si no existe el directorio, el sistema ha iniciado en modo `BIOS` o `CSM` (`Compatibility Support Module`).\n\n3. Configurar conexión de red para acceder a los repositorios de paquetes.\n\n    \u003e **NOTA**: La imagen `ISO` activa en el arranque `dhcpcd` para todos los dispositivos de red conocidos, tanto cableados como WiFi.\n\n    Si no se encuentra en una red donde exista un servidor `DHCP`, se deben definir los parámetros de red de forma manual.\n\n    a. Obtener nombre del dispositivo de red.\n\n    ```bash\n    ifconfig -a\n    \n    enp3s0: flags=4163\u003cUP,BROADCAST,RUNNING,MULTICAST\u003e  mtu 1500\n        ether 6c:b3:11:4d:05:96  txqueuelen 1000  (Ethernet)\n    ```\n\n    b. Definir dirección `IP` estática.\n\n    ```bash\n    ip addr add 200.55.143.194/29 dev enp3s0\n    ip link set enp3s0 up\n    ```\n    o\n    ```bash\n    ifconfig enp3s0 up 200.55.143.194 netmask 255.255.255.248\n    ```\n\n    c. Definir puerta de enlace (`gateway`) por defecto.\n\n    ```bash\n    route add 0.0.0.0/0 via 200.55.143.193 dev enp3s0\n    ```\n\n    d. Establecer servidores de nombres de dominio.\n\n    ```bash\n    nano /etc/resolv.conf\n\n    nameserver 8.8.8.8\n    nameserver 8.8.4.4\n    ```\n\n    e. Verificar que la interfaz de red está activada.\n\n    ```bash\n    ifconfig\n    ip link show\n    ip addr show\n    ip route show\n    ```\n\n    \u003e **NOTA**: Opcionalmente se puede utilizar el comando `ping` para verificar la conexión.\n\n4. Actualizar la hora del sistema.\n\n    Utilizar `timedatectl set-ntp true`, para asegurar que el reloj del sistema esté en hora.\n\n    \u003e **NOTA**: Para comprobar el estado del servicio, ejecutar `timedatectl status`.\n\n5. Particionamiento de discos duros.\n\n    Cuando el sistema reconoce los discos existentes, estos son asignados a dispositivos de bloque como por ejemplo `/dev/sda`. Para identificar los discos, se debe ejecutar `lsblk -f` o `fdisk -l`.\n\n    Se utilizará el disco `SSD` de `120 GiB` nombrado `/dev/sda`, para que contenga la partición de arranque `EFI` con un tamaño de `512MiB` y el resto para la partición raíz `/`. Mientras que en el disco `HDD` de `1 TiB`, identificado como `/dev/sdb` se definirán las particiones `/var` de `12 GiB`, `/tmp` de `5 GiB`, espacio de intercambio `SWAP` de `4 GiB` y `/home`, esta última con el resto del espacio disponible. Al estarse utilizando `UEFI` el esquema de tabla de particiones a utilizar será `GPT`.\n\n    a. Definir esquema de tabla de particiones en disco `/dev/sda`.\n\n    ```bash\n    fdisk /dev/sda\n    ```\n\n    Teclear la opción `g` para crear una nueva tabla de particiones de tipo `GPT`. Teclear la opción `n` para crear las nuevas particiones. La partición de arranque debe ser de tipo `EFI System` y la raíz, `Linux filesystem`. Al finalizar, teclear la opción `w` para escribir los cambios.\n\n    b. Definir esquema de tabla de particiones en disco `/dev/sdb`.\n\n    ```bash\n    fdisk /dev/sdb\n    ```\n\n    Teclear la opción `g` para crear una nueva table de particiones de tipo `GPT`. Teclear la opción `n` para crear las nuevas particiones. Las particiones `/var`, `/tmp` y `/home` deben ser de tipo `Linux filesystem`, y el área de intercambio, `Linux swap`.  Al finalizar, teclear la opción `w` para escribir los cambios.\n\n    \u003e **NOTA**: También se pueden usar las herramientas `gdisk`, `sfdisk` y `parted` para discos particionados con `GPT`.\n\n    c. Formatear las particiones.\n\n    ```bash\n    mkfs.fat -F32 -n UEFI /dev/sda1\n    mkfs.ext4 -L / /dev/sda2\n    mkfs.ext4 -L /var /dev/sdb1\n    mkfs.ext4 -L /tmp /dev/sdb2\n    mkswap -L SWAP /dev/sdb3\n    mkfs.ext4 -L /home /dev/sdb4\n    ```\n\n    d. Montar las particiones en el sistema de archivos.\n\n    ```bash\n    mount /dev/sda2 /mnt\n    mkdir /mnt/{boot,var,tmp,home}\n    mount /dev/sda1 /mnt/boot\n    mount /dev/sdb1 /mnt/var\n    mount /dev/sdb2 /mnt/tmp\n    swapon /dev/sdb3\n    mount /dev/sdb4 /mnt/home\n    ```\n\n#### Instalación del sistema\n\n1. Definir repositorios de paquetes.\n\n    Se deben editar los ficheros `/etc/pacman.d/mirrorlist` y `/etc/pacman.conf`, el primero; con el objetivo de seleccionar la dirección `URL` de los servidores de réplicas en `Internet` más cercano a su ubicación, donde se encuentren los repositorios de paquetes; y el segundo, para habilitar los depósitos o repositorios de paquetes (`core`, `extras`, `community` y `multilib`).\n\n2. Instalar sistema base mínimo.\n\n    ```bash\n    pacstrap -i /mnt base base-devel linux-firmware\n    ```\n\n    El paquete `base` no incluye todas las herramientas presentes en el medio de instalación `live`, por lo que puede ser necesario instalar otros paquetes para que un sistema base mínimo sea completamente funcional. Se recomienda instalar herramientas necesarias para la conexión a redes (`net-tools`, `dnsutils` e `iputils`), un editor de texto (`nano`, `vi` o `vim`) y paquetes para acceder a la documentación en las páginas de manual o información (`man-db`, `man-pages` y `texinfo`).\n\n    Para instalar otros paquetes o grupos de paquetes se debe añadir sus nombres al comando `pacstrap` o utilizar `pacman`, durante el entorno de jaula `chroot`.\n\n    \u003e **NOTA**: Se puede sustituir `linux` por el paquete de `kernel` de su elección (`linux-hardened`, `linux-lts` o `linux-zen`). Ver [Kernel - ArchWiki](https://wiki.archlinux.org/index.php/Kernel) para mayor información.\n\n#### Configuración básica del sistema\n\n1. Generar el fichero `/etc/fstab`.\n\n    El archivo `/etc/fstab` es usado para definir cómo las particiones, distintos dispositivos de bloques o sistemas de archivos remotos deben ser montados e integrados en el sistema.\n\n    ```bash\n    genfstab -U -p /mnt \u003e\u003e /mnt/etc/fstab\n    ```\n\n    \u003e **NOTA**: Se debe comprobar el archivo resultante en `/mnt/etc/fstab`, y modificarlo añadiendo las opciones `noatime` y `discard` en el caso de la partición raíz y solamente `noatime` para la partición de arranque `EFI`; estas características son necesarias para prolongar la vida últil del disco `SSD`.\n\n2. Activar entorno de jaula `chroot`.\n\n    `Chroot` es el proceso por el que se cambia el directorio `root` del disco de instalación `live` a otro directorio `root`. Al cambiar a otro directorio `root` no se puede acceder a los archivos y comandos fuera de ese directorio. Este directorio se llama jaula `chroot`. El cambio de `root` se hace comúnmente para el mantenimiento del sistema, como puede ser volver a instalar el gestor de arranque o restablecer una contraseña olvidada.\n\n    ```bash\n    arch-chroot /mnt\n    ```\n\n3. Definir idioma del sistema.\n\n    a. Editar el fichero `/etc/locale.conf` descomentando la definición de idioma que se requiera (por ejemplo, para Español México sería `es_MX.UTF-8 UTF-8`); luego de modificado, se debe generar con el comando `locale-gen`.\n\n    ```bash\n    nano /etc/locale.gen\n    locale-gen\n    ```\n\n    \u003e **NOTA**: Es recomendable también activar `en_US.UTF-8 UTF-8`.\n\n    b. Crear el archivo `/etc/locale.conf`, y definir la variable `LANG` según lo establecido en el paso anterior, por ejemplo:\n\n    ```bash\n    echo \"LANG=es_MX.UTF-8\" \u003e nano /etc/locale.conf\n    export LANG=es_MX.UTF-8\n    ```\n\n    c. Definir la distribución de teclado en consola para que permanezca en cada reinicio.\n\n    ```bash\n    echo \"KEYMAP=us-acentos\" \u003e nano /etc/vconsole.conf\n    ```\n4. Definir la zona horaria.\n\n    ```bash\n    ln -sf /usr/share/zoneinfo/America/Havana /etc/localtime\n    ```\n\n5. Configurar la red.\n\n    a. Crear el archivo `/etc/hostname`.\n\n    ```bash\n    echo \"archlinux\" \u003e /etc/hostname\n    ```\n\n    b. Editar fichero `/etc/hosts`.\n\n    ```bash\n    nano /etc/hosts\n\n    127.0.0.1   localhost.localdomain   localhost\n    ::1         localhost.localdomain   localhost\n    127.0.1.1   archlinux.localdomain   archlinux\n    ```\n\n    \u003e **NOTA**: Si el sistema tendrá una dirección `IP` permanente, se debe usar dicha dirección, en lugar de `127.0.1.1`.\n\n6. Generar la imagen `initramfs`.\n\n    ```bash\n    mkinitcpio -P\n    ```\n\n    \u003e **NOTA**: Normalmente no es necesario crear una imagen `initramfs` nueva, dado que `mkinitcpio` se ejecuta durante la instalación del paquete `kernel` con `pacstrap`.\n\n7. Instalar y configurar el gestor de arranque.\n\n    #### `Systemd-boot`\n\n    a. Instalar paquetes necesarios.\n\n    ```bash\n    pacman -S systemd-boot intel-ucode\n    ```\n\n    \u003e **NOTA**: En sistemas con procesadores `AMD`, se debe instalar el paquete `amd-ucode` en lugar de `intel-ucode`.\n\n    b. Instalar gestor de arranque.\n\n    ```bash\n    bootctl --path=/boot install\n    ```\n\n    c. Configurar gestor de arranque.\n\n    ```bash\n    nano /boot/loader/loader.conf\n\n    default arch\n    timeout 4\n    console-mode keep\n    editor no\n    ```\n\n    ```bash\n    nano /boot/loader/entries/arch.conf\n\n    title   Arch Linux\n    linux   /vmlinuz-linux\n    initrd  /intel-ucode.img\n    initrd  /initramfs-linux.img\n    options root=LABEL=/ rw\n    ```\n\n    \u003e **NOTA**: En sistemas con procesadores `AMD`, definir `initrd  /amd-ucode.img` en lugar de `initrd  /intel-ucode.img`.\n\n    #### `GRUB`\n\n    a. Instalar paquetes necesarios.\n\n    ```bash\n    pacman -S grub efibootmgr\n    ```\n\n    b. Instalar gestor de arranque.\n\n    ```bash\n    grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB\n    ```\n\n    c. Configurar gestor de arranque.\n\n    ```bash\n    grub-mkconfig -o /boot/grub/grub.cfg\n    ```\n\n8. Establecer contraseña del superusuario `root`.\n\n    ```bash\n    passwd\n    ```\n\n9. Abandonar entorno `chroot`, desmontar las particiones y reiniciar el sistema.\n\n    ```bash\n    exit\n    umount -R /mnt\n    reboot\n    ```\n\n    \u003e **NOTA**: Se debe retirar el medio de instalación e iniciar sesión en el sistema con la cuenta del superusuario `root`.\n\n## Posinstalación\n\n1. Crear cuenta de usuario.\n\n    ```bash\n    useradd -m -G users,wheel,sudo -s /bin/bash -c \"Descripción de usuario\" \u003cnombre_usuario\u003e\n    passwd \u003cnombre_usuario\u003e\n    ```\n\n## Referencias\n\n* [ArchWiki](https://wiki.archlinux.org/)\n* [UEFI FAQs | Unified Extensible Firmware Interface Forum](https://uefi.org/faq)\n* [BIOS](https://es.wikipedia.org/wiki/BIOS)\n* [Unified Extensible Firmware Interface](https://es.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkurosaki1976%2Farchlinux-efi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkurosaki1976%2Farchlinux-efi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkurosaki1976%2Farchlinux-efi/lists"}