"Free"desktop.org: una camarilla amiguista creada para posicionarse y ordenar, no para sugerir lo mejor para el ecosistema UNIX.

Hacía mucho tiempo que quería desahogarme en cuanto a un tema que me tenía extremadamente preocupado, como tantos temas de la comunidad que nos ponen así. Y no se trata de "toxicidad en las comunidades" o amarillismos por el estilo. Afortunadamente, Entropía es un espacio sano, inclusivo, de respeto y tolerancia, y si bien la tónica es la que ya los compañeros y allegados conocen (no systemd, no Wayland, no Snaps, no Flatpaks, no Ubuntu, no RedHat, no IBM, y pordíamos seguir...), tenemos colegas que utilizan estas tecnologías desde que son parte del grupo y seguimos siendo amigos hasta el día de hoy, cada cual por su camino; cada uno con lo que entiende que es mejor o con lo que le gusta o interesa más.

El artículo trata sobre la "free"desktop. Así, escrita entrecomilladamente.

Desde tiempos muy lejanos esta organización no me cerraba: yo veía claramente cómo pisoteaban, cómo se escondían detrás de un nombre, cómo tomaban posición por tecnologías de mierda en lugar de sugerir lo más sano para el ecosistema UNIX con argumento sólido.
Entonces, al necesitar redactar documentación para CRUX, me vi en la necesidad de tener que escribir sobre Python, Rust y sobre la "free"desktop para poder expresarme correctamente y poder presentar mis ideas con claridad, no dejando sombras de duda, porque para la militancia es importante no escribir en modo panfleto. Es importante que nos respeten por ser militantes, y sin el lado técnico, es difícil convencer o hacer dudar a quienes generalmente no quieren escuchar. Si se apela solo a la militancia, esta será una causa perdida.

Entonces, me decidí a buscar información pero sin sesgo de confirmación. No quise ir "año por año" o ir a la sección "controversias" de un apartado de Wikipedia, por más que hubiese estado muy bien hacerlo. Quise forzarme a hacerlo bien: con la pasión de siempre, pero exponiendo a la "free"desktop de manera que nadie pudiese decir "estás mintiendo", "estás atacando por atacar", "le erraste", o "esto es más de lo mismo".
Fui a mirar el prontuario de freedesktop.org, como te comentaba, y fui encontrando mucho más de lo que había ido a buscar en principio. Y esto fue revelador: no solo encontré muchas más cagadas de la "free"desktop que las que yo ya sabía que habían cometido, sino que encontré un patrón sistemático.
Y a este patrón sistemático no es mi intención dártelo servido, sino que mi idea es que vos mismo lo vayas descubriendo a medida que vayas leyendo. Hay que desenmascarar a los idiotas, uno por uno. Hay que exponerlos. No conozco una mejor forma de honestidad ni de brindar respeto a quienes confían en mí.

Durante la construcción de mi instalador para CRUX me topé, una y otra vez, con el mismo nombre en el medio de cada problema: "free"desktop.org. Al principio pensé que al menos en una pequeña parte era mala suerte: "justo este paquetito está alojado en los servidores de ellos y no se puede descargar, bueno, lo busco en otro lado, debe ser infraestructura mal mantenida". Después empecé a ver que no era "solo ese paquetito" o "solo aquél". Y empecé, inconscientemente, a "registrar mentalmente". Y cuando esa "música" se empezó a repetir incontroladamente dentro de mi cerebro, me di cuenta de que no estaba mirando una serie de accidentes, sino algo con forma. Así que me senté a investigar en serio: qué es "free"desktop, qué prometió ser, y qué hizo realmente en sus 26 años de vida. Lo que sigue no son mis impresiones. Son los hechos que encontré, con fecha y con fuente. Al final, a la conclusión, si es que la tenés, prefiero que la termines sacando vos solo.

Abajo del todo, vas a encontrar enlaces a los artículos involucrados en la investigación previa a escribir este artículo.  


Empecemos por lo que dicen ser.

Según su propio Mission Statement, "free"desktop.org existe para ser un foro neutral en donde compartir ideas sobre tecnologías de escritorios de código abierto, y para apoyar especificaciones compartidas entre múltiples escritorios. Su principio rector, escrito por ellos, es que un desarrollador pueda usar el entorno de su elección sin quedar atado a uno en particular. 

Retené a estas 3 palabras: neutral, agnóstico, libre.

Ahora, los hechos.

El origen (marzo de 2000). freedesktop.org fue fundada por Havoc Pennington, quien era desarrollador de GNOME y trabajaba directamente para Red Hat. El "foro neutral entre todos los escritorios" nació, entonces, de la mano del escritorio más grande y de la empresa comercial más interesada en el asunto. Este es un dato fundacional que yo intuía e imaginaba pero que no sabía. Y al leerlo, no pude empezar a frotarme las manos como lo hacen las moscas.

HAL (2000–2011). La Hardware Abstraction Layer fue uno de los primeros grandes proyectos de "free"desktop. Era una capa que "permitiría" a los escritorios detectar hardware de forma portátil. GNOME y KDE, juntos en este tipo de decisiones, como siempre, la adoptaron como pieza central de su stack. Poco después, ya era obligatoria. Y con el tiempo, la propia gente que la impulsó la describió -cito a la documentación de Ubuntu de la época- como "una mole monolítica inmantenible" que además duplicaba funciones que ya resolvían udev y el kernel. Todos sabemos lo pesado y tosco que se fue volviendo Ubuntu con el correr del tiempo. Lo que pienso es que si esta gente erradicó este adefesio por las mismas razones por las cuales se convirtieron en lo que son, ¿cuánto más adefesio era HAL de lo que nos podemos imaginar?
La abandonaron. Ubuntu, Debian, Fedora, KDE, GNOME y XOrg tuvieron que hacer la "halsectomía" (terminología del momento, "halsectomy"): arrancarse HAL de encima y rehacer el trabajo. Lo impuesto ayer fue el lastre de mañana, y el costo de migrar lo pagaron las distros y los usuarios, no quien lo empujó. ¿Hubo consecuencias para la "free"desktop? ¿Perdió credibilidad ante tamaña barrabasada? ¿Hizo autocrítica? ¿Corrigió su accionar después de esto? ¿Dejó de ser tenida en cuenta?

PulseAudio: otra pieza empujada "verde" por la "free"desktop (2004–2008).
El servidor de sonido de "free"desktop, creado por otro personaje cuestionable, Lennart Poettering, se convirtió en el estándar de audio de facto de Linux. Pero más allá de que hoy no solo funciona bien, sino que increíblemente logró convertirse en una de las piezas bastión más importantes -al César lo que es del César-, lo interesante es cómo llegó a serlo. En 2008, en plena conferencia técnica (Linux Plumbers Conference), el propio Poettering resumió el estado del audio en Linux con una frase cercana a "es un quilombo", y describió a su propia criatura, para los usuarios al día, como "el software que actualmente te rompe el audio". Insisto, lo dijo su propio autor, en público, y lo reportó LWN también. El problema no era el diseño ni el trabajo de Poettering, en este caso, sino que hubo un organismo que, otra vez, se lo empujó a las distribuciones cuando todavía estaba inmaduro. Cuando Ubuntu lo adoptó por defecto en "Hardy Heron" (8.04) y a los usuarios se les rompió el sonido en masa, la respuesta de Poettering fue que Ubuntu "no hizo un trabajo estelar, no hizo bien la tarea". Es decir: se distribuye a todo el ecosistema un componente que el propio autor sabe que no está listo, que explota en la cara de la gente, y la culpa termina puesta en quien lo adoptó, también, apresuradamente. El patrón -empujar temprano, que el costo lo paguen las distros y los usuarios- ya estaba escrito acá, años antes de systemd. Yo no lo había visto, ¿y vos?

Systemd, hospedado en casa (2010). Poettering, otra vez, presentó a systemd como un reemplazo del init, con una promesa soberbia y pedante: mejorar un arranque que tenía años de ingeniería social y estabilidad y que no necesitaba ser mejorado. "free"desktop.org lo hospeda, y conviene detenerse acá un segundo.

¿Un "foro de interoperabilidad de escritorios" adopta, alberga y bendice a un init system, que no es un escritorio ni tiene que ver con interoperabilidad entre escritorios? Hoy, systemd creció hasta absorber los logs, la red, el DNS, los montajes, la resolución de nombres y la hora. ¿Ya sabía de esto la "free"desktop?

Y respecto a aquella petulante promesa original de "arrancar mejor", la discusión técnica nunca estuvo de su lado: init systems como runit, s6 u OpenRC arrancan igual o más rápido, con una fracción de la complejidad y de forma comprensible y KISS. No se impuso por ser mejor en lo que prometía: se impuso. Y listo.

La amenaza de udev (2012). Este es el hito que más me sorprendió, porque está por escrito, en la lista de correo de la propia "free"desktop. Los desarrolladores de systemd/udev -Kay Sievers y... Poettering, una máquina imparable de producir herramientas de mierda para UNIX- declararon, más o menos textualmente: "udev en sistemas sin systemd es, a nuestros ojos, un callejón sin salida... espero con ansias el día en que podamos abandonar ese soporte por completo".

Por favor, leelo de nuevo si es necesario, para situarte en el contexto real.

Un componente esencial para detectar hardware, del que dependía todo el mundo Linux, con sus mantenedores anunciando que planeaban cortar el soporte a quien no adoptara a systemd: esto está citado, en la web, con fecha.

La telaraña org.freedesktop.* (permanente). Abrí una terminal y pedile a dbus la lista de servicios (busctl list --system)... Vas a ver desfilar a piezas que por cuyos nombres parecen sacadas de Android:

org.freedesktop.Accounts 
org.freedesktop.DBus
org.freedesktop.DisplayManager
org.freedesktop.Flatpak.SystemHelper
org.trinitydesktop.hardwarecontrol
org.freedesktop.login1
org.freedesktop.NetworkManager
org.freedesktop.nm_dispatcher
org.freedesktop.nm_priv_helper 
org.freedesktop.PolicyKit1
org.freedesktop.RealtimeKit1
org.freedesktop.resolve1
org.freedesktop.UDisks2
org.freedesktop.UPower
org.freedesktop.systemd1

... y más... una tras otra.

Buena parte del sistema operativo, de punta a punta, cuelga del namespace (el espacio de nombres, el prefijo bajo el cual se registran servicios) de freedesktop. PolicyKit necesita dbus, tu escritorio necesita PolicyKit, logind conversa con systemd. La dependencia no se impone con un decreto: se teje, pieza sobre pieza, hasta que sacar una sola termina por arrastrarlas a todas juntas.

El costo de resistir: elogind. ¿Qué pasa si no querés a systemd pero tu escritorio pide logind? Alguien tiene que arrancar logind desde adentro de systemd y hacerlo funcionar en solitario: eso es elogind, y lo mantienen a pulmón proyectos como Gentoo, Void y Slackware. La libertad de no usar systemd no es gratuita: cuesta trabajo de ingeniería sostenido hecho silenciosa y generosamente por "terceros" para tapar el agujero que dejó otro diseño acoplado más de la "free"desktop.

La confesión (XDC 2018). No hace falta que se los acuse desde afuera de haber perdido el rumbo, porque el diagnóstico surgió desde el corazón mismo de la bestia. En el "XOrg Developers Conference" de 2018 (La Coruña), Daniel Stone -una de las figuras centrales de "free"desktop- dio una charla repasando la historia y el futuro del proyecto. Como lo resumió LWN (uno de los medios técnicos más serios del mundo Linux) al cubrir esa presentación: "free"desktop había empezado con foco en los escritorios libres y su interoperabilidad, pero perdió ese rumbo -y su rumbo en general- por el camino. Es decir: la propia organización, presentándose a sí misma ante los suyos, admitió haberse desviado de aquello para lo que... supuestamente... había nacido. Cuando el que confiesa el extravío es el propio protagonista, sobran los dedos acusadores.

