> For the complete documentation index, see [llms.txt](https://juanbermudez.gitbook.io/aprendiendolinux/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://juanbermudez.gitbook.io/aprendiendolinux/instalacion/arch-linux/uefi.md).

# UEFI

[Arch Linux](https://archlinux.org/) es una de las distribuciones más difíciles para novatos, en especial por su instalación. Esta distribución no cuenta con entorno gráfico por defecto, por lo cuál hay que hacer todo desde la terminal. Sin embargo siguiendo estos pasos podrás instalarla de manera sencilla y rápida.

{% hint style="warning" %}
Esta es una distribución para escritorio, y no es recomendada para entornos de servidor.
{% endhint %}

## Proceso de instalación

Arch Linux es una distribución [Rolling Release](https://es.wikipedia.org/wiki/Liberaci%C3%B3n_continua), así que no vamos a encontrar diferentes versiones. La imagen ISO se lanza el primer día de cada mes con las nuevas actualizaciones, y la puedes descargar en [https://archlinux.org/download](https://archlinux.org/download/).

{% hint style="info" %}
Al momento de realizar una instalación nueva, Arch Linux inicia con permisos de superusuario `#`.
{% endhint %}

{% hint style="info" %}
Esta guía se hace para una maquina virtual con [MBR](https://es.wikipedia.org/wiki/Registro_de_arranque_principal), el proceso varia un poco para [UEFI](https://es.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface), principalmente en las particiones, y la forma de instalar y configurar el gestor de arranque [GRUB](https://es.wikipedia.org/wiki/GNU_GRUB).
{% endhint %}

### Preparando el sistema

Lo primero que tendremos que hacer es configurar el teclado, ya que por defecto está en inglés. La configuración para teclados en español son: `es`, y `la-latin1` en el caso de latinoamérica.

```bash
# loadkeys la-latin1
```

### Crear particiones

Ahora debemos listar las particiones para identificarlas y elegir donde instalar el sistema.

```bash
# fdisk -l
```

<figure><img src="https://882054019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FriPDNy3gWgf2sVXq5Y4L%2Fuploads%2FWbThL84JCDx9q1ccwXkq%2FCaptura%20de%20pantalla%20de%202024-11-27%2021-01-06.png?alt=media&amp;token=4b051ff6-d1fc-4377-a218-11bd62e179f8" alt=""><figcaption></figcaption></figure>

Una vez identificado el disco, procedemos a crear una nueva partición.

```bash
# fdisk /dev/sda
```

* `n` - Crear nueva partición.
* `p` - Partición primaria.
* `1` - Elegimos la primera partición.
* El sistema nos va a preguntar el tamaño del primer y último sector, en este caso presionamos `Enter` para dejar la configuración por defecto.
* `w` - Guardar cambios y salir.

<figure><img src="https://882054019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FriPDNy3gWgf2sVXq5Y4L%2Fuploads%2F9UG3670pi3zJQTu5FXfT%2FCaptura%20de%20pantalla%20de%202024-11-27%2021-06-18.png?alt=media&amp;token=6a94cdcf-2fb5-41fa-968d-3d091d6d07cf" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
**cfdisk**

También podemos usar `cfdisk` para crear las particiones de nuestro disco duro, ya que nos proporciona un entorno gráfico.

<img src="https://882054019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FriPDNy3gWgf2sVXq5Y4L%2Fuploads%2FTFQvwVY6YGige0srIDGJ%2FCaptura%20de%20pantalla%20de%202024-11-27%2021-07-13.png?alt=media&amp;token=dfbc838f-c76f-484b-be40-6b8eb9f490bb" alt="" data-size="original">
{% endhint %}

Ahora tenemos que formatear la nueva partición

```bash
# mkfs.ext4 /dev/sda1
```

<figure><img src="https://882054019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FriPDNy3gWgf2sVXq5Y4L%2Fuploads%2Fvc2OVzlM00Z8HA5JjqhY%2FCaptura%20de%20pantalla%20de%202024-11-27%2021-14-55.png?alt=media&amp;token=766ce72a-430e-457d-86f6-3b06498524a6" alt=""><figcaption></figcaption></figure>

Montamos la nueva partición en un directorio temporal para comenzar a instalar el sistema.

```bash
# mount /dev/sda1 /mnt
```

### Instalando el sistema

Ahora vamos a crear el nuevo directorio raíz e instalar el sistema. En este punto podemos instalar todos los paquetes que consideremos necesarios.

```bash
# pacstrap -K /mnt base base-devel linux linux-firmware grub nano networkmanager openssh
```

Esto puede tardar unos minutos. En este ejemplo vamos a instalar los siguientes paquetes:

* [base](https://archlinux.org/packages/core/any/base/) - Paquete mínimo configurado para definir una instalación básica de Arch Linux.
* [base-devel](https://archlinux.org/packages/core/any/base-devel/) - Herramientas básicas para construir paquetes Arch Linux.
* [linux](https://archlinux.org/packages/core/x86_64/linux/) - El núcleo de Linux y los módulos.
* [linux-firmware](https://archlinux.org/packages/core/any/linux-firmware/) - Archivos de firmware para Linux.
* [grub](https://archlinux.org/packages/core/x86_64/grub/) - Cargador de arranque.
* [nano](https://archlinux.org/packages/core/x86_64/nano/) - Editor de texto.
* [networkmanager](https://archlinux.org/packages/extra/x86_64/networkmanager/) - Administrador de conexiones de red.
* [openssh](https://archlinux.org/packages/core/x86_64/openssh/) - Aplicación del protocolo SSH para inicio de sesión remoto, ejecución de comandos y transferencia de archivos.

Generamos el fichero `fstab` ([Tabla de sistemas de archivos](https://es.wikipedia.org/wiki/Fstab)).

```bash
# genfstab -U /mnt >> /mnt/etc/fstab
```

Hasta este punto ya tenemos Arch Linux instalado en la nueva partición del disco duro, sin embargo, aun nos faltan algunas configuraciones.

### Configuración inicial

Vamos a cambiar del modo Live, y entraremos a la nueva instalación para ejecutar comandos como si hubiéramos iniciado ya el nuevo sistema.

```bash
#  arch-chroot /mnt
```

### Configurar el gestor de arranque

Grub es el gestor de arranque más popular, así que vamos a instalarlo en el disco duro, debe ser el disco duro, no la partición que hemos creado.

```bash
#  grub-install /dev/sda
```

<figure><img src="https://882054019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FriPDNy3gWgf2sVXq5Y4L%2Fuploads%2FnLjvwjJaLw4xlacW7r03%2FCaptura%20de%20pantalla%20de%202024-11-27%2021-58-11.png?alt=media&amp;token=4a906b64-445b-40e3-950a-48a95c7e5a1b" alt=""><figcaption></figcaption></figure>

Por último, generamos el fichero de arranque para grub.

```bash
# grub-mkconfig –o /boot/grub/grub.cfg
```

<figure><img src="https://882054019-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FriPDNy3gWgf2sVXq5Y4L%2Fuploads%2FIjK42km1yzwHlJlSosh2%2FCaptura%20de%20pantalla%20de%202024-11-27%2022-10-07.png?alt=media&amp;token=5ee3d1c4-defe-43ba-99ff-a3acbf5a8030" alt=""><figcaption></figcaption></figure>

### Finalizando la instalación

Hemos finalizado la instalación, con todos los pasos anteriores el sistema ya puede iniciar en el próximo reinicio. Pero ahora debemos establecer una contraseña para el superusuario `root`, y configurar algunas cosas adicionales.

```bash
# passwd
```

<details>

<summary>Nuevo usuario</summary>

Crearemos un nuevo usuario para iniciar sesión, y que a la vez tenga permisos de superusuario.

```bash
# useradd -m username
```

```bash
# passwd username
```

Ahora lo agregamos al grupo wheel (sudo).

```bash
# usermod -aG wheel username
```

Editaremos el fichero `/etc/sudoers` con `nano` y descomentamos la siguiente línea:

```bash
## Uncomment to allow members of group wheel to execute any command
# %wheel ALL=(ALL) ALL
```

</details>

<details>

<summary>Configurar el idioma</summary>

Ejecutamos el siguiente comando para generar los ficheros de configuración del idioma del sistema.

```bash
# locale-gen
```

Creamos el siguiente fichero:

```bash
# echo "LANG=es_CO.UTF-8" > /etc/locale.conf
```

Editamos el fichero `/etc/locale.gen` y descomentamos la línea de nuestro idioma `es_CO.UTF-8`.

```bash
# nano /etc/locale.gen
```

Ejecutamos nuevamente el comando `locale-gen` para que cargue la nueva configuración.

```bash
# locale-gen
```

Ahora creamos el fichero `/etc/vconsole.conf` para establecer la distribución del teclado `es` o la-`latin1`.

```bash
# echo "KEYMAP=la-latin1" > /etc/vconsole.conf
```

</details>

Ahora le damos un nombre al host.

```bash
# echo "archlinux" > /etc/hostname
```

Salimos del entorno chroot.

```bash
# exit
```

Desmontamos la partición.

```bash
# umount -R /mnt
```

Por último, reiniciamos el sistema.

```bash
# reboot
```

### Primer inicio del sistema

Ahora que hemos reiniciado el sistema veremos que no tenemos conexión a Internet, esto es porque nos falta habilitar e iniciar el NetworkManager.

```bash
# systemctl enable NetworkManager
```

```bash
# systemctl start NetworkManager
```

Ahora si queremos cambiar la configuración de red podemos hacerlo con el comando `nmtui`, ya que nos proporciona un entorno gráfico que nos facilita el trabajo. También aprovechamos para habilitar e iniciar el servicio SSH.

```bash
# systemctl enable sshd
```

```bash
# systemctl start sshd
```

Ahora podemos establecer nuestra zona horaria y habilitar el servicio NTP.

```bash
$ timedatectl set-timezone America/Bogota
```

```bash
$ timedatectl set-ntp true
```

Muy bien, ya tenemos nuestra distribución Arch Linux totalmente funcional. Para instalar paquetes ejecuta `pacman` con las opciones `-Syu` (sincroniza - refresca - actualiza).

```bash
$ sudo pacman -Syu paquete
```
