ricardogj08/blog

Slackware 15: Instalación

La distribución GNU/Linux más antigua aún vigente, con un enfoque en la estabilidad y el minimalismo. En esta pequeña guía explico cómo instalar Slackware 15 en una unidad de almacenamiento encriptada para equipos con BIOS y UEFI.

---

## Particiones

Identifica la unidad de almacenamiento:

```bash
fdisk -l
```

Un comando útil para limpiar la unidad de forma segura (opcional):

```bash
dd if=/dev/zero of=/dev/sda
```

Limpia la tabla de particiones:

```bash
gdisk /dev/sda
Enter 'x' to enable the extended options.
Enter 'z' to zap (wipe out) the existing GPT.
Answer 'Y' to confirm.
```

Particiones para UEFI (GPT):

| Partición | Tamaño | Punto de montaje | Tipo |
| --------- | ------ | ---------------- | ---- |
| `/dev/sda1` | 1 GB | `/boot` | Linux filesystem |
| `/dev/sda2` | 512 MB | `/boot/efi` | EFI System |
| `/dev/sda3` | 100% | `LVM` | Linux LVM |

Particiones para BIOS (GPT):

| Partición | Tamaño | Punto de montaje | Tipo |
| --------- | ------ | ---------------- | ---- |
| `/dev/sda1` | 1 MiB | `N/A` | BIOS boot |
| `/dev/sda2` | 1 GB | `/boot` | Linux filesystem |
| `/dev/sda3` | 100% | `LVM` | Linux LVM |

Crea las particiones:

```bash
cfdisk /dev/sda
```

Verifica con:

```bash
lsblk -f /dev/sda
```

## LUKS y LVM

Cifra la partición que contendrá las particiones LVM:

```bash
cryptsetup -s 512 -y luksFormat /dev/sda3
```

Desbloquea a la partición cifrada y asigna un nombre:

```bash
cryptsetup luksOpen /dev/sda3 slackcrypt
```

Crea un volumen físico para LVM:

```bash
pvcreate /dev/mapper/slackcrypt 
```

Para verificar si se ha creado:

```bash
pvdisplay
```

Crea un grupo de volúmenes en el volumen físico y asigna un nombre:

```bash
vgcreate cryptvg /dev/mapper/slackcrypt
```

Para verificar si se ha creado:

```bash
vgdisplay
```

Volúmenes lógicos o particiones virtuales:

| Volumen | Punto de montaje |
| ------- | ---------------- |
| swap | SWAP |
| root | / |

Recomendación para swap:

| Tamaño en RAM | Tamaño en swap |
| ------------- | -------------- |
| Menos de 2 GB | 2 veces al tamaño en RAM |
| 2 GB y menor a 8 GB | Igual al tamaño en RAM |
| 8 GB y menor a 64 GB | La mitad del tamaño en RAM |
| Más de 64 GB | Al menos 4 GB |

Comando útil para consultar la memoria RAM disponible:

```bash
free -g
```

Crea los volúmenes lógicos:

```bash
lvcreate -L 4G -n swap cryptvg
lvcreate -l 100%FREE -n root cryptvg
```

Para confirmar si se han creado correctamente:

```bash
lvdisplay
```

Escanea y asegura activar los volúmenes:

```bash
vgscan --mknodes
vgchange -ay
```

Formatea la partición swap:

```bash
mkswap /dev/cryptvg/swap
```

Formatea la partición únicamente para EFI:

```bash
mkfs.fat -F32 /dev/sda2
```

## Instalación

Inicia el asistente de instalación:

```bash
setup
```

1. Selecciona el idioma del teclado.
2. Formatea las particiones y asigna los puntos de montaje.
3. Selecciona el origen de los paquetes de Slackware que serán instalados (desde el USB).
4. Selecciona los grupos de paquetes a instalar.

Instalación mínima:

```text
[*] A    - Base del sistema operativo
[*] AP   - Aplicaciones que no requieren X
[*] D    - Herramientas de desarrollo de programas
[ ] E    - GNU Emacs
[ ] F    - Preguntas frecuentes, tutoriales y otras documentaciones
[ ] K    - Código fuente del kernel linux
[ ] KDE  - El entorno de escritorio KDE Plasma
[*] L    - Bibliotecas del sistema
[*] N    - Programas de conexión
[ ] T    - Programas para TeX
[ ] TCL  - Lenguajes de scripting Tcl/tk
[*] X    - El sistema de ventanas X
[*] XAP  - Aplicaciones que requieren X
[ ] XFCE - El entorno de escritorio XFCE
[ ] Y    - Juegos
```

5. Selecciona el modo de instalación `terse` o `full`.
6. Omite la creación de una USB de arranque.
7. Omite instalar LILO.
8. Selecciona la configuración del mouse `ps2` (de mayor compatibilidad).
9. Habilita `gpm` para copiar y pegar en la terminal (sin entorno gráfico).
10. Continúa la configuración de la red.
11. Ingresa un nombre para el equipo.
12. Ingresa el nombre de dominio `localdomain` para el equipo.
13. Omite la configuración de red por VLAN.
14. Selecciona y confirma `NetworkManager` para configurar la red.
15. Selecciona los servicios que se iniciarán durante el arranque.

Servicios mínimos:

```text
[ ] rc.atalk      - Servidor de archivos/impresión Netatalk Appletalk
[ ] rc.atd        - Programa tareas para ejecutarse más tarde
[ ] rc.bind       - Servidor BIND (Sistema de Nombres de Dominio)
[*] rc.crond      - Programador de tareas basado en tiempo
[*] rc.cups       - Servidor de impresión CUPS
[ ] rc.dnsmasq    - Servidor DHCP/DNS dnsmasq
[ ] rc.dovecot    - Servidor IMAP/POP3 Dovecot
[*] rc.fuse       - Biblioteca de sistema de archivos en espacio de usuario
[ ] rc.httpd      - Servidor web Apache
[ ] rc.inetd      - Demonio Inetd de BSD
[ ] rc.ip_forward - Reenvío activo de paquetes IP
[*] rc.messagebus - Bus de mensajes del sistema D-Bus
[ ] rc.mysqld     - Servidor de base de datos MySQL
[ ] rc.nfsd       - Demonio del Sistema de Archivos en Red (NFS)
[*] rc.ntpd       - Servidor de tiempo en red
[ ] rc.openldap   - Servidor OpenLDAP
[ ] rc.openvpn    - Demonio OpenVPN
[ ] rc.pcmcia     - Servicios de tarjetas PCMCIA/Cardbus
[ ] rc.postfix    - Servidor de correo Postfix
[ ] rc.rpc        - Demonio RPC (NFS)
[ ] rc.samba      - Servidor de archivos/impresión Samba
[ ] rc.saslauthd  - Servidor de autenticación SASL
[ ] rc.smartd     - Demonio de monitoreo SMART
[ ] rc.snmpd      - Demonio Net-SNMP
[*] rc.syslog     - Utilidades de registro del sistema Linux
[ ] rc.sshd       - Demonio SSHD (shell seguro)
```

16. Omite la configuración de la fuente de la terminal.
17. Selecciona `NO` para configurar la hora del equipo.
18. Selecciona `vim` como editor de textos por defecto.
19. Cancela la selección de un gestor de ventanas.
20. Establece una contraseña para el usuario `root`.
21. Finaliza la instalación presionando `EXIT`.
22. Selecciona `Shell` para regresar a la terminal.

## Idioma

Ingresa al sistema instalado:

```bash
chroot /mnt /bin/bash
```

Crea un script `/etc/profile.d/keymap.sh` para definir el idioma del teclado:

```bash
#!/bin/sh

export KEYMAP=la-latin1
```

Establece permisos de ejecución y cárgalo:

```bash
chmod 755 /etc/profile.d/keymap.sh
. /etc/profile.d/keymap.sh
```

Modifica el idioma del sistema en `/etc/profile.d/lang.sh`:

```bash
export LANG=es_MX.UTF-8
```

## Imagen del kernel

Genera una imagen del kernel que soporte LUKS y LVM:

```bash
eval "$(/usr/share/mkinitrd/mkinitrd_command_generator.sh -i)"
```

## Gestor de arranque

Para instalarlo en UEFI:

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

Para instalarlo en BIOS:

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

Genera la configuración de GRUB:

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

## Reiniciar

```bash
exit
umount -R /mnt
swapoff -a
vgchange -an cryptvg
cryptsetup luksClose slackcrypt
reboot
```

## Iniciar sesión

```bash
login: root
password: ********
```

## Modo recuperación

Si necesitas reparar tu Slackware por alguna razón, puedes ingresar desde el USB booteable:

```bash
cryptsetup luksOpen /dev/sda3 slackcrypt
vgscan --mknodes
vgchange -ay
lvscan 
mount /dev/cryptvg/root /mnt
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bind /dev /mnt/dev
```

Para UEFI:

```bash
mount /dev/sda1 /mnt/boot
mount /dev/sda2 /mnt/boot/efi
```

Para BIOS:

```bash
mount /dev/sda2 /mnt/boot
```

Por último:

```bash
chroot /mnt /bin/bash
```

## Conclusión

Slackware se ha convertido en mi distribución GNU/Linux principal desde hace varios años y estos son los pasos que sigo en cada nueva instalación. Desde este punto tenemos un sistema base listo para ser configurado e instalar las herramientas que necesitamos.


## Referencias

* <https://docs.slackware.com/slackbook:start>
* <https://docs.slackware.com/slackware:install>
* <https://wiki.archlinux.org/title/Partitioning>
* <https://docs.redhat.com/es/documentation/red_hat_enterprise_linux/8/html/performing_a_standard_rhel_installation/recommended-partitioning-scheme_partitioning-reference>
* <https://wiki.archlinux.org/title/EFI_system_partition>
* <https://www.slackwiki.com/LVM/Luks_Encryption>
* <https://blog.aktsbot.in/slackware-install-lvm-luks.html>
* <https://blog.edie.io/2019/06/16/slackware-lvm-over-luks/>
* <https://wiki.archlinux.org/title/Dm-crypt/Encrypting_an_entire_system#LVM_on_LUKS>
* <https://mirrors.slackware.com/slackware/slackware64-15.0/README_CRYPT.TXT>
* <https://mirrors.slackware.com/slackware/slackware64-15.0/README_LVM.TXT>
* <https://wiki.hyperbola.info/doku.php?id=es:manual:encrypted_installation>
* <https://mirrors.slackware.com/slackware/slackware64-15.0/README_UEFI.TXT>
* <http://www.slackware.com/install/softwaresets.php>
* <https://gist.github.com/ruario/7c2742d6d1dd2f89575c>
* <https://docs.slackware.com/start?id=howtos:slackware_admin:how_to_chroot_from_media>
* <https://docs.slackware.com/slackware:localization>
* <https://docs.slackware.com/howtos:slackware_admin:set_up_grub_as_boot_loader_on_uefi_based_hardware>
* <https://docs.slackware.com/howtos:slackware_admin:grub_on_first_install>
* <https://wiki.archlinux.org/title/GRUB>

Etiquetas: slackware, linux