Wayland y el tic tac de un reloj que permanentemente desmiente. Wayland es un proyecto de la propia "free"desktop.org -se desarrolla bajo su paraguas y se aloja en su infraestructura- (¿no es raro esto?), presentado en 2012 como el "sucesor" de X11: otro acto ya no solo de transgresión, sino de gula y soberbia endémica. Y acá es en donde el tic tac los delata. Estamos en 2026, es decir, 14 años después del inicio de este insuceso "ad aeternum".
A un proyecto joven se le puede perdonar que "aún esté verde", pero a uno que lleva 14 años de "desarrollo" y todavía con ínfulas, me parece que no. Porque más o menos ese fue exactamente el tiempo que tenía XOrg cuando ya era una roca sólida sobre la que se paraba toda infraestructura seria "UNIX like". Wayland tuvo el mismo plazo, con el respaldo institucional, además, de "free"desktop (¡y con Red Hat detrás!), y todavía hoy y ya sin mantenimiento serio, va rezagado respecto a X11 en cosas fundamentales como accesibilidad, grabación de pantalla, restauración de sesión, y usando parches horribles y toscos para que las aplicaciones diseñadas para XOrg funcionen bajo este "protocolo". El dato que importa, entonces, no es que Wayland sea inmaduro, por más que este sí sea un dato excluyente y determinante: es que se lo empujó verde, otra vez, tal como se hizo con otros productos, desde el primer día como el reemplazo inevitable, con todo el peso de la organización que decía ser un "foro neutral", y 14 años y un imperio de recursos después sigue sin cubrir lo que X11 ya cubría. La adopción se decretó; la madurez que la justificara nunca llegó.

XLibre y la purga (junio de 2025).
Enrico Weigelt, uno de los desarrolladores más activos de XOrg, bifurcó a este proyecto en otro llamado XLibre, para seguir manteniendo y modernizando a X11, y esto fue tanto un hito a nivel generral dentro de la órbita del software libre, como una victoria "personal" para muchos de nosotros, entre quienes me incluyo. Fue hermoso estar en Artix justo cuando surgió XLibre y ya poder empezar a usarlo de entrada. Yo estuve ahí.
Al día siguiente de anunciarlo, "free"desktop le baneó la cuenta de su GitLab a Enrico, le borró los repositorios, le cerró los tickets y junto con esto, hicieron que se perdiesen más de 140 merge requests. El baneo lo ejecutó, nada menos que el Comité de "Código de Conducta" de la organización, el cual hasta hoy no explicó públicamente qué hizo Weigelt para merecerlo. Del lado de GNOME, algunos desarrolladores lo trataron públicamente de "nazi" y "fascista".

Y acá tengo que ser escrupulosamente justo, porque es la única forma de que esto valga

Weigelt no me parece que sea ningún santo, y de hecho, yo no comparto algunas de sus posturas. Es, sin dudas y por más que me encante lo que significa XLibre en todo sentido, un personaje polémico. En 2021 tuvo un encontronazo sonado en la lista del kernel por difundir seudociencia antivacunas. Y ojo: que lo haya cruzado y reprendido públicamente Torvalds, por esto, me parece perfecto, pero no lo pongo como sentencia moral ni ética incuestionable, porque tampoco Torvalds es garantía demasiado confiable, más allá del kernel "per se" en donde sí es un líder que no se discute y un excelente director de proyecto. Tristemente, pienso que ninguna de nuestras figuras de mayor relevancia están exentas de poder atacarlos de manera crítica con munición pesada. Ni siquiera Stallman, por más que aquí se lo respete, y mucho.

XLibre, además, se proclama "libre de DEI" (Diversidad, Equidad e Inclusión), metiéndose en una guerra cultural que no es necesaria ni es la mía.
El mismo hombre que lo lidera es el que difunde seudociencia antivacunas en foros técnicos, mezcla su proyecto con retórica de guerra cultural, y es también el mismo que en su discurso público utiliza términos como "elementos tóxicos" y "buitres de Big Tech" con un tono que a mucha gente le puede sonar tanto a anticorporativismo, por un lado (Entropía sí suscribe fuertemente a esto) como a guerra cultural de derecha dura, no a meritocracia tecnológica descontaminada, que es como verdaderamente deberían manejarse estos proyectos: si sos bueno/a en lo que hacés, bienvenido, sin importar tu orientación sexual ni las cuestiones de género, nacionalidad, etc.
Cuando alguien pone "libre de DEI" en un README de un servidor gráfico -en donde claramente el comentario es un sapo de otro pozo y resta enormemente- no creo que lo esté poniendo como regla de arquitectura, sino como bandera, como inequívoca señal de pertenencia a un bando cultural por el cual ni siquiera tengo simpatía. No sé si ese es exactamente el enfoque de Weigelt, pero me hace ruido, a mí, que tampoco soy de opinión blanda ni de esquivar el bulto, como ves.

XLibre también empieza a tener críticas técnicas grandes que empiezan a parecer legítimas. De hecho, otra vez en Entropía se dio un intercambio interesante respecto al tema, de la mano de los compañeros "Leo" y Miguel González, quienes comentaron -recién- que hubo tremendo revuelo en Artix por problemas no solo técnicos con XLibre sino también graves y de conducta de uno de los mantenedores de XLibre -no sé quién-, y que Artix decidió erradicar a XLibre de sus repositorios y sus ISOs.
 
No estoy santificando a nadie, como claramente podés ver; digo exactamente esto y ni un ápice más. Pero justamente por eso el caso es tan claro: no importa lo "impresentable" que a uno le pueda llegar a resultar una persona. Una cosa es discutir el mérito de un fork, o repudiar las ideas de quien lo hace, y otra muy distinta es que el "foro neutral" -a través de su comité "de conducta", sin causa pública- borre del mapa al que se atreve a mantener vivo lo que ellos decidieron enterrar unilateralmente. Porque acá está la contradicción que los desenmascara: a ese X11 supuestamente muerto lo siguen manteniendo hasta el día de hoy. ¿No era reemplazable a corto plazo? ¿No era que el futuro era Wayland? ¿Qué futuro, de qué realidad paralela, o realidad "para lelos"?

La estocada, 10 días atrás (20 de agosto de 2026). Y acá llegamos al presente, con un episodio que se puede leer quizás de varias maneras, así que haré esto: yo te lo cuento entero y vos elegís lo que más te interese.

Salió el XOrg Server 26.1.0 Release Candidate (acabo de enterarme, yo de esto no sabía nada, y agradezco pertenecer a un espacio como el de Entropía, en el cual cualquier compañero, en cualquier momento, puede arrimarte una información importante: en este caso los laureles se los lleva Matías Gastón Santiago por arrimar al grupo de Telegram un artículo hablando de esto, cosa que agradezco).
Salió la última actualización mayor de X11, entonces, como te venía contando, siendo anunciada como una de las limpiezas más agresivas en 35 años del X Window System.
¿Qué hace, concretamente? Extirpa a XWayland del árbol de XOrg y lo migra hacia un proyecto separado, siendo 1 solo merge request el que tocó decenas de archivos y borró decenas de miles de líneas de código.

Para entender el gesto hay que recordar la secuencia más o menos entera.
XOrg fue declarado "abandonado" por su propio project owner, Adam Jackson -de, no podía ser otro lugar que, Red Hat-. Durante los años de total, irresponsable y vergonzoso abandono, lo único que se mantenía vivo y activo dentro del árbol de XOrg era, justamente, XWayland: la única pieza que le sirve y le es funcional a Wayland. ¿No es esto, también, extremadamente raro?
Ahora, esa pieza se va a un repositorio propio, cuidado y con futuro, y a XOrg le queda el resto, la "contención en modo mantenimiento", sin desarrollo arquitectónico nuevo, solo con mínimos y estrictamente necesarios parches de seguridad. La justificación oficial es algo así como "tiene sentido, dado hacia dónde va (mejor dicho, "logramos forzar a que vaya") el ecosistema; la mayoría de las distros ya utilizan a Wayland -nunca mejor dicho- "por defecto". Porque Wayland sigue siendo un defecto.

Se podría decir que parte de esa limpieza es "higiene legítima", albergándose código desde hace más de 20 años, lo cual, por sí solo, no justificaría su remoción, pero démosle un mínimo de crédito para no pensar mal siempre. Además, modernizar no es, precisamente, un crimen. De acuerdo. Concedido.
Pero en cuanto dirigís la vista hacia quién sostiene la pala y hacia dónde cava, ves que son los mismos que declararon a XOrg abandonado y a Wayland como "el futuro". Los mismos que durante años solo cuidaron la parte pro-Wayland. Y la aceleración de todo esto llega justo después de aparecer un fork dispuesto a mantener a X11 con vida. No hace falta discutir si cada línea borrada estaba bien borrada: alcanza con mirar en la misma dirección que la intención que la tiñe, y quién la eligió.

Quién paga esta joda colosal. Spoiler: no es "free"desktop, el impune tacaño abusador de siempre y el origen de todos estos males.
Como recordó "The Register" -que no es precisamente un panfleto, ¿verdad?-, "free"desktop no escribió a XOrg. Lo heredó, así como el hijo vago e inútil de un multimillonario hereda todo su patrimonio solo por ser "hijo de". Y el patrocinador principal del mantenimiento de una enorme cantidad de ese código es Red Hat, subsidiaria de IBM desde 2018, la misma empresa de la que emergió el autor de systemd. La organización que hospeda a systemd, que define el namespace del que cuelga la dependencia moderna, que empuja a Wayland obscena e incansablemente, que baneó al que resistió y que ahora parece estar empezando a desmantelar a XOrg, siempre sin dar explicaciones, está financiada y poblada, en su núcleo, por la misma corporación.

Ese es el prontuario. Lo dejo acá, con las fechas y las fuentes sobre la mesa.

Y ahora sí, después de los hechos, me permito una sola reflexión, porque creo que me gané ese derecho, leyendo honestamente y denunciando más de una vez a todas estas cosas.

Hay una enorme diferencia entre una organización que arbitra y una que conduce, entre ser juez y ser parte. Un árbitro serio se basa en reglas parejas y deja hacer, y cuando se equivoca y hay dudas de su accionar, siempre se puede ir a consultar su historial y ver si se equivocó, también, de manera pareja. Lo que muestran estos hechos, uno tras otro, no es a un árbitro que a veces erra parejo, sino a una constante: siempre el mismo escritorio favorecido, el mismo init alabado, el mismo servidor gráfico empujado con vehemencia y sin escrúpulos, la misma empresa detrás. Y del otro lado, siempre lo mismo, también: el bastión abandonado, lo fácilmente auditable desmantelado, el que resiste, descartado sin miramientos. 26 años son demasiado tiempo como para que todo caiga siempre en el mismo lado, solamente por cuestión de puro azar: cuando la moneda sale "cara" 26 veces seguidas, la explicación honesta no es la suerte, es mucho más fácil y directa: la moneda es trucha, y el dueño de la moneda es corrupto y responsable de eso. Y debe pagar proporcionalmente, según el daño causado.

Por eso, cuando escribo "free"desktop -con las comillas puestas como pinzas, como al intentar asir algo en avanzado estado de descomposición-, no es un exabrupto ni es "joda": es la acción a la que me llevaron los propios hechos. Miralos vos y sacá la tuya.

FUENTES CONSULTADAS:

https://en.wikipedia.org/wiki/Freedesktop
https://wiki.ubuntu.com/Halsectomy

https://en.wikipedia.org/wiki/PulseAudio
https://en.wikipedia.org/wiki/Lennart_Poettering
https://lkml.iu.edu/hypermail/linux/kernel/1210.0/03783.html
https://u1f383.github.io/linux/2025/05/25/dbus-and-polkit-introduction.html
https://alien.slackbook.org/blog/replacing-consolekit2-with-elogind-first-steps
https://lwn.net/Articles/767258/
https://www.bigiron.cc/guides/wayland-vs-x11-in-2026-what-still-doesnt-work-on-wayland
https://commandlinux.com/statistics/wayland-vs-xorg-adoption-trends/
https://lists.x.org/archives/xorg-devel/2025-June/059396.html
https://www.theregister.com/2025/06/10/xlibre_new_xorg_fork/
https://www.webpronews.com/xlibre-promises-to-revitalize-x11/
https://lists.x.org/archives/xorg-announce/2026-August/003741.html
https://www.linuxcompatible.org/story/xorg-server-2610-release-candidate-drops-xwayland-kills-autoconf-and-strips-legacy-code
https://www.theregister.com/2021/09/22/xorg_server_21_1_0/

