Kabosu - Creando cosas

Logo de la página. Gato esférico con colores verdoso.

Aprendiendo Linux con Alpine Linux

Publicado: 2024-10-26

Etiquetas: Linux


Hace unos meses comenté que estaba intentando aprender Linux más a fondo. En ese momento estaba centrándome en estudiar Ubuntu pero, tras unas semanas, me dí cuenta de que iba a ser una tarea titánica porque, incluso con la instalación mínima, viene con 1600 paquetes, cientos de programas y un montón de servicios activados por defecto. Para acelerar un poco el proceso decidí continuar mi aprendizaje con la distribución de Linux que uso en el trabajo para máquinas virtuales y contenedores: Alpine Linux.

La distribución Alpine Linux

Small. Simple. Secure.
Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.

Esta es la descripción de Alpine Linux en su propia web. Nos encontramos con una distribución muy ligera, menos de 200 megas en su instalación por defecto. Una de las razones de su pequeño tamaño es, como indican en su descripción, que han elegido montar el sistema alrededor de musl y busybox. Si no instalamos ningún otro servicio, al iniciar el sistema apenas hay 14 procesos ejecutándose. Ubuntu por ejemplo tiene cientos.

Musl es una librería estándar para C, una alternativa a Glibc de GNU que usan la gran mayoría de distribuciones. Busybox es una colección de utilidades básicas para el sistema (ls, cp y similares), alternativa minimalista a coreutils de GNU.

Alpine Linux está pensado principalmente para contenedores y servidores pero no hay ningún problema en usarlo como sistema de escritorio. La instalación por defecto solo tiene interfaz de texto pero usando el comando setup-desktop puedes instalar el entorno gráfico. Este comando me sorprendió para bien, al ejecutarlo me preguntó qué entorno quería (GNOME, Plasma, XFCE, Mate o Sway). Elegí GNOME y, tras instalar varios gigas de cosas (aquí el sistema dejó de ser minimalista), reinicié y el entorno gráfico se inició sin necesidad de configurar absolutamente nada.

Aprendiendo Linux (con Alpine)

Al ser una distribución tan pequeña me parece que es una candidata ideal para aprender puedes crear una máquina virtual con muy pocos recursos, instalar Alpine Linux y ponerte a trastear. Es lo que he estado haciendo yo últimamente. Cuando la rompía creaba otra. El sistema se instala en menos de dos minutos.

Es una distribución en la que tienes que usar la terminal sí o sí pero no me ha parecido "difícil". Incluye 28 comandos como setup-desktop que he comentado antes para configurar prácticamente todo de manera sencilla. ¿Quieres configurar la red? setup-interfaces te va preguntando cosas y te configura el sistema. ¿El acceso SSH? setup-sshd.

Lo primero que hice fue mirar la lista de paquetes instalados por defecto, unos 60, e intentar averiguar para qué servía cada uno. Lo había intentando hacer con Ubuntu pero los miles de paquetes me desanimaron. En menos de una hora ya había revisado todos. Además los paquetes principales se llaman alpine-* (alpine-base, alpine-conf, etc) por lo que están los primeros de la lista y sirven para crear una base sobre la que entender porqué se incluyen el resto de paquetes.

Luego fui mirando uno por uno los ejecutables que había en /bin, /sbin y /usr/bin. Los comandos básicos de Linux ya los conocía así que fue rápido. Otro día eché un vistazo a los ficheros de configuración de /etc y al resto de directorios del sistema.

En cada uno de los pasos anteriores iba anotándome cosas que quería probar más fondo y es lo que he ido haciendo estos últimos días:

Me falta trastear un poco más con el propio kernel. Quiero compilar mi propia versión y crear algún módulo para probar. Hace más de una década que no me meto en esas cosas.

Otro detalle que creo que es positivo para aprender es que muchas de las utilidades del sistema como los comandos setup-* explicados más arriba son scrips del shell. Aparte de que si quieres ver lo hacen simplemente tienes que abrirlos con un editor de textos, los que he analizado tienen el código muy limpio y creo que son buenos ejemplos de cómo escribir scripts.

Una vez explicado porqué creo que Alpine Linux es ideal para aprender a manejarse con Linux a un nivel intermedio voy con los puntos negativos. Los problemas que le veo es que algunas cosas que aprendes con esta distribución no son exactamente iguales en otras distribuciones. En su intento por que ocupe lo mínimo posible usan librerías y servicios que difieren mucho de las que se usan normalmente. Aparte de los mencionados musl y busybox, utiliza OpenRC para iniciar el sistema mientras que hoy en día casi todo el mundo usa systemd. Otra cosa que no me ha gustado es la documentación: el sistema no incluye las páginas de man por defecto aunque se arreglar rápido ejecutando apk add docs pero incluso teniendo la documentación instalada es algo pobre. Por ejemplo todos los comandos básicos están sacados de busybox y este, en vez de tener una página de man para cada uno, tiene una sola página para todos y apenas hay una o dos frases para cada uno. En algunos casos tuve que irme a internet a buscar más información de algunos programas.

A partir de aquí

Mi plan era que, una vez adquiridos conocimientos sobre cómo configurar y manejar Alpine Linux, iba a continuar con mi aventura de estudiar Ubuntu pero ahora me encuentro con que estoy muy cómodo y me estoy pensando instalarla en mi servidor casero. Para PC de escritorio no creo que sea la distribución ideal pero en servidores se ha convertido en mi preferida.


Artículo siguiente: Mi opinión sobre la IA generativa
Artículo anterior: El lenguaje inclusivo