La aventura de un usuario de BSD con Alpine Linux
(rubenerd.com)-
Historia de Alpine Linux
- Alpine Linux es una distribución Linux independiente, no comercial y de propósito general, diseñada para usuarios avanzados que priorizan la seguridad, la simplicidad y la eficiencia de recursos
- Todos los binarios de userland se compilan como PIE (Position Independent Executables) y tienen protección contra stack smashing, lo que ayuda a prevenir de antemano clases completas de exploits, incluidas vulnerabilidades zero-day
- En 2005, Natanael Copa discutió el inicio del proyecto y, al igual que BSD, se usa no solo en sistemas embebidos, routers y dispositivos móviles, sino también en servidores y escritorios de propósito general
- Gracias a su tamaño compacto y dependencias limitadas, también es popular como base para contenedores Linux
- También ofrece una toolchain que puede ejecutarse fácilmente en
chroot(8), lo que resulta interesante para quienes usan ampliamentechroots(8)de NetBSD y jail de FreeBSD
-
Instalación de Alpine Linux
- Está disponible en varias versiones, incluidas compilaciones para ARM, PPC64, x86 y x86_64
- El proceso de instalación es muy simple: basta con iniciar sesión como
rooten el entorno live y ejecutarsetup-alpine - Hace preguntas básicas sobre keymap, red, zona horaria y autenticación de root, y también permite inyectar claves SSH desde el inicio, lo que resulta útil al desplegar VMs o conjuntos de servidores con herramientas de orquestación, o al implementar en proveedores de hosting que no entregan medios
- Entre varios servidores SSH y clientes NTP se puede elegir OpenSSH y openntpd, y también identifica correctamente cuando se ejecuta sobre Xen
- También se puede configurar LVM, pero por ahora se mantiene con la partición estándar
sysde Alpine usandoext4
-
Exploración después de la instalación
- Al arrancar Alpine por primera vez, se entiende de inmediato una razón especial:
dmesg(1)indica que está ejecutando OpenRC - Es portable, pequeño, rápido, eficiente, transparente y seguro
- Resulta muy familiar para usuarios de BSD acostumbrados a escribir scripts de rc
- La presencia de
/etc/rc.confycrond(8)da gusto - Es muy grato ver esto en distribuciones Linux como Devuan, Gentoo y Alpine, y hace que Linux vuelva a ser divertido
- Junto con OpenRC vienen incluidos musl y busybox, lo que reduce aún más el tamaño del sistema base y la superficie de ataque
- También están disponibles llvm y uno de los shells interactivos preferidos del autor, MirBSD Korn Shell
- Al arrancar Alpine por primera vez, se entiende de inmediato una razón especial:
-
Paquetes
- El gestor de paquetes predeterminado de Alpine es apk y, como suele ser común en Linux, maneja las actualizaciones sin separar el sistema base del resto de los paquetes
- Como en BSD, se quiere comprobar si es posible ejecutar una copia sin privilegios, pero aún no se ha verificado; además, está pkgsrc, así que no parece un problema
- La configuración está en
/etc/apk/repositories, y se puede habilitar el repositorio community descomentando la segunda URL proporcionada por el instalador - Alpine también tiene un repositorio
testing, y además se pueden agregar repositorios propios - Su uso es fácil, pero por viejas costumbres todavía se escribe por error
apt installen lugar deapk add - Existe una interfaz web oficial, y los repositorios de Alpine están en pkgs.org
- El paquete de zfs fue lo más sorprendente: solo hicieron falta dos comandos para instalar y cargar el módulo del kernel (aunque root sobre ZFS seguramente sería más complicado)
-
Conclusión
- Apenas se ha rascado la superficie, pero ya hay razones suficientes para considerar seriamente cambiarse a Alpine como distribución Linux principal para pruebas y servidores
- Gusta que
htop(1)ylsof(1)muestren solo una lista pequeña de procesos reconocibles, que use OpenRC, que la gestión de paquetes parezca simple y que la configuración sea muy sencilla - Si uno se preguntaba cómo se vería un “Occam's Linux” moderno y funcional, esto es exactamente eso
- Si hiciera falta algo más que busybox, se querría comprobar si uutils funciona, aunque para servidores genera dudas
Opinión de GN⁺
-
Alpine Linux está optimizada para despliegues basados en contenedores, por lo que se usa ampliamente en plataformas de contenedores como Docker. Parece una distribución que vale la pena considerar al implementar arquitecturas de microservicios con contenedores.
-
Usar musl libc por defecto puede ser tanto una ventaja como una desventaja. musl es más liviana y fuerte en seguridad frente a glibc, pero puede haber problemas de compatibilidad con algunas aplicaciones. Por eso conviene verificar de antemano la compatibilidad de las aplicaciones que se van a usar.
-
También es llamativo que use ash como shell predeterminado. ash tiene menos funciones que bash, pero es un shell muy liviano y rápido, por lo que parece útil en entornos con recursos limitados, como sistemas embebidos. En cambio, para usuarios generales podría resultar algo incómodo.
-
Para quienes usan principalmente sistemas operativos de la familia BSD, Alpine Linux probablemente resulte atractiva por ofrecer un entorno familiar. Aun así, como el soporte para entornos de escritorio todavía parece insuficiente, se ve más adecuada para uso en servidores o sistemas embebidos.
-
En general, Alpine Linux parece tener una presencia propia como distribución ligera y optimizada para seguridad. Sin embargo, como su ecosistema aún no es muy grande, conviene considerar que el soporte de la comunidad podría ser algo limitado si surge un problema. Aun así, se espera que con el tiempo siga ganando más usuarios gracias a sus ventajas.
1 comentarios
Comentarios de Hacker News
Resumen:
Los binarios de Linux se compilan como PIE (Position Independent Executable), lo que aumenta la seguridad
GLIBC tiene la implementación de heap más endurecida, por lo que ofrece más mitigaciones contra vulnerabilidades del heap como el double free
Alpine usa musl, por lo que es menos seguro que GLIBC. Un sistema pequeño y fácil de entender ayuda a la seguridad
Illumos (OpenSolaris) hace que todo sea más simple después de décadas usando Linux
La mayoría de lo que funcionaba en Solaris 10 sigue aplicando hoy con ligeras modificaciones
zone es 10 veces mejor que los contenedores Docker, e incluye soporte integrado para ZFS
Gestión de servicios con SMF. La única desventaja es configurarlo con XML
Se comparte experiencia usando servidores con OmniOS y SmartOS
Como usuario de BSD, probó Alpine por primera vez en bhyve
Al estar basado en busybox, no hace falta que las utilidades de /bin y /sbin sean binarios separados, así que el espacio de usuario es pequeño y arranca rápido
Con tmux y zsh basta para la mayoría de los usos de Unix
Hizo falta instalar muchos paquetes con apk, pero en general fue la mejor experiencia Linux que había tenido
Sería bueno que incluyera ZFS y soporte para bindings virtio de bhyve
También recomiendan Void Linux para usuarios de BSD. Lo creó un desarrollador de NetBSD y tiene versiones con glibc/musl. Usa runit como sistema init
Con
xbps-srcse pueden compilar paquetes desde el código fuenteA algunas personas no les gusta usar Alpine porque no incluye páginas man por defecto
Se preguntan si existe una opción para instalar automáticamente la documentación al instalar paquetes
Hubo posts sobre el rendimiento de Alpine en Docker. Se recomendaba usar Debian/Ubuntu
Se preguntan si esto sigue siendo vigente
No entienden qué hace atractivos a OpenRC y similares. Consideran que las opciones basadas en supervisión son mejores que manejar archivos PID
Sí reconocen que no reiniciar automáticamente puede ser una ventaja
Depender tanto de syslog también es tecnología de los años 80
Coinciden en que hace falta mejorar una vista centralizada para entender el orden de eventos entre varias herramientas
Ventaja de Alpine: permite gestión declarativa de paquetes sin Nix editando
/etc/apk/worldy luego ejecutandoapk fixSlackware es un punto medio entre BSD y Linux. Tiene estilo Unix y no es complicado. Slackbuilds ofrece un árbol de ports abundante
musl no soporta
pthread_attr_setaffinity_np, por lo que algunos programas como PyTorch no pueden ejecutarse