CRUX, una travesía de 26 días y contando.


Reconstrucción de 
un "largo y ventoso camino" de un hombre y una máquina con CRUX: un instalador modular KISS para CRUX Linux.

Let me know the way: crónica cronológica del período 1 al 23 de agosto de 2026.

Hugo Napoli, Entropía binaria.




Esta crónica se reconstruye a partir de 8 hilos simultáneos de trabajo de Hugo Napoli sobre CRUX Linux, desarrollados a lo largo de todo el mes de agosto de 2026. Una línea de tiempo actúa como columna vertebral. Sobre ella penden aciertos, decisiones de arquitectura, problemas graves, responsabilidades ajenas, sano entusiasmo y enorme amor y esfuerzo genuino por utilizar y compartir una de las piezas más nobles que el software libre haya podido parir: un gran sistema operativo que invita a que lo arme uno mismo, micropieza por micropieza, y cuya invitación linuxera le llega al compañero usuario de software realmente libre, justo en el mismo momento en el que, por ejemplo, un gran mecánico podría estar dándose cuenta de que jamás armó su propio automóvil, pero que siempre ha vivido reparándole a otros, con dedicación profesional, lo que nadie repara.

Esta crónica con mixtura de andanza y travesía, está escrita en gran parte en tercera persona, porque para esto "se evaluó" que era la mejor posibilidad y el mejor escenario: de este modo la libertad poética es mayor, a la vez que la distancia emocional también. Porque los procesos técnicos complejos están cargados de emociones. Siempre.

Vas a encontrarte con partes demasiado técnicas y otras mucho más narrativas. Si te copa, hacé el esfuerzo y leé todo, intentando comprender de qué se está hablando. Fue enriquecedor haberlo transitado, y quizás para ti, querido lector, querido amigo, también lo sea al leer este texto. 


Los 2 protagonistas y sus responsabilidades.

Antes de la cronología, conviene fijar quién puso qué, porque esto fue titánico y fue de a 2, un hombre y una máquina. Porque en Entropía sentimos que es un orgullo y un privilegio trabajar con una máquina de las prestaciones que hoy nos brindan los LLM, y más cuando el fin es noble: hacer lo que nadie hizo antes, y además compartirlo.

Hugo (el hombre). Intervención directa en hardware real, dmesgs, logs, criterio férreo e innegociable de qué se quería y qué no, filosofía KISS, X11, no-Wayland, no-systemd, no-PipeWire, no-Gnome, no-blobs innecesarios.
También la decisión de arquitectura en cada milimétrica, cuidada y recelosa bifurcación, y - esto es central - la exigencia de verificar exhaustiva y empíricamente antes de dar nada por cierto. Leyó cada respuesta en vez de copiar y pegar recetas de una máquina, para no volverse él mismo máquina de la máquina. Cazó bichos, corrigió errores de diagnóstico, se hizo cargo de su propia derrota técnica así como también de cada aprendizaje, incluso estando muchas veces agotado, estresado, "caliente", siempre sin perder el norte: lo comunitario, lo que no solo "está bien PARA MÍ".

Claude (la máquina). Investigó y puso los símbolos de kernel, las reglas de dependencias, las búsquedas, los diffs quirúrgicos en el estilo BASH de Hugo. Se equivocó varias veces con hipótesis presentadas con demasiada confianza, y fue detenida, corregida, reencauzada, con precisión, experiencia y donde cupo, experticia humana acumulada.

Pero "responsabilidades", también significa otra cosa en esta crónica: el registro de las trabas estructurales evitables que cargaron sobre el proyecto gentes que recitaron mal su parte. Eso tiene su propia sección al final ("El acta"), y aparece señalado en la línea de tiempo cada vez que corresponde. Zapatero, a tus zapatos, seas Torvalds o Gates. Con la verdad no se ofende ni se teme, y no se le hace el caldo gordo a nadie ni se barre para abajo de la alfombra. Como militantes, debemos denunciar lo que dentro del software libre funcione mal, o estamos siendo títeres de otros ante gente que nos escucha sincera y atentamente y que nos regala su confianza. ¿Hay algo más preciado que eso? ¿Algo que cuidar más? Para nosotros, este es - y será siempre - el fin de la discusión.


El origen antes del origen (julio de 2026).

La travesía de CRUX no empieza ni ahora ni con CRUX, increíblemente. Ya se venía peleando contra un mismo enemigo estructural, pero en otro frente: Barry (el metabuscador en Go de entropIA criolla, la IA local del laburante, que podés encontrar y descargar gratuitamente desde acá) se daba de frente contra "Anubis", el "proof-of-work anti-bots" que había vuelto inservibles las instancias públicas de SearXNG, haciendo que respondiesen "0 de 74". Con ese mismo "Anubis" nos íbamos a volver a cruzar, salvo que esta vez con otro compañero (CRUX), pero días después. El monstruo convocado conscientemente y a sabiendas por terceros (es importante resaltar que no solo es utilizado por mega corporaciones como Google) ya estaba presentado antes de que empezara la presentación por orden alfabético del elenco completo de los actores de esta, en parte, obra de terror.


LÍNEA DE TIEMPO.

1° de agosto de 2026, el verdadero punto de partida.

El origen de todo, en realidad no fue un capricho, sino un acto de responsabilidad. Tim "beerman" Biermann, uno de los desarrolladores más activos de CRUX, vio la saga de videos sobre CRUX producidas en Entropía, junto con las 2 guías escritas (CRUX y CRUX EX), las cuales incluyó en la web oficial y podés ver acá ( https://crux.nu/Main/Links ) y señaló, con muy buena onda (con ese apodo no podía proceder de mala onda nunca), un error común a todas: las instalaciones de Entropía terminaban utilizando a rEFInd para el arranque del sistema, cuando en realidad, CRUX, no lo necesita. No lo dijo con amenaza ("cambialo o borro tus links"), lo dijo como un par. Pero sobre todo, como consejo sabio de un buen tipo.

Se dejó pasar el tiempo, se extravió el e-mail en donde estaba dicha información (1), y ahora se quiso saldar esa deuda pendiente con CRUX y con Tim, corrigiendo esto y generando, además, un aporte útil que en lo posible elevara la apuesta y fuese importante.

Y acá viene una anécdota dolorosa, que fue el verdadero combustible para poder arrancar de una vez todos los motores a su máxima potencia. Y en esto, Ni Tim ni CRUX tuvieron nada que ver.

Para quienes poseemos el gusto por compartir -el mundo del software libre está repleto de gente así-, uno disfruta mucho esa situación. Uno no hace cosas "para compartirlas", como si fuese una misión en la vida. Uno hace cosas, y luego, si cabe, las comparte. Y como sabe que terminará compartiendo lo bueno, no cualquier cosa, cada cosa que se lleva entre manos a algún lugar para ser compartida, es un tesoro para quien genuinamente posee ese sentimiento: "voy a entregar esta gema altamente preciada por mí a una comunidad, o a un amigo, o a alguien que creo que de verdad lo necesita... tanto como yo lo necesito". Porque esta es la idea. No se trata de hacer cualquier cosa y creernos sénecas que todo lo que producimos va a iluminar, a importar o a ser necesario o útil.
Cuando trabajás durante semanas, con ahínco, con seriedad, con pasión y responsabilidad sobre algo específico... Cuando sabés que ese algo es complejo y que lo estás comprendiendo, que se te van develando sus misterios a cada paso que das en tus investigaciones y prácticas... Cuando avanzás a paso lento pero firme... y cuando culminás la etapa exitosamente, es cuando te decís... ¿y ahora, en dónde hará honores esta querida pieza a la que tanta dedicación le puse, tanto tiempo y esfuerzo me llevó, y a la cual sé que hay gente que la quiere? Eso fue lo que representó "TDE" (Trinity Desktop Environment) para mí.

El proyecto se llamó "TDEntropía", y se basó en llevar TDE a Void Linux, y lo podés encontrar acá, junto con su complemento "tYb" (Trinity y Bambino) y un panel de control 100% funcional hecho en estilo "dialog" (TDE_YaST).

La comunidad de Entropía fue siguiendo los avances, con respeto, colaborando, aconsejando, esperando el resultado. Como siempre. Es la barra que sabés que no te va a dejar tirado. Uno va construyendo y programando, apoyándose en la confianza de compañeros que se sabe que están siempre ahí. Al terminar y hacerse la pregunta "¿y ahora?", en lo primero que se piensa, es en "en el epicentro mismo", el cual, en este caso, era en la comunidad de Void Linux, sistema desde el cual por ahora se maneja todo lo de Entropía y lo de Hugo.

Se publicó en el reddit de Void Linux este arduo trabajo.
Duró cientos de visualizaciones, algunos "likes" y... menos de 2 minutos reloj, siendo eliminado sin miramientos por alguien del equipo de moderación.

Enlace (caduco) a la publicación: https://www.reddit.com/r/voidlinux/comments/1v9y21s/contenido_eliminado_por_la_moderaci%C3%B3n/ 

Imagen del (in)suceso:

Ante el debido y estupefacto reclamo, no se recibió más que (más) distancia y frialdad (aún), marcándose notoriamente la distancia que media entre algunos desarrolladores, o moderadores, o ambas cosas, y los programadores que queremos contribuír no con ellos, sino con toda una comunidad entera, pero que sabemos bien que el primer filtro empieza con quienes están al frente de la custodia... Custodia que a veces se pasa de horno.

Pero hay otro combustible que nos mueve desde siempre: el anticorporativismo, sobre todo el que está tiñendo a todo Linux y al cual no es posible evitar ni esquivar sin conocimiento y esfuerzo, y que es aquél que promueve, por ejemplo, a una pieza inmadura y eternamente impresentable como WayLand por sobre el bastión de bastiones, XOrg. O la que profesa que "systemd" llegó "en un inicio" para "mejorar el arranque de los sistemas Linux", mientras que, ni llegó para eso, ni lo logró después de bastante más de una década. Y se podría seguir con las particularidades de la comunidad de Gnome y con el propósito y la estética de sus productos, con PipeWire, y ya de paso, con IBM, RedHat, Canonical con Ubuntu y sus polémicas re-creaciones. Pero ya es más que suficiente, mucho más que para un simple buen entendedor. Y que se entienda bien: Entropía no condena ni discrimina al usuario de a pie, sino a la idea y a quienes la impulsan. Que vos uses Ubuntu, Wayland, Snaps, Flatpaks, Gnome, a Entropía no le interesa ni tampoco le interesa "corregirte". Lo que nos interesa es que te llegue nuestra palabra (cuando se trata de conversaciones con linuxeros o BSDeros, le hablamos a un 1% dentro de un 6% y lo tenemos claro) y que pienses por ti mismo.

De este caldo de cultivo nació todo.

La cadena fue:

1. Como las guías de Entropía (videos, posts) utilizaban rEFInd erróneamente, y...
2. una de ellas (la más general, profusa y global) fue actualizada, reemplazando rEFInd por GRUB... Y como GRUB en UEFI es en donde más suelen aparecer trabas, y para CRUX es maquinaria de sobra, y esto no era lo mejor...
3. Se trabajó en el método correcto, que era el que el desarrollador comentaba, y que supusimos que era "EFI Stub puro", en donde el kernel es iniciado por la propia UEFI, de manera directa desde una entrada UEFI con "efibootmgr", sin "bootloader" intermedio.

Y acá ya se estaba compilando al kernel de CRUX con "CONFIG_EFI_STUB=y", habiendo construido ya medio camino hecho sin ser conscientes de esto.

Decisión de arquitectura #1: no corregir solo la guía
, sino construir un instalador automatizado ("InstaCrux.sh") que hiciera la instalación entera por EFI Stub, para compartirlo y pulirlo con/en la comunidad de Entropía primeramente y presentárselo a los desarrolladores luego de estar medianamente maduro el proceso, es decir, pasar de "corregir un post" a "construir infraestructura socialmente útil".

Acierto importante #1: entender que el problema del bootloader no se resolvía eligiendo otro gestor, sino eliminando la capa entera. El método más simple era además el más robusto. KISS en estado puro.

Primeros días de agosto: InstaCrux.sh, el instalador base.

Este es el hilo troncal más largo de toda esta travesía plagada de cientos de anotaciones. Acá el instalador base fue tomando su forma definitiva al quedar demostrado que podía particionar, formatear, compilar el kernel, instalar software base, configurar el teclado, la zona horaria y arrancar por EFI Stub... Y acá también es en donde empezaron a aparecer los primeros golpes serios. 

Los hitos dentro de esta etapa.

Problema grave #1: el "kernel panic" de la microSD y el gestor de NVRAM.

Al pasar de la máquina virtual al hardware real (una laptop Acer Aspire A325-42, AMD Barcelo/Ryzen, con CRUX en una microSD), el sistema entraba en pánico: "VFS: Unable to mount root fs". El kernel buscaba la raíz en "/dev/sda2" pero no la encontraba a tiempo.

El diagnóstico se hizo en frío, desde Void, montando a la partición de CRUX sin necesidad de "bootearla". En varias ocasiones, no fue necesario arrancar el sistema roto para poder trabajarlo.
Entonces, apareció la pista que no cerraba: un "lsblk -o NAME,SIZE,TRAN" mostró que la microSD se presentaba como "sda", con transporte USB, y esto significaba que la ranura "SD" de la laptop estaba cableada internamente como lector USB, por eso el sistema nunca la vería como el esperable "mmcblk", y por eso los drivers MMC no servían de nada -los que importaban eran los USB-. El ajuste final resultó ser un detalle mínimo pero difícil de terminar encontrando: faltaba "rootdelay". Sin initramfs, el kernel salía a buscar a la raíz antes de que el circuito USB terminara de despertar, y fallaba estrepitosamente. Con darle 5 segundos de paciencia ("rootdelay=5") al "CONFIG_CMDLINE", validándolo primero con una entrada NVRAM de prueba descartable antes de volver a compilar ("efibootmgr -c ... -u 'root=/dev/sda2 rootdelay=5'"), todo empezó a fluir.

Como CRUX no posee un cargador de arranque dedicado, como GRUB y otros, se creó un script BASH para gestionar la NVRAM de manera directa, especialemte tras cada reinstalación, ya que es posible que se dupliquen las entradas de arranque del sistema. Dicho script es "00_EFI_acomodeitor_[CRUX].sh", y lo podés encontrar acá, junto a otros de su misma especie: https://codeberg.org/entropiabinaria/AMPCI

Acierto importante #2: rechazar los diagnósticos a ciegas.

Frente a la avalancha de comandos y el debug "ad infinitum", el freno "no intentar resolver 20 interrogantes juntas, sino ir de a una cosa por vez" fue lo que mantuvo el método limpio y evitó quemar tiempo e introducir ruido y basura en un proceso que siempre intentó mantenerse limpio y pulcro.

Decisiones de arquitectura de esta etapa.

- Kernel sin initramfs, con los drivers de arranque (SATA/NVMe/USB/MMC/SCSI) forzados built-in ("=y").
- Función "elegir_tipo_medio" con opción interna/externa/manual, para agregar "rootdelay" condicionalmente.
- Función "advertencia_updated": avisar al usuario que utilice la ISO comunitaria de Jaeger (crux.ninja) y no la oficial, para evitar compilar monstruos como "fftw", "gcc-fortran", "rust" o "llvm" a mano. ¡Gracias, Jaeger!
- Corrección del teclado en chroot: mover "elegir_teclado" antes de establecer_password_root" y aplicar "loadkeys" de inmediato, para que la contraseña se tipee con el "layout" correcto.

10 de agosto de 2026: el video en VirtualBox.

Hilo "Solucionar video en Crux VirtualBox sin Guest Additions". CRUX en VBox no levantaba X: "no screens found", porque no existía "/dev/dri/" (faltaba el módulo "vboxvideo").

Decisión de arquitectura #2: en lugar de compilar las "Guest Additions" (pesado, solo para pruebas), evaluar el driver vesa forzado, que no toca "/dev/dri" en absoluto y renderiza por framebuffer. KISS. La idea posterior: que el instalador pregunte al final "¿MV? [1] QEMU [2] VirtualBox [3] No" y actúe en consecuencia, dejando el hardware real intacto. Esto no se implementó y está lejos de hacerse: no es prioridad en este momento. Si alguien quiere hacer ese aporte, será bienvenido.

Que CRUX funcionara, en un inicio, en VBox y no en bare metal, no fue demérito del instalador, sino un caso trivial. El NIC y el video emulados de VBox utilizan drivers universales. El "bare metal" es el examen de verdad, y lo que importa. Tal vez más adelante se brinde cobertura para máquinas virtuales, pero por ahora, la idea es que CRUX funcione bien en donde ya lo está haciendo y en donde realmente debe hacerlo, lo cual es en máquinas físicas. 

12 de agosto de 2026. El ciclo de trabajo se había vuelto agotador: producir en Void, subir a CodeBerg multiplicidad de scripts y subscripts (todos con cambios de prueba mínimos), eliminar vestigios de procedimientos anteriores en CRUX, hacer "rollback", descargar en CRUX por consola las nuevas versiones, ejecutar, ver si los "fixes" habían resuelto los problemas y volver a empezar ante cada error, muchas veces reinstalar CRUX por encima de CRUX otra vez, recompilando a lo bestia...

Anyway, you'll never know... The many ways I've tried...

Los LLM son superestructuras espectaculares, sí, pero muchas veces la ayuda de un LLM no es la solución total ni final, ni ahorra tanto tiempo como parece... o como debería.

Un ejemplo concreto: la ISO resultante quedaba con archivos pertenecientes a root, y hubo que resolverlo con "ajustar_propietario", usando las variables $SUDO_UID y $SUDO_GID para devolver la propiedad al usuario invocante. Pero el punto de fondo no es que la IA escribiera código frágil: es que lo escribió con patrones que produjeron fallos en el borde, en el momento del éxito, que es en donde menos se los busca. No reventaba en el camino fácilmente auditable. Y este "camino feliz en el bosque de Caperucita Roja" no es en donde se termina fogueando a una buena pieza de software libre.

También se creó a EtherFI.sh, una herramienta para conectar a Internet a un sistema sin entorno gráfico, especialmente por WiFI, en donde el proceso es tedioso, mecánico y repetitivo:

https://codeberg.org/entropiabinaria/EtherFi

Mediados de agosto - crux-instapelao.sh, la post-instalación.

https://codeberg.org/entropiabinaria/crux-instapelao 

Chat "Instapeláo" (el más extenso de todos hasta el momento de escribir este artículo) y "Purga de XFCE". Nace este otro script, que corre sobre el CRUX ya instalado y arrancado. Es un terreno menos hostil (sin chroot, sin kernel, sin particiones), pero no por esto estuvo (ni está, posiblemente, aún) exento de enormes batallas. Quizás las peores.

Corrección de fondo #1: CRUX no utiliza OpenRC (como Void), ni runit, ni systemd. Usa SysVinit clásico con initscripts al estilo "BSD": los servicios se hallan en el array "SERVICES=(...)" de "/etc/rc.conf". dbus se levanta agregándolo al array, no con "sv", "rc-service". ni mucho menos con systemctl. Yo a esto no lo tenía tan claro: solo lo recordaba apenas, por haber trasteado con algún Windows Manager como OpenBox y el que más me gusta, IceWM. Resultó ser increíblemente sencillo de utilizar, y lo mejor de todo, sumamente intuitivo:

/etc/rc.d/servicio start servicio

Decisión de arquitectura #3 (fuerte): root es root y user es user. Nada de la idiotez de sudo y "poné-tu-propia-contraseña". Nada de la sobreidiottez del "sudo timeout". Separación estricta de privilegios, seguridad, privacidad desde el diseño raíz.

Purga de XFCE: por la poca fiabilidad del hosting y por ser XFCE experimental en CRUX, se extirparon quirúrgicamente del script 2 de las piezas elegidas inicialmente como más importantes, no sin pesar: XFCE y SLiM, dejando intacto todo lo demás (XOrg base, audio, usuario, servicios, infraestructura). Se tuvo que hacer una intervención con inteligencia artificial para eliminar los rastros, porque de otro modo, la opción hubiese sido reescribir todo desde cero, en medio de un estado demasiado avanzado de progreso. Se depuraron y purgaron decenas de funciones huérfanas y variables muertas durante esta etapa.

La idea era entregar a CRUX con XFCE, y se trabajó en ello hasta que fue más sensato abandonarlo que "seguir trabajando en el reviente 1/? de la pieza 1/58 luego de  5 días seguidos de incertidumbre, caos, estrés y ganas reales de abandonar todo el proyecto por ser en extremo agotador y muy poco prometedor en los hechos".

Resiliencia ante infraestructura rota: se construyó "intentar_depinst", una función que envuelve a "prt-get depinst" con reintento automático, detección de fallos de descarga y un menú de cuatro opciones (reintentar / saltear este / saltear todos / abortar), más su compañera "verificar_conexion_y_ports". Para la señal interna de "salteado a propósito" se eligió el código de salida 13. La primera opción había sido 666 —por razones que no hace falta explicar, tratándose de quien se trata-, pero los códigos de salida en UNIX solo llegan hasta 255: cualquier número mayor "se da vuelta" y 666 terminaba convertido en 154. Detalle tonto, pero ilustrativo del terreno. Y esta contención resultó profética: fue exactamente lo que evitó que el script muriera más adelante, cuando "free"desktop (4) empezó a rechazar descargas.

Corrección y problema grave #2: Rust "el foráneo" y la variable "JOBS" vacía.

"prt-get sysup" fallaba compilando rust 1.98.0 con:
"error: a value is required for '--jobs <JOBS>' but none was supplied".
Se persiguió primero la hipótesis equivocada (el jobserver de GNU Make colándose por "MAKEFLAGS"). Hubo explicaciones confiadas que resultaron incorrectas. Lo que resolvió el caso fue la insistencia en ver la fuente real: "prt-get cat rust" reveló la línea del Pkgfile, en donde aparecía, otra vez en un lugar totalmente predecible, un viejo conocido: Python.

./x.py --config=... install -j ${JOBS}

¡Como para no tenerles bronca!

El port usa la variable "JOBS", no "MAKEFLAGS". Se había definido MAKEFLAGS="-j16" pero nunca "JOBS", así que Rust ejecutaba "./x.py install -j" con la variable vacía (ver "Rust" y "py" juntos en la misma oración ya empieza a causarle estragos a mi paz mental...). El error era propio, no de Rust: la evidencia empírica del Pkgfile mató a todas las suposiciones. La solución fue que "configurar_paralelismo" siempre exportase ambas variables ("JOBS" y "MAKEFLAGS"), incluso en modo mononúcleo, en donde se fija explícitamente "JOBS=1". Porque este es el detalle fino: a Rust no le molesta compilar con 1 solo núcleo, lo que le molesta es que la variable esté vacía. Con "JOBS=1" (bien definida), compila sin chistar aunque sea con 1 solo core, siendo que lo que no perdona es el "-j" pelado, sin número detrás. Rust en este caso no supo qué hacer con la situación, ya que no pudo manejar a una variable en blanco, la cual, si nos ponemos estrictos, no es necesaria ni intuitiva dentro del mundo UNIX. Lleve su chirlo por bruto, y a caminar derechito. 

Por este tipo de "detalles omnipresentes" es que digo que una tecnología es foránea -muchas veces tildándola como "NTI"- (3), que muchos desarrolladores, al implementar tecnologías, no saben lo que hacen -pese a que "sepan mucho"-, que no les interesa el verdadero contexto, que no son de acá, que no pertenecen a este ecosistema, que no lo entienden. Son como caballos con antiparras: sabrán muchísimo, sí, pero programan como quien llega a una casa ajena y empieza a mover los muebles sin preguntar. Porque no saben -ni les importa- el hecho de que la organización de las piezas es el producto de la depuración de ensayos, en el tiempo, el que lleva a los habitantes de ese ecosistema a disponerlos así y ahí.

Acierto importante #3, y metodológicamente quizás el más valioso: la autoexigencia de ver el Pkgfile en vez de aceptar cualquier explicación teórica al segundo o tercer error grave.

No adivinemos: leamos la fuente. Esta disciplina es la que distingue a un ser sólido de uno que simplemente fue afortunado durante el mismo.


Problema grave #3: el footprint NEW de... otra vez, Rust.

Compilar Rust "exitosamente" -si es que se puede decir así- fue una de las peores "malas ligas" de todo el proceso. Justo había aparecido una versión nueva de Rust que dejaba obsoleta, por un pelín nomás, a la que Jaeger tenía empaquetada en la ISO Updated, y eso obligó a más de 2 horas de compilación solo para esto. Y al terminar, "prt-get" lo marcaba de todos modos como fallido, ahora por mismatches de footprint (hashes de librerías). Se resolvió instalando el paquete que se acababa de compilar y de manera directa con "pkgadd -u", que saltea la verificación de footprint. Y eso destapó algo: los fallos previos de Rust nunca habían sido de footprint: eran siempre el mismo error de "--jobs". Dicho esto, Rust no me cae en gracia porque en su cadena de dependencias actúa como si fuese un "Python mejorado". Y esto, claramente, no es un elogio.

And still, they lead me back...

Problema grave #4: Anubis en "free"desktop, y el cerco de los mirrors.

Ahora sí, preparate para la repartija de cascarazos, chirlos y piñas a lo Bud Spencer y Terence Hill, porque llegamos al corazón del "Acta de Responsabilidades".

"gstreamer.freedesktop.org" devolvía HTTP 503 debido a la implementación de Anubis, un "PoW" "proof-of-work anti-scraping" que bloquea justamente a "curl y a "pkgmk".

Mediante trabajo empírico real (otra vez: evidencia, no simple opinión) se midió subdominio por subdominio de "free"desktop con "curl -sI". Resultado:

- gstreamer.freedesktop.org → 503. Anubis. "Doble paria" confirmado.
- www.freedesktop.org → 200 OK
- dbus.freedesktop.org → 200 OK
- poppler.freedesktop.org → 200 OK
- xorg, xcb, dri, mesa, gitlab → 200 OK

Conclusión probada con datos: de todo el universo "free"desktop, el único con Anubis era gstreamer. La implementación se supone fragmentada y sin criterio unificado, en donde cada subproyecto administra su subdominio y mete proof-of-work por su cuenta cuando le explota el problema, rompiendo la descarga de fuentes área por área. Hoy fue gstreamer, seguramente mañana sea otro, o todo. No es teoría, insisto: se midió.

La odisea de mirrors que siguió (un pantano documentado, peor que el de "Born on the Bayou").

- MacPorts → versión atrasada.
- kernel.org → 404 en su mirror de Gentoo para el tarball de gstreamer. 

Como ves, kernel.org tampoco se salva: no por Anubis, sino porque corta descargas largas - los hoy 620 MB de linux-firmware- y devuelve 404 en su vista de distfiles.
- Gentoo raíz y Gentoo por hash del nombre → 404 (utiliza otra convención de layout).

GitHub (monorepo oficial de GStreamer) → rechazado: es un repo de 38 MB con bindings de Python (2) que el Pkgfile de CRUX no espera, y rompe compilando "py3cairo.h".

Surge un pensamiento en medio del cerco: "nos están rodeando los cacos, hay que rajar de acá".

La salida: ¡Fossies.org! (https://fossies.org/linux/misc/), que espeja los tarballs de release oficiales, idénticos a los de "free"desktop (mismo md5sum, sin necesidad de "-im"/"-is"). Confirmado para gstreamer y gst-plugins-base 1.28.6. El mecanismo "rescatar_de_fossies" intenta primero a "free"desktop -exponiendo su fallo ante el usuario, con toda intención- y solo entonces cae a "Fossies". ¿Querés salir de esa lista, "free"desktop? Entonces involucrate como corresponde: dejá de hacerle los mandados a quienes generan el conflicto (Gnome, ¿te suena?) y sé equilibrado, que para eso estás ahí. Es lo que menos hacés: empezá a pensar primero en los usuarios y después en las corporaciones y los grupitos de amigos.

Decisión de arquitectura #4, y es de principios: no mezclar a "free"desktop en tándem con gente seria y verdaderamente preocupada. O freedesktop queda afuera al 100%, o queda primero exponiéndose cada vez que falle por su propia mediocridad y mala leche, y los serios (MIT, Fossies) entran solo a rescatar. No como equivalentes. El criterio ético trasladado a la arquitectura del código. Cuando además de técnicos somos militantes, y encima honestos, estas cosas pasan. "Comprendanlón".

18 al 22 de agosto y contando: DRIVERS Y BLOBS: la epopeya del kernel de red.

Se abre un nuevo hilo de investigación: "DRIVERS Y BLOBS!". El problema más grande y más colectivo de toda la travesía: CRUX no veía ninguna tarjeta de red en bare metal. Nunca. En ninguna máquina. ¿Cómo podía ser? Los compañeros de Entropía reportaban lo mismo en "bare metal", mientras que en VirtualBox le funcionaba bien la red a todo el mundo. Creo que lo mismo sucedía con el video, pero, honestamente, a esto no lo recuerdo bien.

El encuadre que lo cambió todo (acierto importante #4): no era la máquina de nadie en particular. Era el instalador produciendo sistemas sin red de forma sistemática y reproducible. Los datos, aportados por la comunidad de Telegram:

- En VBox siempre hay red (caso trivial, NIC emulado).
- En bare metal, NUNCA: 3 máquinas distintas, 3 chips distintos, 3 personas distintas (un compañero con Gentoo, otro con Arch, otro con 2 con Void en 2 máquinas diferentes).
- El mismo hardware funcionaba perfectamente con otras distros, pero en CRUX, incluso un adaptador Ethernet USB-C tampoco aparecía en el "ip address show".

Si fueran drivers puntuales faltando por casualidad, sería una combinación de mala racha y mala suerte imposibles. El denominador común no era un driver: era algo transversal a toda la pila de red. La hipótesis: un ".config" de kernel castrado (probablemente por un "localmodconfig" corrido en MV, que eliminaba todo driver no cargado en ese momento).

El clímax técnico — el eslabón fantasma RFKILL
: tras varios ciclos de depuración en frío, la causa raíz resultó ser que "CONFIG_RFKILL=m" capaba a toda la pila WiFi. Como "CFG80211" y "MAC80211" dependen de "RFKILL", tenerlo en módulo arrastraba la cadena entera a módulo, y en cascada descartaba a todos los drivers WiFi de manera pareja. Nunca había sido tocado eso. Era el símbolo que nadie era capaz de ver.

La metodología que lo encontró fue el "dry-run", el ensayo en seco: en vez de compilar 45 minutos a ciegas, se forzaban los símbolos en un ".config" de prueba, se corría "make olddefconfig < /dev/null", y se "grepeaba" el resultado. En un ratito se veía si la cadena quedaba "built-in" o si se degradaba, sin quemar tiempo en toda una pesada compilación completa para averiguarlo.
Ahora bien, seamos honestos sobre cómo se llega a una solución así... No se trata de experiencia en esto, ya que no es el caso del autor de este artículo. Se llega por desesperación: cuando estás a punto de darle un piñazo al monitor y atravesarlo de lado a lado del estrés acumulado... con suerte.

La solución -el patrón "forzar_simbolos"-: forzar la cadena de dependencias de abajo hacia arriba ("RFKILL" primero, después "CFG80211"/"MAC80211" como "=y", Ethernet como "=y", drivers WiFi como "=m"), y recién después "olddefconfig" (que resuelve sin degradar lo ya configurado y establecido). Este patrón se replicó para "forzar_simbolos_video" y "forzar_simbolos_entrada".

El timing de firmware (una sutileza fina): los drivers de almacenamiento y Ethernet van built-in ("=y") porque casi no dependen de programa externo del dispositivo. Pero el WiFi va modular ("=m") a propósito. Si fuera built-in, inicializaría tan temprano que "/lib/firmware" todavía no estaría montado, y pediría su firmware con error -2 (ENOENT) aunque el archivo esté ahí, en el disco. Al ser de naturaleza modular, en cambio, carga después de montar la raíz: encuentra su firmware, y recién entonces levanta la interfaz.
Todo esto, por supuesto, no fue fácil, ni intuitivo, ni evidente, sobre todo para alguien que al iniciar todo este proyecto no tenía la menor experiencia aceptable en compilación ni en kernels. Así se aprende: a los golpes, en las peores batallas, que son las únicas que enseñan a lo grande.

Contribución de la comunidad
: se agradece a Nico Vasconi y Miguel González, que hacían ronda de mate desde 2 orillas distintas del mismo río mientras ayudaban a pensar esto: quedaron grabados en los comentarios del propio código. Maxi Rica sacaba los mejores turrones españoles del horno, mientras Henry Jones y otros participaron de un filoso y atinado diagnóstico grupal, asado mediante, por Telegram. Nolberto empezó a preparar las arepas en cuanto entramos de lleno en su terreno: los Window Managers. Esto no fue una comilona de un hombre degustando y una máquina tragando tornillos aceitados solamente, fue de un hombre, una máquina, y una comunidad que le puso el hombro al binomio sin entrar en la pavada.

Pero, no todo es color de rosa... Acá empezaron los sub-problemas.

Cuando se estaba redondeando la base... el touchpad (trackpad) de la Acer no era visible al kernel por faltar "CONFIG_I2C_HID_ACPI" y "CONFIG_HID_MULTITOUCH".
"I2C_HID" era el contenedor cuya ausencia como "=m" impedía (en cascada) que "I2C_HID_ACPI=y". Confirmado por dry-run (en seco, como buen "tatequiéto").

El video (subproblema)
: en el hardware real, el amdgpu (para la GPU AMD Barcelo) faltaba del kernel config activo. Tras recompilar, la GPU levantó y "/dev/dri" apareció.

Pero en esta travesía hubo espacio hasta para la metalingüística. Me refiero a la cuestión terminológica del término "blob", que fue corregida por el excelentísimo "Dr. en Ciencias del Rompepelotismo", Prof. Hugo Napoli, quien rechazó una vez más, abiertamente y con fundamento, el uso de vocabulario técnico incorrecto -en este caso, el del término "blob" para el firmware-.

El planteo parte de un esquema clásico:

Hardware: pieza eléctrica/electromecánica.
Software: programas.
Firmware: hardware con software.
Y el problema es este: la industria estiró el término "firmware" hasta hacerlo reventar. Dejó de grabar el programa en un chip de la placa (en donde estaría "firme") y desde hace años pasó a cargarlo desde un archivo suelto en "/lib/firmware" en cada arranque… pero le siguió diciendo "firmware" igual. Es un nombre heredado, mal puesto -lo mismo que decir "disco SSD"-. La formulación precisa que debería adoptarse es "programa de dispositivo": software de fuente cerrada que corre dentro del chip de la placa, no en la CPU, y que el controlador le inyecta al arrancar.

Dicho en criollo, y para que no queden dudas del temperamento con que se defiende esto, se cita textual al Dr. (sic):
"A mí no me vengá' con cosa' rara': o e' járguar, o e' sójguar, o e' fírguer. Y si e' otra cosa, lo arreglamo' afuera. Ningún bló de járguar, ¿m'entendé?"
O, como dice mi amigo Sergio Arce:
Acá no vengá' a jodé'.

Y no es una manía aislada, es la misma bronca de fondo que la del fraude de GiB (qué nombre más estúpido e intelectualoide de quinta) frente a GB, usado para robarle a la gente inflando cifras. Misma familia de abusos: llamar mal a las cosas para justificar la impunidad. Por eso Realtek y NVIDIA se llevaron una puteada explícita, y con razón: entregan hardware que no anda, en cajas negras inauditables.

23 de agosto - InstaBox: una de las últimas piezas del "Moon Cresta".

https://codeberg.org/entropiabinaria/InstaBox

Hilos "Etapa SOLO openbox (constructo)" y "Etapa SOLO openbox (pulido)". InstaBox representó al acople gráfico final, aunque no terminó siendo el último, al instalar openbox + tint2 + feh + dunst sobre el CRUX ya sólido. Corre como root, instala dependencias (imlib2 con "-if" por un footprint mismatch conocido de los loaders jpeg/svg/tiff), detecta usuarios "humanos" (UID ≥ 1000, sesión real), y se "baja" al usuario elegido con "su - usuario -c" para desplegar ".xinitrc" y fondos.

La ocurrencia que, muy tarde, cambió el ritmo de todo: SSH.

Durante semanas se había trabajado con la MV, sacando fotos de la pantalla con el teléfono y pasándoselas a Gemini para hacer OCR, porque no se contaba con posibilidad de copiar y pegar, ni con red. A mitad de este hilo se estableció el acceso por SSH a la MV y a la laptop física. con reacción registrada al pie. Cito, textual:

"Soy profesor de REDES... ¡REDES! Y no consideré JAMÁS usar SSH para proyectos como este... ¡Soy un PELOTUDO! Pero, ¿en qué carajos estaba pensando?"


Lo que sucede, y me gusta pensarlo así para no tener que autoflagelarme con un cable UTP: utilizar SSH todos los días para enseñarlo, no es lo mismo que aplicarlo a un proyecto puntual. Estás en otra cosa, venís como pájaro al que le abren la jaula: sabés que "no se puede salir" y por más que te abran la puerta, ni se te pasa por la cabeza hacerlo. Es un punto ciego, quizás, no una incapacidad. Pero el cambio fue enorme: se acabó "el parto de la isla" mucho después de haberse logrado la conectividad. A partir de ahí todo fluyó con una velocidad enorme y un estrés "galopante pero en bajada p'abajo, ¿vio?".

Verificaciones de esta etapa: se contrastó todo el stack gráfico contra el árbol de ports real de CRUX 3.8, y aparecieron varios hallazgos. Picom no estaba en el catálogo. Tampoco había ningún gestor de archivos gráfico en las colecciones oficiales: PCManFM arrastra medio LXDE, y xfe pide a "FOX toolkit", que está ausente, así que el gestor de archivos quedó diferido a una futura v2... si llega. Veremos. Y Tint2, que ya había aparecido en contrib con un parche glib, volvió obsoleto al port de Tint2 que se había pretendido armar.

Todo esto en medio de un delirio constante: la búsqueda a los tumbos de soluciones de débiles humanos para problemas de titanes.

El 23 de agosto aún habían quedado pendientes: el fondo de feh pisado por el gris default de openbox-session (menos de 1 segundo después), y la fase 2 de applets de bandeja (volumen, nm-applet, blueman). Finalmente, ante un humano estupefacto, el cuerpo de InstaBox queda diseñado y la pieza logra verse en pantalla: X arranca, openbox corre, el menú contextual anda, Firefox abre y reproduce video... pero no sonido, no te afilé'. No te vistá' que no va'. No te pinté' lo' labio' que la foto es en blanquinegro.


ACTA DE RESPONSABILIDADES AJENAS.

Registro de miserias y mediocridades estructurales evitables. Es, sí, en gran parte, desahogo, pero cada punto está verificado. El criterio de "labración" del acta: la falla burda y evitable, con nombre, sin importar "genio" ni figura.

1. "free"desktop.org: Anubis fragmentado y con un criterio anticomunitario.

Falla concreta y medida: implementaron proof-of-work (Anubis) en "gstreamer.freedesktop.org", rompiendo la descarga de fuentes vía curl, pkgmk, etc., con "HTTP 503" (servidor saturado de tráfico), mientras el resto de sus subdominios (dbus, poppler, xorg, xcb, dri, mesa) siguen en 200 (éxito). Es una implementación por áreas, descoordinada, que va minando y resquebrajando a la infraestructura de fuentes de a pedazos. Claro... Esto, viéndolo desde afuera, porque desde adentro, la autocomplacencia y las palmadas en la propia espalda son un gran indicador del "vamos bien" y del "hicimos lo correcto". Un servidor que se supone abierto, libre y central para "medio ecosistema Linux" (por no exagerar), administrado por gente que otrora se ganó un merecido renombre por ser una agrupación orientadora en cuanto a qué ingredientes poner en las recetas de las interfases, pero que hoy se dedica más a militar posturas por sobre lo técnico que a sostener una infraestructura democrática -nunca mejor colocado este concepto-, habiendo dejado de mostrar un claro y desintoxicado camino a seguir, y no presentando criterio unificado en temas realmente excluyentes.
Esto fue medido con curl, subdominio por subdominio. No es solo una opinión. Son también -y esto es lo más importante-, hechos.

You left me standing here... A long, long time ago...

2. La kernel.org tampoco se salva.

Falla concreta: corte sistemático de descargas largas (los más de 620 MB de linux-firmware) dejándolas a medias, y su vista de distfiles de Gentoo devuelve 404 para tarballs que deberían estar. No es malicia como Anubis, es desprolijidad de infraestructura en un servidor que se presenta como confiable y peor aún, como faro de la comunidad. Uno debería preguntarse por qué Torvalds y su gente no mantienen esto en mejor estado, ¿verdad? Nosotros lo hacemos.

3. La documentación que empuja al error.

Falla concreta: la documentación oficial (incluido material de referencia como Linux From Scratch) advierte que poner "DRM_AMDGPU", "DRM_RADEON" y similares como "=y" "no es recomendado", pero no explica con claridad el porqué -el problema del timing de firmware-. Así, el que compila sin initramfs termina tropezando con el error -2. Y ese error despista: ante semejante fallo, uno imaginaría que el kernel se quedó sin memoria, o que el archivo empaquetado es más grande que el espacio disponible, o... cualquier cosa por el estilo, excepto la de la verdadera causa. La otra trampa, la de "scripts/config --set-val" (que no resuelve el árbol de dependencias, y que "olddefconfig" después degrada) tampoco está documentada de forma de que un ser humano pueda esquivarla antes de venírsele encima la curva de la muerte. Para desenredar este tipo de cosa es que hace falta una máquina, y esto no fue excepción: como esta situación hubieron varias.

4. Los Pkgfile escritos asumiendo un único escenario.

Falla concreta: el port de Rust asume el "pkgmk.conf" por defecto de CRUX (con "JOBS" / "MAKEFLAGS" comentados) y utiliza "-j ${JOBS}" sin defensa alguna ante una "JOBS" vacía. Quien active el paralelismo por el camino "natural" (MAKEFLAGS) sin saber del "JOBS" oculto, choca con un error críptico. 

No hay validación ni mensaje útil. ¿Por qué? Porque no están en esto, porque no saben de esto: están en RUST. Saben de RUST. Y así nos van limando, redondeando, a imagen y semejanza de otros, perdiéndose, en ese detestable camino, identidad, volviéndonos grises.

5. La deriva de proyectos "libres" financiados "férreamente" desde arriba.

Este, sin duda, es, el hilo conductor de toda el acta. Las trabas más grandes no vinieron de la falta de recursos, sino de exceso de recursos mal administrados, infraestructura sostenida por fundaciones y empresas (el ecosistema alrededor de Canonical / Red Hat / IBM) que toma decisiones unilaterales (Anubis, layouts de mirror, políticas) que perjudican a medio pueblo... o a todo el pueblo. El contraste es el punto entero de esta crónica.


EL OTRO LADO DEL ACTA: EL ESFUERZO GENUINO (AJENO Y PROPIO).

Frente a cada traba estructural, colosal, mediocre por definición de poder, la respuesta fue de gente con infraestructura pequeña que puso el cerebro y el cuerpo como para lograr soluciones 20 veces más poderosas que los que son 20.000 veces más poderosos.

- CRUX mismo.

Tim "Beerman" y Matt "Jaeger" sostienen a una distro entera, a sus paquetes, a MATE, y a la ISO "Updated", con una fracción de los recursos de las grandes. Cuando el proyecto choca contra un límite, es por falta de recursos o porque fue pensado de otrta manera, no por arrogancia desde el abulonamiento y/o la corrupción y/o traición imperdonable de valores puros a nivel comunitario y del software libre.

- La comunidad de Entropía binaria.

Maxi, "Henry Jones", Nicolás Vasconi, Miguel González, "Nólbert" y otros compañeros, diagnosticando por Telegram en máquinas, sistemas y entornos distintos, sin hacer alarde, por el gusto de aportar genuinamente y de que la cosa funcione. Sus nombres quedaron en los comentarios del código, además de acá, pero son los que quedan en el "cuore".

- Un docente uruguayo, casi solo, en 1 mes de laburo, peleando contra sus propias miserias, inseguridades, poniendo sus fortalezas a tope, pasando por momentos difíciles, utilizando las tecnologías más a mano -a lo criollo-, valiéndose de recursos dignos de un McGyver en serio -porque la mayoría de los experimentos del verdadero McGyver original eran un fiasco-, conectando máquinas por SSH, negándose a bajar el estándar aunque el agotamiento y la bronca hubiesen rebasado límites situados mucho más allá de lo tolerable, leyendo cada información "de por ahí", cada respuesta de IA, milimétricamente, militarmente, religiosamente, "posesamente", en vez de copiar y pegar y hacerlo más fácil, más rápido, menos estresante y frustrante, pero también más irresponsable y menos pedagógico. A los valores no se les traiciona. A las personas tampoco.

Don't keep me waiting here...

La asimetría no es de talento ni de ganas, es de recursos, de poder y de pureza mental. Y esta es exactamente la denuncia que sostiene todo este proyecto.

A los atornillados y abulonados a su cargo y posición, a los "grandes", a los que "hostean recursos": háganse cargo de lo que realmente vayan a poder dominar, hagan bien su laburo, no prometan nada que no sean capaces de defender con la misma determinación y vehemencia que ponen en cometer los exabruptos en los que hoy están incurriendo. No borren con el codo lo que escriben con la mano, chicos, ¿no se cansan de hacerle los mandados a las corporaciones? ¡Qué estorbos que salieron buenos, estos!

Esta crónica es un esqueleto cambiante, un esbozo, un garabato inmaduro. Cada sección seguramente termine expandiéndose, siendo retocada. El "Acta" y el "Esfuerzo Genuino" son las 2 columnas editoriales que le dan alma.
Los villanos no son CRUX, ni DeVUAn, ni Artix: es la infraestructura "libre" mal gestionada. El héroe colectivo es todo el conjunto de gente no vendida a las corporaciones ni a entregada con alma y vida a los productos de las mismas. Es el que pone amor genuino, sin personalismos ni egos rotos, y con los recursos honestamente posibles.

Situación hoy, pasado el 23 de agosto.

Ya existe "InstaMate.sh", un script totalmente funcional para instalar al escritorio "Mate" de manera automatizada.

https://codeberg.org/entropiabinaria/InstaMate

Se está trabajando cuidadosamente en "TtyLog.sh", una pantalla de login BASH para tty, para que no haya que iniciar con pantalla negra, autenticarse por tty y levantar al entorno gráfico manualmente (startx).

https://codeberg.org/entropiabinaria/TtyLog

CRUX es totalmente funcional. Se puede instalar utilizando los instaladores de Entropía binaria en cascada y terminás con un CRUX con Mate o con OpenBox.
También con red, sonido y todos los chiches. 


NOTAS AL PIE:


(1) El e-mail fue a parar a una migración general a Thunderbird de todos mis correos desde 2007 hasta ahora: al estar ahí y no estar más en GMail (eliminé todo para empezar desde cero), ese mensaje de Tim que explicaba cómo prescindir de rEFInd quedó respaldado, y debido a mis prácticas con CRUX, aún no reinstalé a Thunderbird ni le hice releer la millonada de mensajes en "backup". De ahí que tuviera que reconstruir el método del arranque por EFI Stub desde cero.

(2) Sobre por qué Python es un problema técnico concreto y no un capricho ni una postura filosófica, lo desarrollé aparte, en detalle y con ejemplos, acá: https://entropiabinaria.blogspot.com/2026/08/el-por-que-de-mi-rechazo-tecnico.html

(3) Sobre las NTI, podés leer el artículo completo acá:
https://entropiabinaria.blogspot.com/2026/01/nuevas-tecnologias-innecesarias-un.html

(4) Si querés saber por qué escribo "free"desktop en lugar de free desktop, te invito a leer este artículo: https://entropiabinaria.blogspot.com/2026/08/freedesktoporg-una-camarilla-amiguista.html

El por qué de mi rechazo técnico visceral e innegociable a Python.

El por qué de mi rechazo técnico visceral e innegociable a Python.

Quiero que quede claro de entrada, porque se puede llegar a malinterpretar, mi punto de vista: mi rechazo a Python no es filosófico.
A este nivel, Python es una idea excelente: un lenguaje accesible de alto nivel, legible, bastante sencillo, que le abre la puerta a que cualquiera (un pibe, un docente, un biólogo, un aficionado) pueda escribir su primer programa y contribuir. Eso está bien. Eso está, en realidad, mucho más que "bien": la democratización de la posibilidad de programar es algo que celebro sin reservas. El problema no es la idea. El problema es la ejecución, y de buenas ideas mal llevadas a cabo está lleno el mundo.

A nivel técnico, Python es un desastre, y lo es por razones concretas, medibles, demostrables, no por gusto ni por apego ni pertenencia a otra parroquia.
Primero: es lerdo y tosco. Es un intérprete lento por diseño, que para hacer cualquier cosa seria termina llamando a librerías escritas en C -porque el propio Python no da la talla- y encima se cuelga de un árbol de dependencias monstruoso para lograrlo. Estamos hablando de cientos de miles de paquetes para servir para algo. Y no es que Python sea el único que arrastra dependencias como un chancho arrastra barro: Rust hace exactamente lo mismo. Pero hay una diferencia que lo vuelve mucho peor.

Segundo, y esto es lo central: esas dependencias no solo son miles, sino que son inestables entre sí. Inestables respecto a su propio desarrollo, a su propio mantenimiento, y -lo más grave- respecto a los programas estables que pretenden manipular. Un paquete de Python se actualiza y rompe a otros 3. Una versión menor del intérprete deja obsoleto medio ecosistema. Un "binding" que funcionaba hasta ayer (o hasta hace 2 horas), ahora tira una "excepción" porque el proyecto de arriba movió una coma. Es un castillo de naipes en donde cada naipe está sostenido por otro que también se está cayendo, y un ejemplo de manual de algo concreto con lo que me tocó lidiar es con Selenium y Firefox. Tengo un proyecto hecho en Python, y la cantidad de veces que vi que esa yunta se rompía sola (no porque Firefox fallara, sino porque la capa de Python que pretendía manejarlo iba siempre atrasada, siempre desincronizada, siempre parcheándose para alcanzar a un objetivo que se movía), fue de mucho más que "mal gusto". Python, berretísimamente, pretende no solo manipular a un programa estable, sino que además no puede parar de romper el flujo de ejecución en el intento.
Este es mi proyecto en Python (BurocraTux), para que veas que sé muy bien de lo que hablo:

BurocraTux es un programa que automatiza el ingreso de clases en la plataforma SIGED de gestión educativa. Su objetivo es ahorrarte tiempo y evitar el burocrático y tedioso proceso de ingresar datos de forma manual, guiándote paso a paso a través de 11 preguntas simples. 

https://codeberg.org/entropiabinaria/BurocraTux

Y si querés un verdadero monumento al desastre, mirá el mundo OSINT. Paso por ahí bastante seguido. Sé bien de lo que está hecha la edición más pesada de BlackArch ( https://blackarch.org/index.html ).

Acá es en donde Python saca a relucir con burda meridianidad toda su mediocridad, siendo, increíblemente y contra todo pronóstico sensato el estándar de facto de la disciplina, y el resultado está a la vista: de 3000 paquetes andan 5. El resto está roto, sin mantener, abandonado, o pidiendo una combinación de versiones infernales de dependencias rotas, desactualizadas, o que ya no están mantenidas. ¿Por qué? No es casualidad ni mala suerte. Es porque son Python. No son C, no son Go, no son Pascal. Ni siquiera son Rust, otro lenguaje feo. Un binario en C compilado hace 15 años, todavía corre. Un programa en Go es un binario único, estático, autocontenido, que tirás en cualquier máquina y anda. Un Pascal es sólido como una roca, y dicen que más que C en algunos aspectos. Pero una herramienta OSINT en Python es una bomba de tiempo: la instalás y ya está podrida, porque el ecosistema de abajo se mueve en aguas no solo turbulentas sino inmanejables para una pila de tal pretensión. Y a la primera de cambio, esas aguas se llevan todo puesto. A los 10 minutos, al otro día, a la semana, o al poco tiempo. Toda una disciplina entera -una que depende de que las herramientas FUNCIONEN BIEN (COMO TODO PROGRAMA CONSTRUÍDO EN BASE SÓLIDA), cuando las necesitás- parada sobre el barro movedizo de un lenguaje pantanoso que no garantiza que lo de ayer siga andando mañana.

Eso es lo que me genera "vómito intracraneal". No es el hecho de que "exista": soy un defensor de las "existencias". ¡Todo debería existir, hasta las insanas tentaciones! De otro modo, ¿en dónde quedaría nuestra fuerza de espíritu y nuestro verdadero poder de elección? Tampoco es que la gente lo use. El tema es que sin merecerlo y sin ser bueno para el ecosistema informático, se haya vuelto un ESTÁNDAR de la industria, y esto también aplica a la cloaca digital infecta y promotora de piratería, adoctrinamiento corporativo y analfabetismo digital: Windows.
Python... Algo tan frágil, tan lento, tan poco confiable, que se enseña como la llave de entrada a la programación (así como erróneamente se ofrece el adefesio de Ubuntu "para arrancar con Linux"), que no puede garantizar estabilidad, que a su vez son las únicas propiedades más básicas que uno debe exigirle a cualquier herramienta seria... Un estándar debería ser lo más sólido, no lo más fácil de que reviente. Aunque sea difícil aprenderlo.

Y para terminar, permítaseme aterrizar todo esto sobre el ecosistema de CRUX Linux, en revientes de compilación concretos también sufridos en carne propia, porque no estoy hablando en abstracto: te estoy mostrando y evidenciando mucho más que "mis impresiones". Cuando el monorepo de GStreamer me reventó la compilación, ¿en qué lo hizo? ¿Adivinás justo dónde? En "py3cairo.h", un "binding" de Python que yo no pedí, para una función que yo no necesitaba, colado dentro de un paquete que debería ser C limpio, dentro de una estructura limpia y controlada que al inestable y sinvergüenza de Python le queda ENORME. Cuando libxml2 no compilaba, ¿por qué era? Porque su binding de Python exigía "doxygen", y me obligó a escribir toda una función (asegurar_libxml2_python) para tapar un agujero que Python metió impunemente donde era mejor quedarse quietito y no tocar nada. En un instalador de CRUX -insisto, una distro cuya alma es la simplicidad, el código fuente limpio, el control total y absoluto en manos del usuario, el "compilá y entendé lo tuyo"- Python aparece de parásito, arrastrando su mugrienta y fétida cola de dependencias inestables, para romper builds que sin él funcionarían, y mucho mejor. No es una molestia teórica. Es la causa raíz, con nombre y archivo, de horas de trabajo perdidas en proyectos en los cuales es el programador el que da la cara ante cualquier fallo, no "Python".

Por eso no entra en mi stack. Ni Python, ni su lógica. Lo pesado lo hago en Go -binario único, estático, sin runtime que arrastrar, porque probé a hacerlo en Rust y la verdad, en materia de dependencias es un "Python mejorado"- y la orquestación de todo en BASH, que corre hoy, corría hace 15 años y va a seguir corriendo en 15 años más. No es dogma. Es haber aprendido, a los golpes, quién se banca firme el invierno como milico a la intemperie y quién se engripa con la primera lluvia de verano.

Si me querés hacer la vida más fácil, solo no me preguntes por qué no me gusta Python, y en lugar de eso, leeme. Acá está gran parte de mi justificación. Quiero que esto quede como manifiesto.

INSTRUCCIONES DE INSTALACIÓN DE CRUX VIA HERRAMIENTAS UNIX-KISS DE ENTROPÍA BINARIA


El logotipo original de CRUX es muy pequeño: lo he escalado y retocado mínimamente con IA y a mano para utilizarlo sin perder definición.

------------------------------------------------------------------------------------
INSTRUCCIONES DE INSTALACIÓN DE CRUX VIA HERRAMIENTAS UNIX-KISS DE ENTROPÍA BINARIA.
------------------------------------------------------------------------------------

* Sitio oficial de CRUX Linux:
https://crux.nu/Main/HomePage

* Documentación oficial:
https://crux.nu/Main/Documentation

* Enlaces externos de contribuyentes:
https://crux.nu/Main/Links

* Descarga de la ISO oficial:
https://crux.nu/Main/Download

* Descarga de la ISO actualizada de Matt "Jaeger" Housh:
https://crux.ninja/updated-iso/

* Descarga NO OFICIAL de la ISO de "Jaeger" con inyección de los programas de Entropía, por Google Drive, solo para compartir y facilitar la instalación:
https://drive.google.com/drive/folders/1f2vvCd4mohYB0W6a4zgHFo_LP6NcLIhE?usp=drive_link

* Programas independientes que están dentro de la ISO y que pueden haber tenido actualizaciones que no estén allí:

https://codeberg.org/entropiabinaria/InstaCrux

https://codeberg.org/entropiabinaria/EtherFi

https://codeberg.org/entropiabinaria/crux-instapelao

https://codeberg.org/entropiabinaria/AMPCI

https://codeberg.org/entropiabinaria/InyectISO

* También tenemos una sub-sala para hablar de CRUX en el grupo de Telegram:
https://t.me/grupo_entropiabinaria

>>>

1: instacrux/InstaCrux.sh

GENERALIDADES.
--------------

Primero se ejecuta InstaCrux, el cual te permitirá recompilar el kernel sin tocar la instalación existente o instalar un CRUX base oficial ya actualizado por Matt Jaeger Housh (uno de sus desarrolladores principales). Durante la instalación, InstaCrux eliminará todos los datos de la unidad de almacenamiento que elijas, y verificará/realizará una tabla de archivos GPT con las 5 particiones que en Entropía se promueven como buena práctica:

    /boot/efi
    /
    /tmp
    swap
    /home
    
Luego ejecutará el "setup" propio de CRUX.
Luego instalará a CRUX en tu máquina, compilará el kernel y te ofrecerá copiar a la instalación nueva los programas de Entropía binaria necesarios para instalar a CRUX de manera automatizada.

ESPECIFICIDADES.
----------------

Este instalador también te permitirá realizar un montón de pasos y ajustes más, los cuales son, al igual que los anteriores, igualmente importantes:

    - configurar el teclado y la zona horaria,
    - establecer la contraseña del usuario root,
    - elegir cómo compilar el kernel,
    - establecer el nombre del sistema para la red (hostname) y los DNS,
    - establecer el arranque via "EFIstub" (sin "bootloader" tradicional, arranque directo por UEFI),

<<<

>>>

2: etherfi/EtherFi.sh

Antes de ejecutar al siguiente script, vas a necesitar a este (a menos que tengas automatizado el proceso de levantar a mano tu tarjeta de red y conectarte, especialmente tratándose del WiFI.
Esto es lo que resuelve EtherFI: levantar a la tarjeta Ethernet y dejarla activa y con conectividad, y/o hacer lo mismo con la WiFI, cosa algo más compleja de realizar a mano. Una vez que hayas logrado levantar a la interfaz correspondiente y estés conectado, puedes proceder a ejecutar el script siguiente.
NOTA: a veces Etherfi te dará un mensaje de conectividad satisfactoria, pero en otras ocasiones y tal vez por un exceso de perfeccionismo al desarrollarlo, te dará un mensaje ambiguo, diciéndote que se realizaron todos los pasos necesarios pero que puede que aún no tengas una red lista. Si tenés dudas, podés hacerle ping a lo que quieras (ejemplo: ping wikipedia.org), pero no he visto un solo caso en donde EtherFi haya fallado de verdad. 

<<<

>>>

3: crux-instapelao/crux-instapelao.sh

Este programa realizará un montón de tareas más que no se pueden hacer desde la "ISO live" y sin haber reiniciado e ingresado en el sistema ya instalado. Es por esto que "InstaCrux" e "crux-instapelao" no están fusionados, al menos hasta ahora.
En el caso de "instapeláo", las acciones que te permitirá realizar, serán las siguientes:

    - actualizar a los ports (fundamental al trabajar con software de los repositorios),
    - actualizar al sistema entero (fundamental para que la posterior compilación no "reviente"), (1)
    - crear un usuario no root, con directorio propio y contraseña,
    - elegir cómo compilar varios paquetes que será necesario descargar,
    - instalar XOrg y PulseAudio,
    - activar servicios de arranque, dejando todo pronto para instalar, finalmente, un entorno gráfico.

<<<

>>>

OPCIONAL I: ampci/00_EFI_acomodeitor_[CRUX].sh

Si estás reinstalando CRUX (es decir, si no es la primera vez que lo instalás en el mismo equipo), las entradas de CRUX viejas, puede que empiecen a estorbar, ya que algunas NVRAM no poseen una buena gestión de lo que hacen y toleran entradas basura que no conducen a ninguna parte. Hay otras que limpian a las entradas que llevan a caminos sin salida (o a errores de arranque), mientras que la mayoría de las NVRAM, o bien fallan y detienen el arranque al encontrarse con algo de esto, o simplemente siguen intentando arrancar a las entradas siguientes, iniciando con la primera que funcione.
Al reinstalarse, CRUX generará nuevas entradas para sí mismo sin borrar las anteriores (CRUXes viejos), y si detectase a otros sistemas operativos en otras unidades de almacenamiento, te mostraría también a esas, ya que no lee a las mismas desde GRUB, LILO o cargadores de arranque por el estilo, sino directamente desde la NVRAM de tu equipo... la cual depende de la prolijidad del fabricante de la placa o de ese chip, no de CRUX. También podrás cambiar el orden de esas mismas entradas, junto con las de CRUX, así como eliminar las que no quieras, agregar entradas a mano si lo necesitas, respaldar la configuración de la NVRAM y restaurarla (cuidado, restaurar es experimental y corre a tu proipio riesgo).

<<<

OPCIONAL II: inyectiso/InyectISO.sh

Si querés armarte a tu propia ISO de CRUX para proyectos personales, podés hacer lo que hago yo. Antes de instalar al sistema, creo a mi propia ISO, lo cual consiste pura y exclusivamente en agregarle un directorio en su raíz, conteniendo a los programas que quiero y/o necesito, para llevarlos dentro de la imagen "buteable".
Cuidado: revisá la licencia de CRUX, porque redistribuir una imagen ISO oficial con "cosas metidas adentro", ya no es oficial y rompe la credibilidad si no se sabe quién la colocó en dónde ni qué le hicieron a la misma al ofrecértela. Yo lo hago solamente para simplificarme la vida a mí, y si esto te sirve, excelente, se comparte. Pero tengo claro que de "mío" este proceder no tiene nada. Solo es un "atajo inteligente".

>>>

<<<

**** PROCEDIMIENTO DE INSTALACIÓN PASO A PASO ****

El equipo de pruebas fue una laptop con hardware de potencia intermedia-alta (Acer Aspire 3, Ryzen 5 5700U, 32 GB de RAM, M.2, pero instalando a CRUX en medio microSD para pruebas, conectado a la placa internamente via USB).
Cuando se haga referencia a tiempos de demora, considerá que en tu equipo la demora puede variar.

>>>

Iniciar la imagen ISO de Entropía.
cd /entropia

OPCIONAL:
    cd ampci
    bash 00_EFI_acomodeitor_[CRUX].sh
    Eliminar las entradas de CRUX antiguas.

cd instacrux
bash InstaCrux.sh
Primero que nada, hay que decantarse entre recompilar un nuevo kernel o instalar el sistema. La recompilación del kernel es muy sencilla y no toca al sistema instalado.

INSTALACIÓN DE CRUX:
--------------------

Pulsar tecla, elegir la unidad de almacenamiento correcta.
Ingresar el código de seguridad aleatorio que se mostrará en pantalla.
Si el sistema encuentra particiones ya creadas, lo informará y preguntará "Proceed anyway? (y/N)". Responder "y" [Enter]. Esto es útil si solo querés formatear root pero no home. por ejemplo.

A continuación, se le cederá el control a la herramienta nativa de instalación de CRUX, y luego, el control volverá a InstaCrux. Seguir las indicaciones que el programa indica: dejar el punto de montaje en /mnt, seleccionar (con "flecha abajo / space") todas las categorías (core, opt, x11), dejar todos los paquetes marcados, no seleccionar cargador de arranque, confirmar y esperar. El tiempo real de espera para la instalación de paquetes necesarios ronda los 10 minutos.

Vuelve el control a InstaCrux. Seleccionar el teclado que corresponda, probarlo, continuar con [C] o volver a elegir con [N].
Establecer la contraseña del usuario root. Elegí una mayor a 8 caracteres, con algún símbolo, alguna minúscula, alguna mayúscula, algún número.
Para la configuración del kernel, te recomiendo la opción 3: es experimental pero viene funcionando maravillosamente, quizás incluso mejor que las otras.
Para el tipo de medio de almacenamiento, elegí [I] si es una instalación en un disco duro, unidad SSD, M.2, o cualquier otro medio de almacenamiento interno. De no ser así, considerá la E. Con eso estaría bian. Pero como el control debe tenerlo el usuario y no el programador, hay otra opción a considerar.
Para la zona horaria, si sos uruguayo, dale [Enter]. Sino, ingresá la zona correspondiente, en la sintaxis correspondiente.
Dale nombre al equipo.
Aceptá con [Enter] los DNS que se proponen, o ingresá el tuyo. Podés escribir más de uno.
El instalador empezará a trabajar. Tené paciencia: ahora ya no estás instalando, sino compilando.
El tiempo real de espera para la compilación de paquetes necesarios ronda los 38 minutos.
Podés copiarte todos los programas de Entropía a la instalación real. Te recomiendo que lo hagas. Los encontrarás en el mismo directorio: "/entropia".
A continuación, y si no vas a hacer más nada, tendrás que reiniciar en el sistema ya instalado para poder proseguir con la instalación: estás en la "Live ISO" y desde acá, ya no se puede continuar instalando. Te recomiendo que apagues el equipo, quites el medio de instalación, e inicies en CRUX.

<<<

>>>

Iniciar como root en el CRUX instalado físicamente.
cd /entropia

OPCIONAL SI NO TENÉS CONECTIVIDAD CABLEADA NI WIFI (SOBRE TODO PARA WIFI).
    cd etherfi
    bash EtherFi.sh
    Seleccioná la interfaz que quieras activar, seguí los pasos, conectá. El programa puede decirte que "puede que la red no tenga salida a Internet": esto es por un tema de extrema precaución, y nunca vi que fallara. EtherFi siempre terminó conectando. Probá a hacer ping a wikipedia, si querés: ping -c1 wikipedia.org
    cd ..

OPCIONAL SI QUERÉS TRABAJAR MÁS CÓMODAMENTE POR SSH DESDE OTRO EQUIPO.
    En este momento, ya podés conectar por ssh desde otro ordenador. Para ello, en CRUX revisá la ip (ip a) levantá el servicio (/etc/rc.d/sshd start sshd) y listo, ya podés seguir trabajando en ese equipo desde otra máquina tipeando "ssh tu_usuario_no_root@la_IP-de_CRUX".

cd crux-instapelao
bash crux-instapelao.sh
Actualizá los ports. Podés saltear esto solo si no lo hiciste en esta instalación.
Creá tu usuario no root. Dale una contraseña con las características descritas para el usuario root.
Para el manejo de "footprint mismatches", te recomiendo la opción 2.
Para el paralelismo de compilación, lo mejor es que uses toda la potencia de tu máquina: todos los núcleos, con la cantidad de RAM correspondiente. Por cada núcleo, calculá 1.2 GB de RAM, ejemplo: 8 núcleos, 9.6 GB de RAM.
Para la actualización del sistema, posiblemente tengas unos 40 paquetes para actualizar. Decile que sí al instalador, sentate y esperá. Esto va a demorar, seguro, porque otra vez toca compilar. El tiempo real de espera para la compilación de paquetes necesarios ronda 1 hora 17 minutos.
MUY IMPORTANTE PROBLEMA CORREGIDO A PARTIR DE LA VERSIÓN 0.123.243: el instalador podría fallar en algún momento. Traté de reducir esto al mínimo porcentaje de error posible, calculando varios escenarios posibles y atajándolos para que el flujo del proceso no reviente. Antes de esta versión, cuando falló, lo hizo o bien sobre los últimos 4 o 5 paquetes no alojados en servidores de CRUX (descargados desde la "free"desktop.org), o bien sobre la descarga del "linux-firmware" (es la única excepción a la regla, porque al estar instalado, podés saltearlo y continuar). No tiene por qué pasarte, necesariamente, pero si sucede, solamente seleccioná saltear el paquete problemático o esperá unos minutos e indicale al programa que lo reintente. También podés reiniciar el instalador en otro momento, saltearte la actualización de ports, la creación del usuario no root, volvé a indicar lo que ya indicaste (manejo de footprint mismatches, cantidad de núcleos para compilar, etc.) y continuar, ya que todo lo que ya se hizo, quedó bien hecho. El instalador va a terminar de hacer su trabajo y tu sistema va a quedar actualizado al momento de haber corrido el proceso.
Reiniciá.

<<<

 

>>>


Volver, como root al directorio "entropía".

cd /entropia
cd /instabox
bash InstaBox.sh


Esta parte no es interactiva: solo se trata de "dejarla correr" y en minutos tendrás a OpenBox instalado y preconfigurado con algunos valores de Entropía binaria.

<<<


NOTAS AL PIE.
-------------

(1) Por más que Matt Housh ("Jaeger") colabore enormemente al ofrecernos un CRUX actualizado, e independientemente de que esa ISO tenga que ser re-publicada cada cierto tiempo, los ports (repositorios) de CRUX se seguirán actualizando, y los paquetes contenidos, más actualizados que los de la imagen de Matt, ya no formarán parte de su ISO. Es por esta razón que aunque te descargues esa ISO (es lo recomendado), verás que es necesario actualizar "un poco más" al instalar. En ocasiones, son más de 40 paquetes, y esto lleva tiempo. Y es fundamental hacerlo: tené paciencia. Personalmente, creo que CRUX es un sistema que no fue pensado para la automatización, y acá estamos intentando manejar esto mediante complejos procesos aportados por varios scripts de la herramienta más potente para hablarle a los sistemas libres: BASH.

Hugo Napoli.

Flag Counter Visitas previas a la existencia de este contador: 3433

Artículos aleatorios

    Páginas: