<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl" media="all"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Roastidio.us Tagged with linux</title>
<link>https://roastidio.us/tag/2428</link>
<atom:link href="https://roastidio.us/tagged_with/linux" rel="self" type="application/rss+xml"></atom:link>
<description>Roastidio.us Tagged with linux</description>
<item>
<title>Homebrew Release: Warnel Chawpiovs v1.8.0: adds &quot;Agents of S.H.I.E.L.D.&quot; expansion and GUI Improvements - Wololo.net</title>
<link>https://wololo.net/2026/10/20/homebrew-release-warnel-chawpiovs-v1-8-0-adds-agents-of-s-h-i-e-l-d-expansion-and-gui-improvements/</link>
<enclosure type="image/jpeg" length="0" url="https://wololo.net/wagic/wp-content/uploads/2026/10/characters.jpg"></enclosure>
<guid isPermaLink="false">x2NWMoLoCLu33a36qJGp5Hiilo3TCL6UdEgz5w==</guid>
<pubDate>Sun, 25 Oct 2026 17:48:32 +0000</pubDate>
<description>You can now try this game in your browser at https://wololo.net/wc. Heads up: we now have a discord server to discuss Warnel Chawpiovs! Feel free to join at https://discord.gg/suP7m7uafT I’m happy to release version...</description>
<content:encoded>&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/10/characters.jpg?ssl=1&quot;&gt;&lt;img src=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/10/characters.jpg?resize=1024%2C576&amp;amp;ssl=1&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;You can now try this game in your browser at &lt;a href=&quot;https://wololo.net/wc&quot;&gt;https://wololo.net/wc&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;



&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Heads up: we now have a discord server to discuss Warnel Chawpiovs! Feel free to join at &lt;a href=&quot;https://discord.gg/suP7m7uafT&quot;&gt;https://discord.gg/suP7m7uafT&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;I’m happy to release version 1.8.0 of “Warnel Chawpiovs”, a homebrew game for PC (Windows, Linux, MacOS versions are now available), Nintendo Switch, and Android.&lt;/p&gt;&lt;p&gt;Since earlier this month, the game can now be played in your browser, and you can try it right now without installing anything, at &lt;a href=&quot;https://wololo.net/wc&quot;&gt;https://wololo.net/wc&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I still encourage people to actually download the binaries. If you download the game on your device, and after all assets have been downloaded, you technically don’t need any internet connection to play the game with the native versions. And you don’t depend on my server being online to play.&lt;/p&gt;&lt;p&gt;Version 1.8.0 brings some significant changes to the hero/scenario selection menu (see below). With now more than 50 heroes and more than 40 scenarios, the selection screen was getting crowded, we’ve split it into two parts.&lt;/p&gt;&lt;p&gt;This version also brings The Agents of SHIELD expansion, as well as more hero packs. That’s 5 more heroes (Maria Hill, Nick Fury, Nova, X-23, and Storm) and 5 new scenarios (Black Widow, Batroc, MODOK, Citizen V, and Baron Zemo).&lt;/p&gt;&lt;p&gt;(&lt;strong&gt;By the way, if you’re using and enjoying Warnel Chawpiovs, please do me a favor and spread the word, to friends or on social networks&lt;/strong&gt;. Having a growing number of users helps me staying motivated to add more cards and features!)&lt;/p&gt;&lt;p&gt;Overall, Warnel Chawpiovs now supports 51 heroes and 43 scenarios, which I estimate represents roughly 60% of all the cards in the original game (excluding campaigns)&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;This is a fan-created work and is not affiliated with, endorsed by, or sponsored by Fantasy Flight Games. All characters, settings, and related elements are the property of their respective owners.&lt;/strong&gt;&lt;/p&gt;&lt;h2&gt;What is Warnel Chawpiovs ?&lt;/h2&gt;&lt;p&gt;Warnel Chawpiovs, aka WC, is a homebrew game for multiple platforms (included, but not limited to, Nintendo Switch, Android and Windows), based on the popular cooperative board game Marvel Champions. WC lets you play the popular card game with full rules enforcement. The game does the heavy lifting of handling all the rules, so you only have to focus on your strategy.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/09/spider_man_enhanced_spider_sense.jpg?ssl=1&quot;&gt;&lt;img src=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/09/spider_man_enhanced_spider_sense.jpg?resize=1024%2C576&amp;amp;ssl=1&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;It also includes a full fledged deck editor (which, among other things, can import/export decks from popular fansite &lt;a href=&quot;https://marvelcdb.com&quot;&gt;marvelcdb.com&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/05/marvel_champions-1_3_0_deck_editor_3.jpg?ssl=1&quot;&gt;&lt;img src=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/05/marvel_champions-1_3_0_deck_editor_3.jpg?resize=1024%2C576&amp;amp;ssl=1&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can play on your own with one or multiple heroes, and there’s also a multiplayer mode, (mutiplayer mode should be considered to be in beta)&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/09/ironheart_level_up.jpg?ssl=1&quot;&gt;&lt;img src=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/09/ironheart_level_up.jpg?resize=1024%2C576&amp;amp;ssl=1&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;h2&gt;Warnel Chawpiovs – What’s new in 1.8.0&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Adds support for “Agents of  SHIELD” expansion, and 3 additional hero packs:
&lt;ul&gt;
&lt;li&gt;New heroes : Nick Fury, Maria Hill, Storm, X-23, and Nova&lt;/li&gt;
&lt;li&gt;New scenarios: Black Widow, Batroc, MODOK, Citizen V, and Baron Zemo&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;
&lt;li&gt;Some GUI updates including a refactored Team/scenario selection menu and a cool animation (well, I think it’s cool) for characters with Aerial&lt;/li&gt;
&lt;li&gt;Multiple bug fixes, as always (thanks to BL-Stark and MyGloo in particular for the numerous bug reports!)&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;1.8.0 Development notes&lt;/h3&gt;&lt;p&gt;Agents of SHIELD was so far the most painful expansion to develop with my engine. In terms of the total file size of script definitions, it sits on top with the other “recent” expansions Age of Apocalypse, Mutant Genesis, and Next Evolution. And that’s *after* introducing new concepts to reduce the amount of JSON I had to type. Hopefully the gameplay of these new characters and scenarios is working reasonably well.&lt;/p&gt;&lt;p&gt;There are still lots of bugs in the cards, rules that are not properly taken into account in the engine, but overall I think we’re going in the right direction, with more and more cards behaving the way they should, even in corner cases.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;h2&gt;How to install – Windows/Linux&lt;/h2&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/10/x_23_retaliate.jpg?ssl=1&quot;&gt;&lt;img src=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/10/x_23_retaliate.jpg?resize=1024%2C576&amp;amp;ssl=1&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Download the binaries below or on the github page:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wololo.net/downloads/index.php/download/10292&quot;&gt;Warnel Chawpiovs Download page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;(alternatively &lt;a href=&quot;https://github.com/frwololo/warnel-chawpiovs/releases&quot;&gt;on github&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;extract anywhere on your computer, then run the binary file (Windows: WC.exe, Linux:WC.x86_64)&lt;/p&gt;&lt;h2&gt;How to install – Android&lt;/h2&gt;&lt;p&gt;Download the apk below or on the github page:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wololo.net/downloads/index.php/download/10292&quot;&gt;Warnel Chawpiovs Download page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;(alternatively &lt;a href=&quot;https://github.com/frwololo/warnel-chawpiovs/releases&quot;&gt;on github&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;Copy the apk to your phone then install it with your phone’s file manager. You will need to enable “unknown sources” in your phone settings in order to install the APK.&lt;/p&gt;&lt;p&gt;Once you start the game it will need to download resources so it is recommended that your first launch is not on an expensive data plan 🙂&lt;/p&gt;&lt;h2&gt;How to install – Nintendo Switch&lt;/h2&gt;&lt;p&gt;You will need a hacked Nintendo Switch to run this game.&lt;/p&gt;&lt;p&gt;Download the binaries below or on the github page:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wololo.net/downloads/index.php/download/10292&quot;&gt;Warnel Chawpiovs Download page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;(alternatively &lt;a href=&quot;https://github.com/frwololo/warnel-chawpiovs/releases&quot;&gt;on github&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;extract the WC folder inside your switch folder on your SD card.&lt;/p&gt;&lt;p&gt;Launch the homebrew Menu in “full speed” mode (not in applet mode). This is done by pressing the Right Should button (R) while launching a cartridge game.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2025/12/warnel_chawpiovs_hbmenu.jpg?resize=1024%2C431&amp;amp;ssl=1&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/p&gt;&lt;p&gt;From there, you can run the game&lt;/p&gt;&lt;h2&gt;How to install – Mac OS&lt;/h2&gt;&lt;p&gt;Download the binaries below or on the github page:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wololo.net/downloads/index.php/download/10292&quot;&gt;Warnel Chawpiovs Download page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;(alternatively &lt;a href=&quot;https://github.com/frwololo/warnel-chawpiovs/releases&quot;&gt;on github&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;The Mac OS app isn’t officially signed, so in order to run it you can ctrl + click and select “open”&lt;/p&gt;&lt;h2&gt;Running your First Game&lt;/h2&gt;&lt;p&gt;The game will attempt to download any missing picture for new cards, as soon as you run it. This happens in the background and you can play while this happens. Again, that step is not needed if you have the appropriate “*.zip” resource files.&lt;/p&gt;&lt;p&gt;Once you’re in the game select “Sivgle Player”, then choose one hero and one villain, then click on launch.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/10/scenarios.jpg?ssl=1&quot;&gt;&lt;img src=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/10/scenarios.jpg?resize=1024%2C576&amp;amp;ssl=1&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Note: On your very first run, the game will only let you select one hero and one villain. This is intentional, as the game’s “adventure mode” requires you to win games in order to unlock more heroes and scenarios. If you don’t like this you can deactivate it in the options/gameplay menu, this will unlock all content.&lt;/p&gt;&lt;p&gt;Check the Videos below for examples of gameplay&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;h2&gt;Status of the Switch port&lt;/h2&gt;&lt;p&gt;The Switch port is… slow. You might want to &lt;a href=&quot;https://github.com/retronx-team/sys-clk&quot;&gt;overclock your console&lt;/a&gt; when you play the game. I know it’s not ideal, but it makes the gameplay much more comfortable.&lt;/p&gt;&lt;p&gt;I would not recommend playing with more than one hero at the moment on Nintendo Switch, if only for performance reasons&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/09/iron_man_shadow_of_the_past.jpg?ssl=1&quot;&gt;&lt;img src=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/09/iron_man_shadow_of_the_past.jpg?resize=1024%2C576&amp;amp;ssl=1&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;h2&gt;Troubleshooting, bug reports, etc…&lt;/h2&gt;&lt;p&gt;If you have any feedback or questions you can join us on discord at &lt;a href=&quot;https://discord.gg/suP7m7uafT&quot;&gt;https://discord.gg/suP7m7uafT&lt;/a&gt; . Alternatively,  you can use the itch.io community board here: &lt;a href=&quot;https://frwololo.itch.io/warnel-chawpiovs/community&quot;&gt;https://frwololo.itch.io/warnel-chawpiovs/community&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Last but not least, you can open issues on the &lt;a href=&quot;https://github.com/frwololo/warnel-chawpiovs/issues&quot;&gt;github project&lt;/a&gt;, or contact me by email (wagic.the.homebrew at gmail).&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2025/12/2025123109054900-4E551BEEBAD303591E38565E64373519.jpg?resize=1024%2C576&amp;amp;ssl=1&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/p&gt;&lt;h2&gt;Known issues&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Multiplayer should be considered early beta&lt;/li&gt;
&lt;li&gt;Switch port is slow. You might want to &lt;a href=&quot;https://github.com/retronx-team/sys-clk&quot;&gt;overclock your console&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The Mac port should be considered unsupported. I do not own any Apple products, which makes it impossible for me to verify (let alone debug) anything on that version.&lt;/li&gt;
&lt;li&gt;There are still lots of issues with specific cards, but feel free to &lt;a href=&quot;https://github.com/frwololo/warnel-chawpiovs/issues&quot;&gt;report issues you find on the github&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;In particular multiple cards behave incorrectly when playing with more than one hero (e.g. effect targeting the wrong hero, etc…). This isn’t intentional so feel free to report those&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/10/spider_woman_french.jpg?ssl=1&quot;&gt;&lt;img src=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/10/spider_woman_french.jpg?resize=1024%2C576&amp;amp;ssl=1&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Want more details?&lt;/h2&gt;&lt;p&gt;check the &lt;a href=&quot;https://github.com/frwololo/warnel-chawpiovs&quot;&gt;Readme on github&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;What’s next:&lt;/h2&gt;&lt;p&gt;There is still lots of work to do with this game. I am currently focusing on adding more cards to enjoy with a solo hero.&lt;/p&gt;&lt;p&gt;If by any miracle you are looking at my code and can help, in particular with multiplayer issues, please submit a &lt;a href=&quot;https://github.com/frwololo/warnel-chawpiovs&quot;&gt;PR on github&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://i0.wp.com/wololo.net/wagic/wp-content/uploads/2026/01/warvel_chawpiovs_1.0.0_hero_unlock.jpg?resize=1024%2C576&amp;amp;ssl=1&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;h2&gt;Download&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://wololo.net/downloads/index.php/download/10292&quot;&gt;Download page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Or on the &lt;a href=&quot;https://github.com/frwololo/warnel-chawpiovs/releases&quot;&gt;project’s github page&lt;/a&gt;&lt;/p&gt;&lt;div&gt;
	
&lt;/div&gt;</content:encoded>
</item>
<item>
<title>OVHcloud CLI: cómo detectar los binarios manipulados y qué falló</title>
<link>https://www.opensecurity.es/ovhcloud-cli-detectar-binarios-manipulados/</link>
<guid isPermaLink="false">C8O6A7ig17S2IZZFSPlNyMjhyHR8dCjs5TxMJg==</guid>
<pubDate>Wed, 21 Oct 2026 20:10:03 +0000</pubDate>
<description>Indicadores para detectar los binarios manipulados de OVHcloud CLI, por qué no sirvió checksums.txt y qué controles de publicación en GitHub conviene revisar.</description>
<content:encoded>&lt;p&gt;&lt;strong&gt;El ataque a la herramienta de línea de comandos de OVHcloud, que el 19/10/2026 sirvió durante algo más de hora y media binarios diseñados para robar secretos, no explotó ninguna vulnerabilidad del código: bastó una cuenta de GitHub comprometida y un ajuste de seguridad desactivado.&lt;/strong&gt; El atacante sustituyó los archivos de descarga de cinco versiones ya publicadas de OVHcloud CLI, de la v0.11.0 a la v0.15.0, y además manipuló el fichero de sumas de comprobación para que todo pareciera legítimo.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Las claves del ataque a OVHcloud CLI en 30 segundos&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;El atacante usó la cuenta de un colaborador con permisos de escritura y resubió los binarios de cinco versiones existentes.&lt;/li&gt;&lt;li&gt;También alteró checksums.txt, así que comprobar el hash contra ese archivo no servía de nada.&lt;/li&gt;&lt;li&gt;Los binarios estuvieron disponibles entre las 12:47 y las 14:21 UTC; lo detectó el pipeline de un cliente con el hash fijado.&lt;/li&gt;&lt;li&gt;Homebrew, Docker y las compilaciones desde el código fuente no se vieron afectados, según The Hacker News.&lt;/li&gt;&lt;li&gt;Quien ejecutara un binario afectado debe dar por expuestos todos los secretos de esa máquina.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Los hechos básicos los contamos en Revista Cloud, en &lt;a href=&quot;https://revistacloud.com/ovhcloud-cli-versiones-comprometidas-robar-secretos/&quot;&gt;el artículo sobre las cinco versiones manipuladas del CLI de OVHcloud&lt;/a&gt;. Aquí nos centramos en lo que interesa a un equipo de seguridad: cómo saber si un binario es uno de los comprometidos, qué falló en la cadena de publicación y qué controles habrían evitado o reducido el impacto.&lt;/p&gt;&lt;h2&gt;Cómo comprobar si un binario es uno de los manipulados&lt;/h2&gt;&lt;p&gt;OVHcloud no ha publicado todavía indicadores de compromiso completos, pero la reconstrucción de The Hacker News aporta varios para la versión v0.15.0. El más directo es el hash del paquete para Linux ARM64:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Paquete manipulado (v0.15.0, Linux arm64):
SHA-256 3833daffcaaaab27e4e0e0833240ffcb1df8df648f4ec0bc4a75c176e28933cb

Paquete original (v0.15.0, Linux arm64):
SHA-256 5c2beb56e6d83a4b426565a1557791ef759316abcc4effb38dd627c90aeb80e0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Como la herramienta está escrita en Go, el propio binario guarda información de cómo se compiló. Se puede consultar con &lt;code&gt;go version -m&lt;/code&gt; indicando la ruta del ejecutable:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;go version -m /ruta/al/binario/de/ovhcloud-cli&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En el binario manipulado aparece una pseudoversión del tipo &lt;code&gt;v0.15.1-0.20261013083505-5ead8ef9b43d+dirty&lt;/code&gt;, que remite al commit &lt;code&gt;5ead8ef&lt;/code&gt;, cuando la etiqueta v0.15.0 apunta al &lt;code&gt;760fd72&lt;/code&gt;. También muestra una línea &lt;code&gt;-ldflags=&amp;quot;-s -w&amp;quot;&lt;/code&gt; que no tienen las versiones auténticas. Ojo con la marca &lt;code&gt;+dirty&lt;/code&gt;: por sí sola no prueba nada, porque la versión limpia v0.16.0 también la muestra.&lt;/p&gt;&lt;p&gt;Para los paquetes de la v0.11.0 a la v0.14.0 no hay hashes públicos del contenido malicioso. Si alguien no puede determinar qué versión descargó ni cuándo, lo prudente es tratar la máquina como comprometida. La incidencia #300 del repositorio ovh/ovhcloud-cli recoge la información que se ha ido compartiendo.&lt;/p&gt;&lt;h2&gt;Qué falló en la cadena de publicación&lt;/h2&gt;&lt;p&gt;El fallo no está en el código, que sigue intacto, sino en cómo se publicaban las versiones. GitHub permite borrar y volver a subir los archivos adjuntos a una versión ya publicada con el mismo nombre, de modo que la URL de descarga no cambia. El ajuste de inmutabilidad de versiones lo impide, pero solo protege las versiones creadas después de activarlo, y en el repositorio de OVHcloud no estaba activado. Octave Klaba, fundador de la compañía, lo ha reconocido públicamente.&lt;/p&gt;&lt;p&gt;El atacante tampoco necesitó tocar la integración continua: compiló los binarios por su cuenta, a partir de un commit posterior, y los subió a mano. El dato más relevante para cualquier equipo es otro. Al reemplazar también checksums.txt, el atacante neutralizó la comprobación que muchos usuarios hacen al descargar. Un hash que se descarga del mismo sitio que el binario no protege frente a quien controla ese sitio. Lo que sí funcionó fue un hash fijado de antemano en el pipeline de un cliente: la descarga no coincidía, el trabajo falló y el cliente abrió una incidencia pública.&lt;/p&gt;&lt;p&gt;Sobre el origen, los investigadores de OpenSourceMalware sostienen que la cuenta usada llevaba meses comprometida y la relacionan con la campaña GlassWorm. Se basan en un cargador que obtiene su siguiente fase del campo memo de una cartera de Solana, una técnica asociada a esa campaña. Ellos mismos lo presentan como una inferencia, y nada del binario de octubre se ha vinculado todavía a GlassWorm.&lt;/p&gt;&lt;h2&gt;Controles que conviene revisar&lt;/h2&gt;&lt;p&gt;Si el equipo publica software en GitHub o depende de binarios descargados de versiones de GitHub, estos son los puntos que el caso deja sobre la mesa:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Activar la inmutabilidad de versiones&lt;/strong&gt; en los repositorios propios, sabiendo que no cubre las versiones anteriores a su activación.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Publicar atestaciones de los artefactos&lt;/strong&gt; y verificarlas al descargar, por ejemplo con &lt;code&gt;gh release verify-asset&lt;/code&gt;, en lugar de confiar en un checksums.txt del mismo origen.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Fijar hashes o versiones exactas&lt;/strong&gt; en scripts, imágenes base y pipelines, para que un cambio silencioso rompa el proceso en vez de colarse.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Reducir los permisos de escritura&lt;/strong&gt; a las cuentas que realmente publican y exigir autenticación fuerte, porque una cuenta de colaborador basta para reemplazar binarios.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Rotar secretos desde otra máquina&lt;/strong&gt; si se ejecutó un binario sospechoso: claves de la API de OVHcloud en ~/.ovh.conf y variables de entorno, claves SSH, tokens de nube y credenciales de Git.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;OVHcloud ya ha activado la inmutabilidad, ha publicado la v0.16.0 como versión inmutable y ha prometido un informe posterior con más detalles sobre el binario, incluidos los ficheros que intenta leer y adónde envía la información.&lt;/p&gt;&lt;h2&gt;Preguntas frecuentes&lt;/h2&gt;&lt;h3&gt;¿Cómo sé si tengo un binario manipulado de OVHcloud CLI?&lt;/h3&gt;&lt;p&gt;Compara su hash con el publicado para la v0.15.0 de Linux ARM64 y revisa la salida de go version -m: los binarios manipulados apuntan al commit 5ead8ef y muestran un ldflags que no tienen los originales.&lt;/p&gt;&lt;h3&gt;¿Por qué no sirvió comprobar el hash con checksums.txt?&lt;/h3&gt;&lt;p&gt;Porque el atacante también reemplazó checksums.txt para que coincidiera con los binarios maliciosos. Solo detecta el cambio un hash fijado de antemano o una atestación verificable.&lt;/p&gt;&lt;h3&gt;¿Qué es la inmutabilidad de versiones de GitHub?&lt;/h3&gt;&lt;p&gt;Es un ajuste que impide modificar los archivos de una versión una vez publicada. Solo protege las versiones creadas después de activarlo.&lt;/p&gt;&lt;h3&gt;¿Está confirmado que detrás está GlassWorm?&lt;/h3&gt;&lt;p&gt;No. OpenSourceMalware relaciona la cuenta usada con esa campaña, pero lo presenta como una inferencia y no hay vínculo confirmado con el binario.&lt;/p&gt;&lt;p&gt;Fuentes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://revistacloud.com/ovhcloud-cli-versiones-comprometidas-robar-secretos/&quot;&gt;Revista Cloud: OVHcloud CLI, cinco versiones manipuladas para robar secretos&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://x.com/olesovhcom/status/2112225308589834260&quot;&gt;Octave Klaba (@olesovhcom) en X&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://thehackernews.com/2026/10/hackers-hijack-five-ovhcloud-cli.html&quot;&gt;The Hacker News: Hackers Hijack Five OVHcloud CLI Releases to Distribute Secret-Stealing Malware&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.bleepingcomputer.com/news/security/ovhcloud-cli-releases-backdoored-on-github-to-steal-developer-secrets/&quot;&gt;BleepingComputer: OVHcloud CLI releases backdoored on GitHub to steal developer secrets&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/ovh/ovhcloud-cli&quot;&gt;GitHub: repositorio ovh/ovhcloud-cli&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded>
</item>
<item>
<title>YAFFplayer 0.13.0 (FFmpeg-based Audio / Video Player) released</title>
<link>https://www.geeks3d.com/20261007/yaffplayer-0-13-ffmpeg-based-audio-video-player/</link>
<guid isPermaLink="false">92LQoMx2TG_m99iun9IorKNVQ8nBDwgu4_8Kcw==</guid>
<pubDate>Wed, 21 Oct 2026 09:40:08 +0000</pubDate>
<description>YAFFplayer 0.13.0, an audio and video file player based on FFmpeg for Windows and Linux platforms has been released with improvements and bug fixes.</description>
<content:encoded>Skip to content&lt;div&gt;


    &lt;section&gt;

        &lt;div&gt;

	&lt;div&gt;
    							&lt;article&gt;
		&lt;header&gt;
																	&lt;h1&gt;YAFFplayer 0.13 (FFmpeg-based Audio / Video Player)&lt;/h1&gt;						&lt;div&gt;
									&lt;span&gt;&lt;a href=&quot;https://www.geeks3d.com/20261007/yaffplayer-0-13-ffmpeg-based-audio-video-player/&quot;&gt;&lt;time&gt;2026/10/07&lt;/time&gt;&lt;/a&gt;&lt;/span&gt; &lt;span&gt;&lt;span&gt;&lt;a href=&quot;https://www.geeks3d.com/author/jegx/&quot;&gt;JeGX&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;													 &lt;a href=&quot;https://www.geeks3d.com/20261007/yaffplayer-0-13-ffmpeg-based-audio-video-player/#respond&quot;&gt;&lt;span&gt;Comment&lt;/span&gt;&lt;/a&gt;											&lt;/div&gt;
																&lt;a href=&quot;https://www.geeks3d.com/20261007/yaffplayer-0-13-ffmpeg-based-audio-video-player/&quot;&gt;&lt;img src=&quot;https://www.geeks3d.com/wp-content/uploads/2024/12/yaffplayer-logo-20241229.png&quot; alt=&quot;YAFFplayer audio video file player based on FFmpeg&quot; title=&quot;&quot;/&gt;&lt;/a&gt; 
							&lt;/header&gt;
											

&lt;p&gt;
&lt;/p&gt;&lt;center&gt; 



&lt;/center&gt; 






		&lt;div&gt;
			
&lt;div&gt;
&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;
      &lt;br/&gt;
      &lt;br/&gt;
      
&lt;/td&gt;
&lt;td&gt;
&lt;h2&gt;1 – Download&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeks3d.com/dl/show/822&quot;&gt;YAFFplayer win64&lt;/a&gt;
&lt;p&gt;&lt;small&gt;&lt;b&gt;(7zip, no-installer)&lt;/b&gt;&lt;/small&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://www.geeks3d.com/dl/show/823&quot;&gt;YAFFplayer linux x86_64&lt;/a&gt;
&lt;p&gt;&lt;small&gt;&lt;b&gt;(7zip, no-installer)&lt;/b&gt;&lt;/small&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://www.geeks3d.com/dl/show/824&quot;&gt;YAFFplayer linux arm64&lt;/a&gt;
&lt;p&gt;&lt;small&gt;&lt;b&gt;(7zip, no-installer)&lt;/b&gt;&lt;/small&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;b&gt;Feedback and support:&lt;/b&gt;&lt;br/&gt;
– &lt;a href=&quot;https://www.geeks3d.com/forums/index.php/topic,8225.0.html&quot;&gt;Forum thread&lt;/a&gt;&lt;br/&gt;
– &lt;a href=&quot;https://www.geeks3d.com/discord/&quot;&gt;Discord&lt;/a&gt;
&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;A new update of &lt;a href=&quot;https://www.geeks3d.com/yaffplayer/&quot;&gt;YAFFplayer&lt;/a&gt; is ready for Windows 64-bit and Linux 64-bit (x86_64 and arm64).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;YAFFplayer&lt;/b&gt; is a simple &lt;b&gt;audio and video player&lt;/b&gt; made with &lt;a href=&quot;https://www.geeks3d.com/geexlab/&quot;&gt;GeeXLab&lt;/a&gt; and using the powerful &lt;a href=&quot;https://ffmpeg.org/&quot;&gt;FFmpeg&lt;/a&gt; library to read nearly every kind of video and audio files. It’s a standalone and native application for Windows and Linux. And thanks to &lt;a href=&quot;https://www.geeks3d.com/dl/show/10203&quot;&gt;yt-dlp&lt;/a&gt;, YAFFplayer can easily download video files from many youtube-like websites and even videos from Twitter or sounds from Soundcloud.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;YAFFplayer 0.13.0&lt;/b&gt; is built with &lt;a href=&quot;https://www.geeks3d.com/hacklab/20261005/geexlab-0-67-released/&quot;&gt;GeeXLab 0.67&lt;/a&gt; and the FFmpeg plugin has been updated with latest &lt;a href=&quot;https://www.geeks3d.com/forums/index.php/topic,8357.0.html&quot;&gt;FFmpeg 9.0.2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.geeks3d.com/public/jegx/2026q4/yaffplayer-0-13.jpg&quot; alt=&quot;YAFFplayer 0.13 - Audio / Video player based on FFmpeg&quot; title=&quot;&quot;/&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;2 – Changelog&lt;/h2&gt;
&lt;pre&gt;&lt;b&gt;Version 0.13.0.0 - 2026.10.03&lt;/b&gt;
- (Windows) change in video download: if video format is not specified 
  (Best MP4 format or custom download format), FFmpeg.exe is 
  no longer used to merge audio and video streams. 
  That allows yt-dlp to download videos with defaut format.
- updated with yt-dlp v2026.09.27.
- updated FFmpeg plugin with FFmpeg 9.0.2.
- updated with GeeXLab 0.67.0.
&lt;/pre&gt;
			
		

		

      &lt;div&gt;

&lt;p&gt;&lt;b&gt;Related posts:&lt;/b&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeks3d.com/20251014/yaffplayer-0-12-released-ffmpeg-based-audio-video-player/&quot;&gt;YAFFplayer 0.12 Released (FFmpeg-based Audio/Video Player) (*** UPDATED: v0.12.2 ***)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeks3d.com/20241230/yaffplayer-0-11-released-audio-video-player/&quot;&gt;YAFFplayer 0.11 Released (Audio/Video Player) (*** UPDATED: v0.11.1 win64 ***)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeks3d.com/20191123/yaffplayer-0-2-0-yet-another-ffmpeg-based-video-player/&quot;&gt;YAFFplayer 0.2.0: Yet Another FFmpeg-based Video Player (Updated v0.2.7)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeks3d.com/20241008/yaffplayer-0-10-audio-video-player-released-for-windows-and-linux/&quot;&gt;YAFFplayer 0.10 Released for Windows and Linux (UPDATED: v0.10.3 win64)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geeks3d.com/20220617/yaffplayer-0-5-8-released-for-windows-linux-and-raspberry-pi-os/&quot;&gt;YAFFplayer 0.5.8 released for Windows, Linux and Raspberry Pi OS (Updated: v0.5.16.0)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;



		&lt;/div&gt;
				&lt;footer&gt;
			&lt;div&gt;
															&lt;div&gt;&lt;span&gt; &lt;a href=&quot;https://www.geeks3d.com/category/softwares/geeks3d/yaffplayer/&quot;&gt;YAFFplayer&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;																		&lt;div&gt; &lt;span&gt;&lt;a href=&quot;https://www.geeks3d.com/tag/audio-player/&quot;&gt;audio player&lt;/a&gt;, &lt;a href=&quot;https://www.geeks3d.com/tag/ffmpeg/&quot;&gt;ffmpeg&lt;/a&gt;, &lt;a href=&quot;https://www.geeks3d.com/tag/geexlab/&quot;&gt;geexlab&lt;/a&gt;, &lt;a href=&quot;https://www.geeks3d.com/tag/linux/&quot;&gt;Linux&lt;/a&gt;, &lt;a href=&quot;https://www.geeks3d.com/tag/mp3/&quot;&gt;mp3&lt;/a&gt;, &lt;a href=&quot;https://www.geeks3d.com/tag/mp4/&quot;&gt;mp4&lt;/a&gt;, &lt;a href=&quot;https://www.geeks3d.com/tag/opengl/&quot;&gt;opengl&lt;/a&gt;, &lt;a href=&quot;https://www.geeks3d.com/tag/video-player/&quot;&gt;video player&lt;/a&gt;, &lt;a href=&quot;https://www.geeks3d.com/tag/windows/&quot;&gt;windows&lt;/a&gt;, &lt;a href=&quot;https://www.geeks3d.com/tag/yaffplayer/&quot;&gt;yaffplayer&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;				

			&lt;/div&gt;
									&lt;/footer&gt;
	&lt;/article&gt;
			
			&lt;div&gt;
					&lt;div&gt;
		&lt;h3&gt;Leave a Comment &lt;small&gt;&lt;a href=&quot;https://www.geeks3d.com/20261007/yaffplayer-0-13-ffmpeg-based-audio-video-player/#respond&quot;&gt;Cancel Reply&lt;/a&gt;&lt;/small&gt;&lt;/h3&gt;&lt;p&gt;Your email address will not be published.&lt;/p&gt;&lt;p&gt;Comment&lt;/p&gt;&lt;div&gt;
			       &lt;div&gt;
			      	&lt;p&gt;Your Name &lt;/p&gt;
&lt;p&gt;Your Email &lt;/p&gt;
&lt;p&gt;Your Website&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Save my name, email, and website in this browser for the next time I comment.&lt;/p&gt;
&lt;p&gt; 

&lt;/p&gt;	&lt;/div&gt;
	&lt;/div&gt;
			&lt;/div&gt;
		&lt;div&gt;
					&lt;/div&gt;
	            &lt;/div&gt;
	   &lt;/section&gt;
    &lt;/div&gt;</content:encoded>
</item>
<item>
<title>Fake Kernel Threads Are Hiding Backdoors on Linux Servers and Appliances</title>
<link>https://eclypsium.com/blog/linux-malware-fake-kernel-threads/</link>
<guid isPermaLink="false">EwfQiQZMWoH_3cXzKaDJWoivCAsbdDX4HrKX3g==</guid>
<pubDate>Wed, 21 Oct 2026 05:40:11 +0000</pubDate>
<description>Attackers keep disguising malware as Linux kernel worker processes, but careful checks will expose the disguise On September 5, 2026, Sansec, a security firm that investigates attacks on online stores, reported that attackers were exploiting a zero-day in Magento and Adobe Commerce to install a backdoor written in Rust. The vulnerability is tracked as CVE-2026-75650 […] The post Fake Kernel Threads Are Hiding Backdoors on Linux Servers and Appliances appeared first on Eclypsium.</description>
<content:encoded>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Attackers keep disguising malware as Linux kernel worker processes, but careful checks will expose the disguise&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;On September 5, 2026, &lt;a href=&quot;https://sansec.io/research/stylesmuggler-0day&quot;&gt;Sansec&lt;/a&gt;, a security firm that investigates attacks on online stores, reported that attackers were exploiting a zero-day in Magento and Adobe Commerce to install a backdoor written in Rust. The vulnerability is tracked as &lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2026-75650&quot;&gt;CVE-2026-75650&lt;/a&gt; and is rated Critical, with a CVSS score of 10.0. Early versions of the backdoor ran under the name &lt;code&gt;[kworker/u:8:0]&lt;/code&gt;, which is meant to look like one of the Linux kernel’s own worker threads. &lt;/p&gt;&lt;p&gt;Two days later, researchers reported Tengu, a bot modeled on the Mirai botnet malware, which overwrites its process name with a random &lt;code&gt;kworker/%d:%d&lt;/code&gt; value. In July, an incident responder found a Go command-and-control (C2) agent running as &lt;code&gt;[kworker/7:2]&lt;/code&gt; on a breached OpenCart store, next to a script that dumped the store’s customer order table.&lt;/p&gt;&lt;p&gt;The disguise works because a Linux system runs dozens of real kernel threads with numbered names, and an administrator reading a process list has no reason to notice if there’s an extra. The disguise only goes as deep as the name, because a program running in user space cannot reproduce the properties of a real kernel thread without a kernel rootkit, so defenders can check for those properties instead of chasing each new malware name or hash.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Who should act:&lt;/strong&gt; detection engineering should add the checks below to Linux servers and to any appliance that exposes a process list, and report back which systems the check cannot run on. Incident response teams should take over if this yields any hits. Network and appliance administrators should find out which of their devices give them a full process listing at all. A device without a process list makes an implant like this harder to find.&lt;/p&gt;&lt;h2&gt;&lt;strong&gt;Why a fake kernel thread blends in&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The Linux kernel does a lot of background work in threads that live entirely inside kernel memory. The &lt;strong&gt;&lt;code&gt;kworker&lt;/code&gt;&lt;/strong&gt; threads process queued work for drivers and subsystems, and others such as &lt;strong&gt;&lt;code&gt;ksoftirqd&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;kswapd&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;migration&lt;/code&gt;&lt;/strong&gt;, and the &lt;strong&gt;&lt;code&gt;rcu_&lt;/code&gt;&lt;/strong&gt; family handle deferred interrupt work, memory reclaim, moving tasks between processors, and synchronization. Because these threads have no command line, ps displays their names in square brackets, for example &lt;strong&gt;&lt;code&gt;[kworker/0:1]&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Malware can emulate that appearance in two ways. It can overwrite its own &lt;code&gt;argv[0]&lt;/code&gt;, which changes what &lt;strong&gt;&lt;code&gt;ps aux&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;/proc/PID/cmdline&lt;/code&gt;&lt;/strong&gt; show, or it can call &lt;strong&gt;&lt;code&gt;prctl(PR_SET_NAME)&lt;/code&gt;&lt;/strong&gt;, which changes the short process name stored in &lt;strong&gt;&lt;code&gt;/proc/PID/comm&lt;/code&gt;&lt;/strong&gt;. Some families do both. &lt;a href=&quot;https://attack.mitre.org/techniques/T1036/004/&quot;&gt;MITRE ATT&amp;amp;CK&lt;/a&gt;, the public catalog of attacker techniques maintained by MITRE, tracks this under Masquerading as T1036.004, Masquerade Task or Service.&lt;/p&gt;&lt;p&gt;None of this is new, but the continued recurrence of this established technique makes it worth another look. Especially given the rising number of exploitation attempts targeting Linux-based infrastructure devices. The United Kingdom’s National Cyber Security Centre (NCSC) documented in its &lt;a href=&quot;https://ncsc.gov.uk/static-assets/documents/malware-analysis-reports/cyclops-blink/NCSC-MAR-Cyclops-Blink.pdf&quot;&gt;February 2022 analysis of Cyclops Blink&lt;/a&gt;, a malware family attributed to the Sandworm group, that the implant “renames its running process to masquerade as a Linux kernel thread.” In June 2024, &lt;a href=&quot;https://www.trendmicro.com/en_us/research/24/f/noodle-rat-reviewing-the-new-backdoor-used-by-chinese-speaking-g.html&quot;&gt;Trend Micro reported&lt;/a&gt; that the Linux version of the Noodle remote access trojan (RAT) spoofs its process name by overwriting &lt;strong&gt;&lt;code&gt;argv&lt;/code&gt;&lt;/strong&gt;, using code that matches the older Rekoobe backdoor.&lt;/p&gt;&lt;h2&gt;&lt;strong&gt;Where this masquerading technique has showed up in 2026&lt;/strong&gt;&lt;/h2&gt;&lt;figure&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Malware or campaign&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;What it hit&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Name it used&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Reported by&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;StyleSmuggler backdoor&lt;/td&gt;&lt;td&gt;Magento and Adobe Commerce stores, through &lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2026-75650&quot;&gt;CVE-2026-75650&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;code&gt;[kworker/u:8:0]&lt;/code&gt;&lt;/strong&gt;in early samples; &lt;strong&gt;&lt;code&gt;fc-cache&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;chronyd&lt;/code&gt;&lt;/strong&gt; in later ones&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://sansec.io/research/stylesmuggler-0day&quot;&gt;Sansec&lt;/a&gt;, September 5, 2026&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tengu bot&lt;/td&gt;&lt;td&gt;Linux servers, routers, and embedded devices&lt;/td&gt;&lt;td&gt;A random &lt;strong&gt;&lt;code&gt;kworker/%d:%d&lt;/code&gt;&lt;/strong&gt;value&lt;/td&gt;&lt;td&gt;Reverser.Space, as reported by &lt;a href=&quot;https://gbhackers.com/tengu-mirai-style-linux-bot/&quot;&gt;GBHackers&lt;/a&gt;, September 7, 2026&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Go C2 agent (&lt;strong&gt;&lt;code&gt;watchdogd&lt;/code&gt;&lt;/strong&gt;)&lt;/td&gt;&lt;td&gt;An OpenCart online store&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;code&gt;[kworker/7:2]&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://kbourdakos.gr/articles/ghost-process-go-c2-agent-opencart-breach.html&quot;&gt;K.K. Bourdakos&lt;/a&gt;, July 3, 2026&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Linux Noodle RAT&lt;/td&gt;&lt;td&gt;Linux servers, typically after a web shell&lt;/td&gt;&lt;td&gt;Spoofed process names (specific names not published)&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://gbhackers.com/noodle-rat-backdoor/amp/&quot;&gt;GBHackers&lt;/a&gt;, September 16, 2026, citing Trend Micro&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;According to &lt;a href=&quot;https://cyberpress.org/hackers-exploit-stylesmuggler-magento-adobe-commerce-zero-day/&quot;&gt;Cyberpress’s summary of the Sansec findings&lt;/a&gt;, StyleSmuggler malware samples observed on September 6 had already switched from the &lt;strong&gt;&lt;code&gt;kworker&lt;/code&gt;&lt;/strong&gt; name to &lt;strong&gt;&lt;code&gt;fc-cache&lt;/code&gt;&lt;/strong&gt;, one day after Sansec’s report. A detection that keys on the name &lt;strong&gt;&lt;code&gt;[kworker/u:8:0]&lt;/code&gt;&lt;/strong&gt; stopped matching new infections within a day. The second detail is that kworker/u:8:0 is not a name the kernel would ever produce. Kernel workers that are not tied to a single processor are named kworker/u followed by a pool number, a colon, and a worker number, as in kworker/u8:2. The attacker’s version has no number after the u and an extra colon, so a simple check on the name format flags it.&lt;/p&gt;&lt;p&gt;Cyclops Blink also came back this year. On September 9, 2026, &lt;a href=&quot;https://blog.talosintelligence.com/fmc-ongoing-exploitation&quot;&gt;Cisco Talos&lt;/a&gt;, Cisco’s threat intelligence group, reported that a cluster it tracks as UAT-11823, which overlaps in tooling with Sandworm, deployed a Cyclops Blink variant on Cisco Secure Firewall Management Center (FMC), the appliance that manages fleets of Cisco firewalls. The actors gained access via &lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2026-20079&quot;&gt;CVE-2026-20079&lt;/a&gt;, a Critical authentication bypass (CVSS 10.0) that grants root access to the appliance’s underlying operating system. Talos does not say whether this variant still renames itself as a kernel thread. The 2022 version did, so if you run FMC, the checks below are relevant to you, with the caveat that this is an inference based on the malware’s history, not something Talos reported.&lt;/p&gt;&lt;h2&gt;&lt;strong&gt;What an impostor kernel thread can’t fake&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;A real kernel thread has properties that a user-space program can’t reproduce without loading code into the kernel. Every malware sample in the table above runs in user space, so each of these properties gives you a way to catch it regardless of what it calls itself.&lt;/p&gt;&lt;figure&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Property&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Real kernel thread&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;User-space impostor&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Parent process&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;code&gt;kthreadd&lt;/code&gt;&lt;/strong&gt;, process identifier (PID) 2&lt;/td&gt;&lt;td&gt;Anything else, often PID 1 or a shell&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&lt;code&gt;/proc/PID/exe&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Does not resolve&lt;/td&gt;&lt;td&gt;Resolves to the binary on disk, or shows (&lt;strong&gt;&lt;code&gt;deleted&lt;/code&gt;&lt;/strong&gt;) if the file was removed&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Memory (&lt;strong&gt;&lt;code&gt;VSZ&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;RSS&lt;/code&gt;&lt;/strong&gt; columns in &lt;strong&gt;&lt;code&gt;ps&lt;/code&gt;&lt;/strong&gt;)&lt;/td&gt;&lt;td&gt;Both 0&lt;/td&gt;&lt;td&gt;Non-zero&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;&lt;code&gt;/proc/PID/cmdline&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Empty&lt;/td&gt;&lt;td&gt;Usually populated&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Kernel-thread flag (&lt;strong&gt;&lt;code&gt;PF_KTHREAD&lt;/code&gt;&lt;/strong&gt;)&lt;/td&gt;&lt;td&gt;Set&lt;/td&gt;&lt;td&gt;Clear&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Network sockets&lt;/td&gt;&lt;td&gt;Never owns one&lt;/td&gt;&lt;td&gt;Often owns one&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Owner&lt;/td&gt;&lt;td&gt;root&lt;/td&gt;&lt;td&gt;Whichever account launched it&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;&lt;p&gt;Two name checks also work on a plain-text process listing where none of the metadata is available. The first is the name format problem described above. The second is that a real &lt;strong&gt;&lt;code&gt;/proc/PID/comm&lt;/code&gt;&lt;/strong&gt; value never contains a literal &lt;strong&gt;&lt;code&gt;[&lt;/code&gt;&lt;/strong&gt; character. The brackets come from &lt;strong&gt;&lt;code&gt;ps&lt;/code&gt;&lt;/strong&gt; when it displays a process with an empty command line, so a process whose own name includes a bracket put it there itself.&lt;/p&gt;&lt;p&gt;The OpenCart case shows how these properties look in practice. &lt;a href=&quot;https://kbourdakos.gr/articles/ghost-process-go-c2-agent-opencart-breach.html&quot;&gt;Bourdakos&lt;/a&gt; noticed that &lt;strong&gt;&lt;code&gt;[kworker/7:2]&lt;/code&gt;&lt;/strong&gt; was running as the hosting account rather than &lt;strong&gt;&lt;code&gt;root&lt;/code&gt;&lt;/strong&gt;, reported about 724 megabytes of virtual memory and 12 megabytes resident when a real kernel thread reports zero, showed a process state of &lt;strong&gt;&lt;code&gt;Sl&lt;/code&gt;&lt;/strong&gt; (consistent with a multi-threaded Go program) instead of the I state of an idle kernel worker, and had started at 04:07, the same time the attacker dropped the web shell. Searching the process list for the real binary name, &lt;strong&gt;&lt;code&gt;watchdogd&lt;/code&gt;&lt;/strong&gt;, returned nothing.&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;img src=&quot;https://eclypsium.com/wp-content/uploads/linuxbackdoor_screen1.png&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;figcaption&gt;&lt;em&gt;An example of the masquerading technique discussed in this post, as detected by Eclypsium: the platform flagged the ENDLESSDOORS backdoor, an implant that hides as a kworker process, because the process posing as a kworker was not a real kernel thread.&lt;/em&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&lt;h2&gt;&lt;strong&gt;Hunting for fake kernel threads on Linux systems&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Detection engineering can run these checks today on any Linux host where they have a root shell. The first is a quick visual pass:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;
ps -eo pid,ppid,user,stat,vsz,rss,comm,args | grep -E &amp;#39;\[(kworker|ksoftirqd|kswapd|migration|rcu_)&amp;#39;
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Real kernel threads show a parent of &lt;strong&gt;&lt;code&gt;2&lt;/code&gt;&lt;/strong&gt;, a user of &lt;strong&gt;&lt;code&gt;root&lt;/code&gt;&lt;/strong&gt;, and zeros in the &lt;strong&gt;&lt;code&gt;VSZ&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;RSS&lt;/code&gt;&lt;/strong&gt; columns. Anything else in this output deserves a closer look. Compare the &lt;strong&gt;&lt;code&gt;comm&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;args&lt;/code&gt;&lt;/strong&gt; columns as well. A process that only overwrote &lt;code&gt;argv[0]&lt;/code&gt; still shows its real name in &lt;strong&gt;&lt;code&gt;comm&lt;/code&gt;&lt;/strong&gt; while &lt;strong&gt;&lt;code&gt;args&lt;/code&gt;&lt;/strong&gt; shows the disguise, and that mismatch alone is enough to flag it.&lt;/p&gt;&lt;p&gt;The second check is a script that tests the strongest single property, whether the process has an executable file behind it:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;
#!/bin/bash
# Run as root. Flags processes that present a kernel-thread name
# but are backed by an executable file.
pattern=&amp;#39;^\[?(kworker|ksoftirqd|kswapd|migration|rcu_)&amp;#39;
for d in /proc/[0-9]*; do
  pid=${d#/proc/}
  comm=$(cat &amp;quot;$d/comm&amp;quot; 2&amp;gt;/dev/null)
  args=$(tr &amp;#39;\0&amp;#39; &amp;#39; &amp;#39; &amp;lt; &amp;quot;$d/cmdline&amp;quot; 2&amp;gt;/dev/null)
  if [[ $comm =~ $pattern || $args =~ $pattern ]]; then
    exe=$(readlink &amp;quot;$d/exe&amp;quot; 2&amp;gt;/dev/null)
    if [[ -n $exe ]]; then
      ppid=$(awk &amp;#39;/^PPid:/{print $2}&amp;#39; &amp;quot;$d/status&amp;quot;)
      echo &amp;quot;SUSPECT pid=$pid ppid=$ppid comm=&amp;#39;$comm&amp;#39; args=&amp;#39;$args&amp;#39; exe=$exe&amp;quot;
    fi
  fi
done
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The script checks both &lt;strong&gt;&lt;code&gt;comm&lt;/code&gt;&lt;/strong&gt; and the command line, so it catches either renaming method. Run it as &lt;strong&gt;&lt;code&gt;root&lt;/code&gt;&lt;/strong&gt;. Without root, &lt;strong&gt;&lt;code&gt;readlink&lt;/code&gt;&lt;/strong&gt; fails on other users’ processes and the script silently misses them. A &lt;strong&gt;&lt;code&gt;SUSPECT&lt;/code&gt;&lt;/strong&gt; line means a process is claiming a kernel-thread name while running from a file on disk, which a real kernel thread never does. Hand that PID to incident response before anyone kills it.&lt;/p&gt;&lt;p&gt;A few cautions if you extend this logic into a production rule:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Keep the name list to names only the kernel uses. Ordinary daemons such as &lt;strong&gt;&lt;code&gt;chronyd&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;fc-cache&lt;/code&gt;&lt;/strong&gt; rename themselves for legitimate reasons, so StyleSmuggler’s later names will not fit this check and need hash or behavior-based detection instead.&lt;/li&gt;&lt;li&gt;If you add a parent-process test, exclude PID 2 itself. &lt;strong&gt;&lt;code&gt;kthreadd&lt;/code&gt;&lt;/strong&gt;‘s own parent is PID 0, so a naive “parent must be 2” rule fires on every healthy host.&lt;/li&gt;&lt;li&gt;Do not test whether &lt;strong&gt;&lt;code&gt;/proc/PID/cmdline&lt;/code&gt;&lt;/strong&gt; or &lt;code&gt;/proc/PID/maps&lt;/code&gt; is empty by checking the file size. The proc filesystem reports a size of 0 for both files whether they hold data or not. Read the contents instead.&lt;/li&gt;&lt;li&gt;Keep in mind that an attacker who has deployed a kernel-level rootkit can do a much better job at hiding processes and will evade these detections.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;&lt;strong&gt;Network appliances are where this check gets hard&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Firewalls, firewall managers, remote-access gateways, and similar appliances often run Linux underneath, but most do not give the administrator a root shell or a full process listing. Also, in most cases, you cannot install an EDR agent on them. The Cyclops Blink deployment on FMC is a Linux implant, delivered as an Executable and Linkable Format (ELF) binary according to Talos, on exactly this kind of device.&lt;/p&gt;&lt;p&gt;Network and appliance administrators should ask each vendor whether there is a supported way to pull a process listing that includes the PID, parent PID, memory use, and executable path. The useful result is a list of which appliances support it and which do not. On devices that do, detection engineering can apply the same checks. On devices that do not, you will not see this technique through process data and need other evidence, such as file integrity and outbound connections, to find it.&lt;/p&gt;&lt;h2&gt;&lt;strong&gt;What to do if you find one&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Incident response should own any confirmed hit. Before killing the process, preserve what is only available while it runs:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;
mkdir -p /root/ir
cp /proc/PID/exe /root/ir/PID.bin            # works even if the file was deleted
ls -l /proc/PID/cwd                          # working directory
tr &amp;#39;\0&amp;#39; &amp;#39;\n&amp;#39; &amp;lt; /proc/PID/environ             # environment variables
ss -tunap | grep &amp;quot;pid=PID,&amp;quot;                  # network connections
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then look for the persistence these families used. StyleSmuggler relied on a cron job that restarts the implant twice an hour. The OpenCart attacker added an &lt;strong&gt;&lt;code&gt;@reboot&lt;/code&gt;&lt;/strong&gt; cron entry and a second cron job that restarted the binary every 5 minutes. Tengu installs a systemd service described as “System Helper Service,” along with SysV init scripts, OpenWrt &lt;strong&gt;&lt;code&gt;procd&lt;/code&gt;&lt;/strong&gt; entries, cron &lt;strong&gt;&lt;code&gt;@reboot&lt;/code&gt;&lt;/strong&gt;jobs, and &lt;strong&gt;&lt;code&gt;/etc/rc.local&lt;/code&gt;&lt;/strong&gt;. Talos lists &lt;code&gt;/etc/init.d/&lt;/code&gt; scripts as a Cyclops Blink persistence capability. Removing the process without removing the persistence brings it back.&lt;/p&gt;&lt;p&gt;Close the entry point too. For StyleSmuggler, that means Adobe’s hotfix in &lt;a href=&quot;https://helpx.adobe.com/security/products/magento/apsb26-146.html&quot;&gt;Adobe security bulletin APSB26-146&lt;/a&gt;. Patching stops new infections through that vulnerability and does not remove an implant that is already installed, so do both. In the e-commerce cases, also assume customer data on the host was exposed until you can show otherwise. The OpenCart attacker deployed an endpoint that exported the entire order table, including customer names, addresses, and payment details.&lt;/p&gt;&lt;h2&gt;&lt;strong&gt;Frequently Asked Questions&lt;/strong&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;No. A typical Linux host runs dozens of real kernel threads. They become suspicious when they have a parent other than PID 2, non-zero memory, or an executable file behind them.&lt;br/&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;It can, if the agent runs on the host and the vendor ships a rule for it, as Elastic does. EDR agents generally cannot run on closed network appliances, which is where the visibility gap is largest.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;A kernel rootkit can alter what the &lt;strong&gt;&lt;code&gt;proc&lt;/code&gt;&lt;/strong&gt; filesystem reports. The examples in this post all run in user space, which is why the property checks work against them.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;No. Patching stops new infections through that vulnerability. An implant that is already installed keeps running and keeps its persistence until someone removes it.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;Every Linux system runs many &lt;strong&gt;&lt;code&gt;kworker&lt;/code&gt;&lt;/strong&gt; threads with numbered names that change between boots, so one more entry does not stand out in a long process list.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://sansec.io/research/stylesmuggler-0day&quot;&gt;Sansec: StyleSmuggler, Magento and Adobe Commerce zero-day remote code execution flaw (CVE-2026-75650) under active attack&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.tenable.com/blog/stylesmuggler-cve-2026-75650-frequently-asked-questions-about-adobe-commerce-and-magento-zero&quot;&gt;Tenable: StyleSmuggler (CVE-2026-75650) frequently asked questions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://cyberpress.org/hackers-exploit-stylesmuggler-magento-adobe-commerce-zero-day/&quot;&gt;Cyberpress: Hackers exploit StyleSmuggler Magento and Adobe Commerce zero-day&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://helpx.adobe.com/security/products/magento/apsb26-146.html&quot;&gt;Adobe security bulletin APSB26-146&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2026-75650&quot;&gt;National Vulnerability Database: CVE-2026-75650&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://gbhackers.com/tengu-mirai-style-linux-bot/&quot;&gt;GBHackers: Tengu Mirai-style Linux bot hides as kernel worker&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://kbourdakos.gr/articles/ghost-process-go-c2-agent-opencart-breach.html&quot;&gt;K.K. Bourdakos: A Go C2 agent disguised as a Linux kernel thread&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.trendmicro.com/en_us/research/24/f/noodle-rat-reviewing-the-new-backdoor-used-by-chinese-speaking-g.html&quot;&gt;Trend Micro: Noodle RAT, reviewing the new backdoor used by Chinese-speaking groups&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://gbhackers.com/noodle-rat-backdoor/amp/&quot;&gt;GBHackers: Noodle RAT backdoor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://blog.talosintelligence.com/fmc-ongoing-exploitation&quot;&gt;Cisco Talos: Ongoing exploitation of Cisco Secure Firewall Management Center&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2026-20079&quot;&gt;National Vulnerability Database: CVE-2026-20079&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://ncsc.gov.uk/static-assets/documents/malware-analysis-reports/cyclops-blink/NCSC-MAR-Cyclops-Blink.pdf&quot;&gt;NCSC: Cyclops Blink malware analysis report&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://attack.mitre.org/techniques/T1036/004/&quot;&gt;MITRE ATT&amp;amp;CK: T1036.004, Masquerade Task or Service&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://detection.fyi/elastic/detection-rules/linux/defense_evasion_kthreadd_masquerading/&quot;&gt;Elastic detection rule: Executable Masquerading as Kernel Process&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The post &lt;a href=&quot;https://eclypsium.com/blog/linux-malware-fake-kernel-threads/&quot;&gt;Fake Kernel Threads Are Hiding Backdoors on Linux Servers and Appliances&lt;/a&gt; appeared first on &lt;a href=&quot;https://eclypsium.com&quot;&gt;Eclypsium&lt;/a&gt;.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>My First Year on Linux – AnubiBlog</title>
<link>https://anubiarts.bearblog.dev/first-year-linux-22/</link>
<enclosure type="image/jpeg" length="0" url="https://bearblog.dev/static/og-image.png"></enclosure>
<guid isPermaLink="false">MAXNkgK9zVsGFrv0n5wppXzS0Yimhf_Q5jpHFQ==</guid>
<pubDate>Wed, 21 Oct 2026 00:57:46 +0000</pubDate>
<description>It&#39;s kinda wild to look back on it, but yeah, this month marks my first year using Linux!! So I thought it&#39;d be fun to look back on everything that happened ...</description>
<content:encoded>&lt;h1&gt;My First Year on Linux&lt;/h1&gt;&lt;p&gt;
            &lt;i&gt;
                &lt;time&gt;
    08 Dec, 2025
&lt;/time&gt;
            &lt;/i&gt;
        &lt;/p&gt;&lt;p&gt;It&amp;#39;s kinda wild to look back on it, but yeah, this month marks my first year using Linux!! So I thought it&amp;#39;d be fun to look back on everything that happened before, between and now.&lt;/p&gt;&lt;p&gt;First things first though, I was always scared of using Linux as I felt it was too complicated from what I saw everywhere, and even when I did attempt to give it a try back in 2020 with Ubuntu, the very next day the PC didn&amp;#39;t want to boot up at all, which made me feel this kind of operative system was too &amp;quot;tech-savvy oriented&amp;quot;, so I stuck with Windows 10 for the next few years.&lt;/p&gt;&lt;p&gt;As its End of Life approached closer and closer, I had to update my PC, so I wanted to try updating to Windows 11 and... It did not work, because my motherboard lacks that dreaded TPM 2.0 chip. At the time I just finished upgrading my PC from a potato in the literal sense to one that did everything I use it for (gaming, art, browsing, etc.) good enough, and I did not want to upgrade my hardware yet again because everything worked pretty well, even though Microsoft seems to think its outdated, but I decided I would wait till October 2025 to see my options.&lt;/p&gt;&lt;p&gt;The thing is, between that time I tried to update to Windows 11 to the next few months, my experience with Windows kept worsening more and more.&lt;/p&gt;&lt;p&gt;May it be the system lagging more often, using more and more resources out of nowhere, how bloated it started to feel, how things like the search bar gave me web results instead of files in my system??&lt;/p&gt;&lt;p&gt;But what pushed me to switch from Windows now was something very insignificant in the grand scheme of things, but something that still pissed me off due to everything prior. When I finished updating my PC one time, when I checked again I had the Copilot shortcut added to my taskbar.&lt;/p&gt;&lt;p&gt;I do not want your AI, I did not agree to having this in along with your browser that you keep shoving in every damn web feature, I did not want to have ads for Candy Crush in my start menu, I do not want this treatment you kept giving me for using the system.&lt;/p&gt;&lt;p&gt;That&amp;#39;s when I snapped with Windows, and decided to switch off it now.&lt;/p&gt;&lt;p&gt;That&amp;#39;s when Linux came into the picture, and I was hesitant at first because of both what I heard of it and my personal experience with Ubuntu, but a friend insisted for me to give it a shot again, so after figuring out if I wanted to do it or not, I went with it.&lt;/p&gt;&lt;p&gt;One call figuring out how to install it on my system later, I ended up having Linux Mint in my PC along with Windows 10, as a dual boot to test it out. We could not figure out how to make GRUB work (the boot loader that usually comes with Linux Distros) but from what I tried Linux Mint, I just liked it!&lt;/p&gt;&lt;p&gt;It was faster and felt way smoother than Windows, it didn&amp;#39;t take an absurd amount of storage just from the system files, I could actually have a functioning search function, no AI anywhere, and even more importantly for me, I could customize it however I wanted to. Back when I was on Windows I tried different third party apps to achieve that, but here it was all built in, and I could do even more things, like add a second taskbar (panel on Linux).&lt;/p&gt;&lt;p&gt;I liked it so much in fact, that a week or 2 after installing that partition, I decided to nuke the windows partition and have Linux Mint as my main system. This time I installed it by myself and everything, it all felt so nice.&lt;/p&gt;&lt;p&gt;It felt weird for me how I didn&amp;#39;t see any of the complains I heard online on Mint, like how you need to use the terminal at all times (everything in Mint can be done via GUI), how you can break everything at any time (Mint never broke in all my time using it), or how unhelpful and elitist/loud the community is (every time I needed help for something, everyone was very kind).&lt;/p&gt;&lt;p&gt;Also, Proton exists, which helped me to play most games on my Steam library from Linux just fine thanks to it being a compatibility layer for translating Windows stuff to Linux. at first I checked every game status on ProtonDB (an user contributed tracking of how well games work with Proton) but nowadays unless that game has an Anti-cheat, I just don&amp;#39;t check it and it works fine every time, just hitting play they already work out of the box.&lt;/p&gt;&lt;p&gt;Over time, I wanted to try out different things from Linux, Mint was nice and all yeah, but there was things like KDE, GNOME and the at-the-time upcoming COSMIC desktop, along with Fedora and Arch that looked interesting enough, so I ended up giving them a shot each and every one.&lt;/p&gt;&lt;p&gt;Fedora KDE worked perfectly for me post install, though I needed to mess with the terminal every time to finish the set up as its lacking a few non-free dependencies I need. Every time a week or so passed though, something kept breaking in one way or another, and it took me weeks to find answers to those.&lt;/p&gt;&lt;p&gt;Fedora GNOME had the same post-install shenanigans as the one above, but it was far more stable, akin to Mint, even if I tried it for a tiny bit everything felt nice.&lt;/p&gt;&lt;p&gt;I tried COSMIC through Fedora, and it worked... well enough, though it was a bit laggy in some parts and buggy in others, though that&amp;#39;s to be expected as it&amp;#39;s in beta at the time of writing this. I&amp;#39;d definitely come back to it if the opportunity arises.&lt;/p&gt;&lt;p&gt;I also tried installing Arch and it did not work. I tried going through Archinstall but I kept getting one error after another, and the normal installation process was too complex for me, so I ended giving up on that idea.&lt;/p&gt;&lt;p&gt;Since then I started trying out more alternatives for apps, like Pixelorama for Pixel Art, Heroic for Epic Games Store/GOG/Amazon games, Akegrator for RSS Feeds, it all worked nicely!!&lt;/p&gt;&lt;p&gt;I stuck with Fedora KDE for most of that time until recently, where I decided to switch to Kubuntu.&lt;/p&gt;&lt;p&gt;And yeah I know, Ubuntu is bad and so are Snaps plus my last experience with Ubuntu was terrible, but I wanted to use KDE Plasma in a more stable way, Fedora KDE was nice and all, but it kept breaking the more time I used it and, as someone who works on arts and the like, I cannot really allow myself to risk losing those files, so Kubuntu seemed like the best option for me and hey, it is! I&amp;#39;d even dare to say it feels more stable than Mint, while still keeping things like KDE Plasma and Wayland which I use often.&lt;/p&gt;&lt;p&gt;If there&amp;#39;s something I would say to the past me in 2020 is to try giving Linux a time again, because it&amp;#39;s damn good. Thank you NullDott for helping me with this transition from one OS to the other.&lt;/p&gt;&lt;p&gt;Anyways, I&amp;#39;m off to remove the french language from my Linux Distro, bye!&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Anubi &amp;quot;Xenia&amp;quot; Arts&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;
                
                    &lt;a href=&quot;https://anubiarts.bearblog.dev/blog/?q=appreciation&quot;&gt;#appreciation&lt;/a&gt;
                
                    &lt;a href=&quot;https://anubiarts.bearblog.dev/blog/?q=linux&quot;&gt;#linux&lt;/a&gt;
                
                    &lt;a href=&quot;https://anubiarts.bearblog.dev/blog/?q=timeline&quot;&gt;#timeline&lt;/a&gt;
                
                    &lt;a href=&quot;https://anubiarts.bearblog.dev/blog/?q=windows&quot;&gt;#windows&lt;/a&gt;
                
            &lt;/p&gt;</content:encoded>
</item>
<item>
<title>Manejar subvolúmenes Btrfs en Fedora · El blog de Lázaro</title>
<link>https://elblogdelazaro.org/btrfs-fedora-ventajas-inconvenientes-subvolumenes/</link>
<enclosure type="image/jpeg" length="0" url="https://elblogdelazaro.org/images/posts/2026/btrfs/btrfs-01.png"></enclosure>
<guid isPermaLink="false">e13zmUzZBhXzB_0ZIxvP1kWVjuXXqE3R2KZ8JQ==</guid>
<pubDate>Tue, 20 Oct 2026 01:57:53 +0000</pubDate>
<description>Qué es Btrfs, por qué Fedora lo usa por defecto, sus ventajas e inconvenientes, cómo listar subvolúmenes, comprobar uso, crear nuevos subvolúmenes, …</description>
<content:encoded>&lt;p&gt;Fedora utiliza Btrfs como sistema de archivos por defecto en Workstation lo que nos aporta flexibilidad para gestionar el espacio, compresión transparente y también nos va a permitir trabajar con snapshots.&lt;/p&gt;&lt;p&gt;La parte menos buena es que hay que aprender conceptos nuevos. Vengo de ext4 y XFS, y ahora aparecen términos como subvolúmenes, &lt;code&gt;subvolid=5&lt;/code&gt; y snapshots, al principio me ha supuesto cierto tiempo de investigación y dedicación hasta entenderlo.&lt;/p&gt;&lt;p&gt;En este artículo voy a repasar lo básico: qué es Btrfs, qué aporta, qué inconvenientes tiene y cómo consultar el layout por defecto. También explicaré cómo crear y borrar subvolúmenes y qué estructura me parece la más lógica para mantener el sistema ordenado.&lt;/p&gt;&lt;h2&gt;Qué es Btrfs&lt;/h2&gt;&lt;p&gt;Btrfs es un sistema de archivos moderno para Linux que incorpora características avanzadas como checksums, snapshots, compresión y subvolúmenes, todo dentro del propio filesystem.&lt;/p&gt;&lt;p&gt;Hay que entender que en Btrfs, los subvolúmenes no son particiones independientes. Aunque pueden montarse como si fueran sistemas de archivos separados, comparten el mismo espacio disponible del filesystem, salvo que apliques límites con qgroups. Esto evita el típico problema de quedarte sin espacio en &lt;code&gt;/&lt;/code&gt; mientras te sobra mucho en &lt;code&gt;/home&lt;/code&gt;, por ejemplo.&lt;/p&gt;&lt;h2&gt;Btrfs en Fedora&lt;/h2&gt;&lt;p&gt;Btrfs integra funciones como checksums, snapshots, compresión y subvolúmenes dentro del propio filesystem. Tiene una forma distinta de organizar y administrar el almacenamiento.&lt;/p&gt;&lt;p&gt;La idea es que un subvolumen no es una partición independiente. Puede montarse como si lo fuera, pero comparte el espacio libre del mismo filesystem con el resto de subvolúmenes, salvo que apliques límites con cuotas.&lt;/p&gt;&lt;p&gt;Una de las ventajas de utilizar Btrfs son los snapshots. Puedes interpretarlos como hacer una fotografía a un subvolumen en un momento en concreto, muy útil antes de hacer cambios, actualizaciones o pruebas. Además, los snapshots de Btrfs no son recursivos, así que puedes dejar fuera ciertas rutas si las separas en otros subvolúmenes.&lt;/p&gt;&lt;p&gt;Otra ventaja es la compresión transparente lo que nos permite ahorrar espacio y puede mejorar la lectura y escritura, especialmente en discos SSD.&lt;/p&gt;&lt;h2&gt;Inconvenientes&lt;/h2&gt;&lt;p&gt;La principal pega es la complejidad. Btrfs no es difícil de usar pero entender la estructura interna lleva algo de tiempo, más que con un sistema de archivos clásico.&lt;/p&gt;&lt;p&gt;En mi caso, lo que más me costó fue entender ideas como &lt;code&gt;subvolid=5&lt;/code&gt;, los subvolúmenes anidados, los snapshots no recursivos o por qué &lt;code&gt;df -h&lt;/code&gt; no muestra la información igual que en ext4.&lt;/p&gt;&lt;p&gt;Conviene dejar clara una idea: un subvolumen no tiene un tamaño propio por defecto. Todos los subvolúmenes pueden crecer mientras haya espacio libre en el filesystem. Hay que distinguir entre espacio usado, espacio asignado internamente y espacio libre total.&lt;/p&gt;&lt;p&gt;Fedora usa Btrfs por defecto, pero no instala una estrategia completa de snapshots automáticos como sí hace openSUSE en su instalación; tendrás que organizarla tú.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;[!TIP]
A diferencia de las particiones tradicionales, los subvolúmenes comparten el espacio libre de todo el disco, por lo que no tienes que preocuparte por asignarles un tamaño fijo.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2&gt;El layout por defecto de Fedora&lt;/h2&gt;&lt;p&gt;En una instalación estándar de Fedora, el instalador crea una partición EFI, una partición &lt;code&gt;/boot&lt;/code&gt; en ext4 y un filesystem Btrfs para el resto. Dentro de ese Btrfs crea dos subvolúmenes: &lt;code&gt;root&lt;/code&gt; y &lt;code&gt;home&lt;/code&gt;, que luego monta como &lt;code&gt;/&lt;/code&gt; y &lt;code&gt;/home&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;En el archivo &lt;code&gt;/etc/fstab&lt;/code&gt;, Fedora monta &lt;code&gt;/&lt;/code&gt; con &lt;code&gt;subvol=root&lt;/code&gt; y &lt;code&gt;/home&lt;/code&gt; con &lt;code&gt;subvol=home&lt;/code&gt;, no usa el esquema &lt;code&gt;@&lt;/code&gt; y &lt;code&gt;@home&lt;/code&gt; que usan Ubuntu y Timeshift.&lt;/p&gt;&lt;h2&gt;Cómo listar subvolúmenes&lt;/h2&gt;&lt;p&gt;Para ver los subvolúmenes de tu instalación:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo btrfs subvolume list /&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En una instalación normal verás algo parecido a esto:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;ID 256 gen 913 top level 5 path root
ID 257 gen 913 top level 5 path home&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Muestra el ID, la generación, el top level y la ruta de cada subvolumen. Para ver todos los del pool, incluidos los no montados, usa &lt;code&gt;-a&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ sudo btrfs subvolume list -a /
[sudo] contraseña para carlos:
ID 256 gen 384 top level 5 path root
ID 257 gen 384 top level 5 path home&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Y si quieres ver también sus UUID:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ sudo btrfs subvolume list -u /
ID 256 gen 402 top level 5 path root uuid 3a7d8e2b-4c1f-4a9e-8b2d-6f5a1c9e3b7d
ID 257 gen 402 top level 5 path home uuid 9c2e6a4d-1b8f-4e3c-a7d2-5f8b0c4e6a1d&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Para ver qué subvolúmenes están montados:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ mount | grep btrfs
/dev/nvme0n1p6 on / type btrfs (rw,relatime,seclabel,compress=zstd:1,ssd,space_cache=v2,subvolid=256,subvol=/root)
/dev/nvme0n1p6 on /home type btrfs (rw,relatime,seclabel,compress=zstd:1,ssd,space_cache=v2,subvolid=257,subvol=/home)&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Cómo comprobar estado y espacio&lt;/h2&gt;&lt;p&gt;&lt;code&gt;btrfs filesystem usage /&lt;/code&gt; nos ofrece datos como tamaño del dispositivo, espacio asignado, espacio sin asignar, usado real y estimación de espacio libre.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ sudo btrfs filesystem usage /
Overall:
    Device size:		 304.73GiB
    Device allocated:		  27.02GiB
    Device unallocated:		 277.71GiB
    Device missing:		     0.00B
    Device slack:		     0.00B
    Used:			  22.97GiB
    Free (estimated):		 280.24GiB	(min: 141.38GiB)
    Free (statfs, df):		 280.23GiB
    Data ratio:			      1.00
    Metadata ratio:		      2.00
    Global reserve:		  39.23MiB	(used: 0.00B)
    Multiple profiles:		        no

Data,single: Size:25.01GiB, Used:22.48GiB (89.90%)
   /dev/nvme0n1p6	  25.01GiB

Metadata,DUP: Size:1.00GiB, Used:248.09MiB (24.23%)
   /dev/nvme0n1p6	   2.00GiB

System,DUP: Size:8.00MiB, Used:16.00KiB (0.20%)
   /dev/nvme0n1p6	  16.00MiB

Unallocated:
   /dev/nvme0n1p6	 277.71GiB&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Cómo crear un nuevo subvolumen&lt;/h2&gt;&lt;p&gt;Si quieres añadir un subvolumen nuevo, lo más limpio es crearlo en el top level 5 y luego montarlo donde quieras con &lt;code&gt;fstab&lt;/code&gt;. Así mantienes una estructura plana y no mezclas la jerarquía real de Btrfs con el sistema ya montado&lt;/p&gt;&lt;p&gt;Primero localiza tu partición Btrfs:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ findmnt -vno SOURCE /
/dev/nvme0n1p6&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Luego monta el top level:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo mkdir -p /mnt/btrfs-top
sudo mount -o subvolid=5 /dev/nvme0n1p6 /mnt/btrfs-top&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si ahora listas el contenido, verás los subvolúmenes creados, &lt;code&gt;root&lt;/code&gt; y &lt;code&gt;home&lt;/code&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ ls -la /mnt/btrfs-top
total 16
drwxr-xr-x  1 root root  16 mar 26 07:27 .
drwxr-xr-x. 1 root root  18 mar 26 08:58 ..
drwxr-xr-x. 1 root root  12 mar 26 07:44 home
dr-xr-xr-x. 1 root root 170 oct 23 06:11 root

carlos@d14:~$ sudo btrfs subvolume list /mnt/btrfs-top
ID 256 gen 246 top level 5 path root
ID 257 gen 246 top level 5 path home&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Para crear un subvolumen llamado &lt;code&gt;prueba&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo btrfs subvolume create /mnt/btrfs-top/prueba
Create subvolume &amp;#39;/mnt/btrfs-top/prueba&amp;#39;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Y para montarlo manualmente, por ejemplo en tu home:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo mkdir -p /home/carlos/prueba
sudo mount -o subvol=prueba,compress=zstd:1 /dev/nvme0n1p6 /home/carlos/prueba&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ sudo btrfs subvolume list /
ID 256 gen 248 top level 5 path root
ID 257 gen 248 top level 5 path home
ID 259 gen 248 top level 5 path prueba&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Vemos que &lt;code&gt;prueba&lt;/code&gt; cuelga de top level 5, el &lt;code&gt;path&lt;/code&gt; es simplemente &lt;code&gt;prueba&lt;/code&gt; y puedes comprobar que está montado:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ mount | grep prueba
/dev/nvme0n1p6 on /home/carlos/prueba type btrfs (rw,relatime,seclabel,compress=zstd:1,ssd,space_cache=v2,subvolid=259,subvol=/prueba)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cuando termines, puedes desmontar el top level temporal:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo umount /mnt/btrfs-top&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Eso no borra el subvolumen ni afecta a &lt;code&gt;/&lt;/code&gt; o &lt;code&gt;/home&lt;/code&gt;; solo deja de mostrarte el árbol de Btrfs en ese punto de montaje.&lt;/p&gt;&lt;p&gt;Puedes verificar que todo está bien:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ mount | grep btrfs
/dev/nvme0n1p6 on / type btrfs (rw,relatime,seclabel,compress=zstd:1,ssd,space_cache=v2,subvolid=256,subvol=/root)
/dev/nvme0n1p6 on /home type btrfs (rw,relatime,seclabel,compress=zstd:1,ssd,space_cache=v2,subvolid=257,subvol=/home)
/dev/nvme0n1p6 on /mnt/btrfs-top type btrfs (rw,relatime,seclabel,compress=zstd:1,ssd,space_cache=v2,subvolid=5,subvol=/)
/dev/nvme0n1p6 on /home/carlos/prueba type btrfs (rw,relatime,seclabel,compress=zstd:1,ssd,space_cache=v2,subvolid=259,subvol=/prueba)

carlos@d14:~$ sudo btrfs subvolume list /
ID 256 gen 263 top level 5 path root
ID 257 gen 263 top level 5 path home
ID 259 gen 248 top level 5 path prueba&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Cómo hacerlo permanente (fstab)&lt;/h3&gt;&lt;p&gt;Si quieres que ese subvolumen se monte al arrancar, hay que añadirlo a &lt;code&gt;/etc/fstab&lt;/code&gt;. Primero saca el UUID:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ findmnt -no UUID /
5fb25f96-b91a-4871-b765-1a4d7cd8b0d6&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Y añade una línea al fichero &lt;code&gt;fstab&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;#
# /etc/fstab
# Created by anaconda on Thu Mar 26 06:31:46 2026
#
# Accessible filesystems, by reference, are maintained under &amp;#39;/dev/disk/&amp;#39;.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run &amp;#39;systemctl daemon-reload&amp;#39; to update systemd
# units generated from this file.
#
UUID=5fb25f96-b91a-4871-b765-1a4d7cd8b0d6 / btrfs subvol=root,compress=zstd:1 0 0
UUID=89f45207-a218-4ed5-a659-3764d98447de /boot ext4 defaults 1 2
UUID=2621-F308 /boot/efi vfat umask=0077,shortname=winnt 0 2
UUID=5fb25f96-b91a-4871-b765-1a4d7cd8b0d6 /home btrfs subvol=home,compress=zstd:1 0 0
UUID=5fb25f96-b91a-4871-b765-1a4d7cd8b0d6 /home/carlos/prueba btrfs subvol=prueba,compress=zstd:1 0 0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Después valida antes de reiniciar:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo mount -a&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si &lt;code&gt;mount -a&lt;/code&gt; no devuelve errores, el &lt;code&gt;fstab&lt;/code&gt; está bien y los puntos de montaje son válidos.&lt;/p&gt;&lt;h2&gt;Cómo eliminar un subvolumen&lt;/h2&gt;&lt;p&gt;Si el subvolumen cuelga del top level 5, la forma más segura es montar ese top level temporalmente y borrarlo desde ahí.&lt;/p&gt;&lt;p&gt;No puedes borrar un subvolumen si está montado, hay que desmontarlos primero:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ sudo umount /home/carlos/prueba&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Como lo creaste en el nivel superior (&lt;code&gt;subvolid=5&lt;/code&gt;), debes borrarlo desde ahí:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;carlos@d14:~$ sudo mkdir -p /mnt/btrfs-top

carlos@d14:~$ sudo mount -o subvolid=5 /dev/nvme0n1p6 /mnt/btrfs-top

carlos@d14:~$ sudo btrfs subvolume delete /mnt/btrfs-top/prueba
Delete subvolume 259 (no-commit): &amp;#39;/mnt/btrfs-top/prueba&amp;#39;

carlos@d14:~$ sudo umount /mnt/btrfs-top&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si el subvolumen está anidado dentro de otro subvolumen montado, también puedes borrarlo desde esa ruta o usando su ID.&lt;/p&gt;&lt;p&gt;No olvides eliminar la entrada &lt;code&gt;UUID=5fb25f96-b91a-4871-b765-1a4d7cd8b0d6 /home/carlos/prueba btrfs subvol=prueba,compress=zstd:1 0 0&lt;/code&gt; del archivo &lt;code&gt;fstab&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Por ejemplo, para borrar &lt;code&gt;prueba&lt;/code&gt; (ID 259) sin montar el top level puedes usar su ID directamente, apuntando a cualquier punto del mismo filesystem:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo btrfs subvolume delete --subvolid 259 /&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;&lt;p&gt;[!WARNING]
No debes intentar borrar un subvolumen que siga montado. Primero desmonta, luego elimina.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Cuando lo borras, la limpieza real del espacio puede seguir en segundo plano. Si quieres esperar a que termine:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo btrfs subvolume sync /&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;¿Top level o dentro de / o /home?&lt;/h2&gt;&lt;p&gt;Se pueden crear subvolúmenes anidados dentro de otros subvolúmenes, pero la forma que mejor encaja con el layout de Fedora es crear los nuevos subvolúmenes bajo el root del filesystem y montarlos después donde corresponda.&lt;/p&gt;&lt;p&gt;Yo prefiero el top level 5. Me resulta más limpio, el &lt;code&gt;fstab&lt;/code&gt; queda más claro y evito mezclar la organización lógica del sistema con la jerarquía interna de Btrfs&lt;/p&gt;&lt;p&gt;Es mucho más ordenado crear en el top level y montar luego &lt;code&gt;/var/log&lt;/code&gt;, &lt;code&gt;/var/cache&lt;/code&gt;, &lt;code&gt;/var/tmp&lt;/code&gt; o &lt;code&gt;/.snapshots&lt;/code&gt;.&lt;/p&gt;&lt;h2&gt;Chuleta&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;# Ver subvolúmenes
sudo btrfs subvolume list /
sudo btrfs subvolume list -a /

# Ver montajes Btrfs
findmnt -t btrfs
mount | grep btrfs

# Ver espacio y uso
sudo btrfs filesystem show
sudo btrfs filesystem df /
sudo btrfs filesystem usage /
df -h /

# Montar top level 5
sudo mount -o subvolid=5 /dev/nvme0n1pX /mnt/btrfs-top

# Crear subvolúmenes
sudo btrfs subvolume create /mnt/btrfs-top/snapshots
sudo btrfs subvolume create /mnt/btrfs-top/var_log
sudo btrfs subvolume create /mnt/btrfs-top/var_cache
sudo btrfs subvolume create /mnt/btrfs-top/var_tmp

# Montar manualmente un subvolumen
sudo mount -o subvol=snapshots,compress=zstd:1 /dev/nvme0n1pX /.snapshots

# Validar fstab
sudo mount -a

# Eliminar un subvolumen
sudo btrfs subvolume delete /mnt/btrfs-top/var_tmp
sudo btrfs subvolume sync /&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Mi estructura&lt;/h2&gt;&lt;p&gt;Intento mantener el estilo nativo de Fedora y no mezclarlo con layouts tipo &lt;code&gt;@&lt;/code&gt;.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;root → /
home → /home
snapshots → /.snapshots
var_log → /var/log
var_cache → /var/cache
var_tmp → /var/tmp&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Esta estructura mantiene el layout original de Fedora y deja fuera de los snapshots del sistema rutas como logs, cachés y temporales, que no me interesa tener en un rollback.&lt;/p&gt;&lt;p&gt;En el &lt;a href=&quot;https://elblogdelazaro.org/btrfs-fedora-migrar-layout-subvolumenes/&quot;&gt;siguiente artículo&lt;/a&gt; explico cómo migrar desde el layout por defecto de Fedora a esta estructura, usando un Live USB, preservando los logs y dejando &lt;code&gt;fstab&lt;/code&gt; preparado para arrancar ya con los nuevos subvolúmenes.&lt;/p&gt;&lt;p&gt;Espero que te haya gustado, pasa un buen día. 🐧&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Linux 7.3 released</title>
<link>https://www.osnews.com/story/146191/linux-7-3-released/</link>
<guid isPermaLink="false">yMsmhbsXw_yRJER13jnvoOJCWDJTn9OgUGjfIQ==</guid>
<pubDate>Tue, 20 Oct 2026 00:04:01 +0000</pubDate>
<description>Significant changes in this release include some significant binfmt_misc extensions, some group-scheduling work aimed at improving performance on large systems, the new failfs filesystem that fails all operations, the fchroot() system call, global per-CPU data for BPF programs, the completion of the sched_ext subscheduler feature, working-set tracking for virtual machines, alternative data-stream support in the ntfs3 filesystem, a long list of SMB server improvements, and much more. ↫ “co...</description>
<content:encoded>&lt;blockquote&gt;&lt;p&gt;Significant changes in this release include some &lt;a href=&quot;https://lwn.net/Articles/1086947/&quot;&gt;significant binfmt_misc extensions&lt;/a&gt;, some &lt;a href=&quot;https://lwn.net/Articles/1089244/#:~:text=There%20have%20been%20some%20subtle%20but%20significant%20changes&quot;&gt;group-scheduling work&lt;/a&gt; aimed at improving performance on large systems, the new &lt;a href=&quot;https://docs.kernel.org/next/filesystems/failfs.html&quot;&gt;failfs&lt;/a&gt; filesystem that fails all operations, the fchroot() system call, global per-CPU data for BPF programs, the &lt;a href=&quot;https://lwn.net/Articles/1082717/&quot;&gt;completion&lt;/a&gt; of &lt;a href=&quot;https://lwn.net/Articles/1056014/&quot;&gt;the sched_ext subscheduler feature&lt;/a&gt;, &lt;a href=&quot;https://lwn.net/Articles/1080162/#uffd&quot;&gt;working-set tracking&lt;/a&gt; for virtual machines, &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=be310476e8868ebe7a2ce8fb0e7b229535723963&quot;&gt;alternative data-stream support&lt;/a&gt; in the ntfs3 filesystem, a &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=61a09cfc121472013f99ae75066676739a5db626&quot;&gt;long list of SMB server improvements&lt;/a&gt;, and much more.&lt;/p&gt;&lt;cite&gt;&lt;a href=&quot;https://lwn.net/Articles/1101143/&quot;&gt;↫ “corbet” at LWN.net&lt;/a&gt;&lt;/cite&gt;&lt;/blockquote&gt;&lt;p&gt;It’ll make it way to your distribution of choice soon enough.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>putting linux on my rtx spark laptop because i don&#39;t have a microsoft account - josie.lol</title>
<link>https://josie.lol/blog/linux-rtx-spark.html</link>
<enclosure type="image/jpeg" length="0" url="https://josie.lol/screenshot.png?v=20261019"></enclosure>
<guid isPermaLink="false">_8RBo_KJlOUPXeifWh50AaN1BQQpIutiiePS2Q==</guid>
<pubDate>Mon, 19 Oct 2026 22:42:57 +0000</pubDate>
<description>Arch Linux ARM on the ASUS ProArt P16, with a bootable installer, published Windows comparisons, and local Qwen inference.</description>
<content:encoded>&lt;p&gt;tl;dr - boo hoo microsoft bad. Arch Linux works, keeps up with Windows in 7-Zip, and reports the same 116.0 GiB memory pool to the OS and CUDA. My initial bootable setup and patches are &lt;a href=&quot;https://github.com/pfeifferj/archlinuxarm-proart-p16&quot;&gt;here&lt;/a&gt;. This is for the ASUS ProArt P16 H7607BA-SE033W: the 128 GB RAM configuration with 6,144 CUDA cores and a 2 TB SSD.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://josie.lol/blog/images/n1x-arch-linux.jpg&quot; alt=&quot;Fastfetch showing Arch Linux ARM on the ASUS ProArt P16 with an NVIDIA N1X GPU.&quot; title=&quot;&quot;/&gt;&lt;/p&gt;&lt;p&gt;When rumours started circulating about a laptop with over 100 GiB of RAM the GPU could access, I started thinking about all the things I could build on it and all the optimisations I could spend far too long playing with. I&amp;#39;m very pro open-weight models. Being able to run things locally and mess around with RL, quantisation and fine-tuning on a laptop would be sick. I already publish &lt;a href=&quot;https://huggingface.co/pfeifferj&quot;&gt;my own GGUF quants on Hugging Face&lt;/a&gt;, with over 160,000 downloads in the past month.&lt;/p&gt;&lt;p&gt;So I was less pleased to find out about the &lt;a href=&quot;https://www.asus.com/laptops/for-creators/proart/proart-p16-h7607/techspec/&quot;&gt;Windows-only official support&lt;/a&gt;. There are plenty of reasons to hate Windows. Mine include &lt;a href=&quot;https://www.microsoft.com/en-us/windows/get-windows-11&quot;&gt;the&lt;/a&gt; &lt;a href=&quot;https://blogs.windows.com/windows-insider/2022/02/16/announcing-windows-11-insider-preview-build-22557/&quot;&gt;privacy&lt;/a&gt; &lt;a href=&quot;https://blogs.windows.com/windows-insider/2025/03/28/announcing-windows-11-insider-preview-build-26200-5516-dev-channel/&quot;&gt;concessions&lt;/a&gt; &lt;a href=&quot;https://blogs.windows.com/windows-insider/2025/10/06/announcing-windows-11-insider-preview-build-26220-6772-dev-channel/&quot;&gt;during&lt;/a&gt; &lt;a href=&quot;https://www.windowslatest.com/2026/10/13/one-click-let-you-escape-microsofts-forced-sign-in-on-windows-11-of-course-microsoft-killed-it/&quot;&gt;setup&lt;/a&gt;, the years spent waiting for Microsoft to &lt;a href=&quot;https://blogs.windows.com/windows-insider/2026/05/15/improving-windows-quality-making-taskbar-and-start-more-personal/&quot;&gt;let people put the taskbar on the side of the screen again&lt;/a&gt;, and &lt;a href=&quot;https://i0.wp.com/pureinfotech.com/wp-content/uploads/2024/04/windows-11-advertisement-experience-hero-mauro-huculak.webp?fit=827%2C551&amp;amp;quality=78&amp;amp;ssl=1&amp;amp;strip=all&quot;&gt;the advertising&lt;/a&gt;. That last link is a collage of real Windows promotions, &lt;a href=&quot;https://pureinfotech.com/remove-ads-windows-11/&quot;&gt;courtesy of Pureinfotech&lt;/a&gt;. You get it. I can go on forever, so let me stay on topic.&lt;/p&gt;&lt;p&gt;Arch is my preferred distribution, and I&amp;#39;m &lt;a href=&quot;https://archlinux.org/people/package-maintainers/#josie&quot;&gt;on the Arch staff as a package maintainer&lt;/a&gt;. I already put it on IBM mainframes (&lt;a href=&quot;https://josie.lol/talks/slides/fosdem-bru-mainframe.pdf&quot;&gt;my FOSDEM slides&lt;/a&gt;), so it was always going to be my starting point here. This build uses &lt;a href=&quot;https://archlinuxarm.org/about&quot;&gt;Arch Linux ARM&lt;/a&gt;, the separate project that ports Arch packages to ARM, with the hardware support added on top.&lt;/p&gt;&lt;p&gt;NVIDIA has been doing kernel work for Ubuntu, which gave me a starting point. I incorporated that, fixed the ACPI override allocation and framebuffer mapping needed to get a console, and worked out the ACPI overrides from the laptop&amp;#39;s own tables (thanks astra &amp;lt;3). The NVIDIA driver and ASUS speaker firmware came from &lt;em&gt;official places on the internet&lt;/em&gt; (pls don&amp;#39;t sue me computer companies). Keyboard support needed a patched &lt;code&gt;hid-asus&lt;/code&gt;, and audio needed its own machine driver.&lt;/p&gt;&lt;p&gt;I put this together into a bootable USB and extended upstream Archinstall 4.5 to install the hardware support. The &lt;a href=&quot;https://github.com/pfeifferj/archlinuxarm-proart-p16&quot;&gt;repo has the build scripts and patches&lt;/a&gt;, including the steps to dump your own ACPI tables and extract the speaker firmware from ASUS&amp;#39;s driver package locally. Mine runs firmware H7607BA.300.&lt;/p&gt;&lt;p&gt;The build inputs are hash pinned. The hardware packages I put together over the weekend are signed with my Arch Linux Package Maintainer key, and the ACPI overrides come from the laptop itself.&lt;/p&gt;&lt;p&gt;The display runs at 3840 × 2400 and 120 Hz, and I use NetworkManager, PipeWire, and rootless Podman with NVIDIA CDI. The installer holds the kernel, NVIDIA, power-management and firmware packages with &lt;code&gt;IgnorePkg&lt;/code&gt;, while ordinary packages keep updating from Arch Linux ARM.&lt;/p&gt;&lt;h2&gt;CPU performance&lt;/h2&gt;&lt;p&gt;I ran the suite on October 19 on native Arch Linux ARM, with kernel &lt;code&gt;7.0.0-1022-nvidia&lt;/code&gt; and NVIDIA driver &lt;code&gt;615.78.08&lt;/code&gt;. The laptop was plugged in with the performance profile selected. For the CPU comparison, I used published Windows results.&lt;/p&gt;&lt;p&gt;The CPU test is native ARM64 7-Zip 26.04 with a fixed 32 MiB dictionary. I ran one warmup and three measured passes at each thread count, then took the medians:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.storagereview.com/review/hp-omnibook-ultra-16-review-rtx-spark-n1x&quot;&gt;StorageReview tested a 128 GB HP OmniBook Ultra 16&lt;/a&gt; with the same 20-core N1X, running native Windows ARM64 binaries. They report 7-Zip ratings in GIPS, so I divided the MIPS ratings in my raw logs by 1,000 to match. Higher is better.&lt;/p&gt;&lt;p&gt;Single-thread is basically a tie. With all 20 threads, my Linux setup is about 5% ahead on compression and 3% ahead on decompression. The HP review doesn&amp;#39;t specify its 7-Zip version or dictionary size, so these percentages compare the two laptop setups.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.computerbase.de/artikel/notebooks/nvidia-rtx-spark-n1x-test.99679/seite-3&quot;&gt;ComputerBase also tested a ProArt P16 with the 20-core N1X&lt;/a&gt;. Converted to GIPS, its Windows 7-Zip score was 155.774; the median total from my three runs was 157.084. Their result sits inside my three-run range of 155.759 to 157.193 GIPS. Their machine was the 64 GB configuration and ran 7-Zip 26.00, and the chart doesn&amp;#39;t give the dictionary size.&lt;/p&gt;&lt;h2&gt;The memory split&lt;/h2&gt;&lt;p&gt;The memory is a bigger flex. My Linux run reports 116.0 GiB as both system RAM and CUDA&amp;#39;s total, from the same physical pool. Windows &lt;a href=&quot;https://docs.nvidia.com/rtx-spark/rtx-spark-porting-guide/latest/uma/index.html&quot;&gt;divides the RAM into dedicated GPU, shared, and CPU-only regions&lt;/a&gt;. CPU workloads can&amp;#39;t use the dedicated GPU region, and GPU allocations can&amp;#39;t use the CPU-only region.&lt;/p&gt;&lt;p&gt;The Windows NVIDIA app lets you change the dedicated reservation and reboot; &lt;a href=&quot;https://www.frandroid.com/test/3283093_test-nvidia-rtx-spark&quot;&gt;Frandroid&amp;#39;s 128 GB ProArt P16 reached 96 GiB&lt;/a&gt;. CUDA can go beyond that by &lt;a href=&quot;https://docs.nvidia.com/rtx-spark/rtx-spark-porting-guide/latest/uma/umacuda.html&quot;&gt;allocating from shared RAM&lt;/a&gt;, subject to Windows&amp;#39; memory budget.&lt;/p&gt;&lt;p&gt;With a 91 GiB dedicated reservation, Frandroid&amp;#39;s Windows setup reported a CUDA total of 109.7 GiB, including shared memory. My Linux setup reported 116.0 GiB, about 6.3 GiB more. What I care about is having the large pool available for CPU work too, without moving the reservation slider and rebooting between workloads.&lt;/p&gt;&lt;h2&gt;Running Qwen locally&lt;/h2&gt;&lt;p&gt;I ran NVIDIA&amp;#39;s &lt;a href=&quot;https://huggingface.co/nvidia/Qwen3.8-Flash-Next-FP4-Local&quot;&gt;Qwen3.8-Flash-Next-FP4-Local checkpoint&lt;/a&gt; through vLLM with B12X CUDA kernels in a native ARM64 container, using mixed quantization and FP8 KV cache. I turned off thinking for this run.&lt;/p&gt;&lt;p&gt;Before loading the model, Linux reported 110.9 GiB of available RAM. vLLM logged 68.2 GiB for model loading and allocated another 21.1 GiB to the KV cache. That&amp;#39;s nearly 90 GiB allocated to the model and KV cache on a laptop.&lt;/p&gt;&lt;p&gt;Model loading and compilation took about 16 minutes before the first request. The timings below start after warmup. PLE embedding tables are backed by disk and benefit from a warm page cache; other components use CPU offload. CUDA handles inference, with some of the model outside GPU memory.&lt;/p&gt;&lt;p&gt;I gave Qwen two buggy Python helpers to review, a long incident log with one failed operation to find, and a payment note to turn into JSON. Each task ran three times after warmup, with known answers to check against. I wanted to know how long I&amp;#39;d wait and whether it returned the right fields.&lt;/p&gt;&lt;p&gt;The incident task read nearly 10,000 tokens and returned the correct request, cause, and next action in under 6 s. Its answer was only 39 tokens long, which comes to 6.8 tokens/s over the whole request. Most of the wait went into processing the prompt, so for this task the response time tells me more than the tokens/s figure.&lt;/p&gt;&lt;p&gt;For code review, I estimated generation speed as &lt;code&gt;(output tokens − 1) / (response time − time to first token)&lt;/code&gt;, with both times in seconds. This includes stream overhead. &lt;a href=&quot;https://www.frandroid.com/test/3283093_test-nvidia-rtx-spark&quot;&gt;Frandroid ran Qwen3.8-Flash-Next coding tasks on its Windows ProArt&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;Both ProArt setups are around 30 tokens/s. For inference, Frandroid used an 85 GiB dedicated reservation and a context limit of 262,144 tokens; my context limit was 32,768 tokens. The prompts, quants, runtimes, and timing methods differ. This compares two working configurations; it doesn&amp;#39;t isolate the effect of the OS.&lt;/p&gt;&lt;p&gt;I also sent four code reviews at once. The median batch finished in 5.314 s, producing 86.6 output tokens/s across all four requests combined. That rate includes prompt processing and response overhead. All 12 answers passed over three batches.&lt;/p&gt;&lt;p&gt;Then I left it cycling through the three tasks, one request at a time, for ten minutes. It finished 150 requests, 50 of each, and every answer passed the checks. Median response times were 4.036 s for code review, 5.921 s for the log, and 2.046 s for extraction. Comparing the first ten and last ten repetitions of each task, median response times grew by less than 1.6%.&lt;/p&gt;&lt;p&gt;All 171 measured responses passed the checks. That&amp;#39;s three prompts repeated with deterministic decoding; the code-review check verifies the regression outputs. I kept every answer and raw event stream and checked them against the summaries.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Finding a home amidst the wreckage - Eskild Hustvedt</title>
<link>https://blog.zerodogg.org/2026/10/18/finding-a-home-amidst-the-wreckage/</link>
<guid isPermaLink="false">P1siuM6I1jh9PaBlhQil-ZpCjeFzq-HDRJE5sA==</guid>
<pubDate>Mon, 19 Oct 2026 22:42:37 +0000</pubDate>
<description>Finding a home amidst the wreckage</description>
<content:encoded>&lt;div&gt;&lt;h1&gt;Finding a home amidst the wreckage&lt;/h1&gt;&lt;i&gt;Published 2026-10-18 19:55&lt;/i&gt;&lt;/div&gt;&lt;p&gt;Like many others in the free software community, I&amp;#39;ve been been growing
apathetic with the whole thing, lately. One project after the other - and one
Linux distro after the other - embrace the proprietary world destroying
plagiarism machine. I&amp;#39;ve been questioning the point of it all. Why make the
effort of writing software, and publishing it, only for huge corporations to
gobble it up, while blatantly ignoring the license?&lt;/p&gt;&lt;p&gt;I felt Debian&amp;#39;s embrace of it the worst. To me it has been a community-focused
constant. Until it wasn&amp;#39;t. That isn&amp;#39;t to say I feel Debian owes me anything.
They don&amp;#39;t. But it still made me sad.&lt;/p&gt;&lt;p&gt;But I still like computers. Coding and tinkering is fun. Unix-like systems are
where I feel comfortable. But, if possible, I&amp;#39;d like to use something that
aligns more with my values than my previous go-to, Debian, does.&lt;/p&gt;&lt;h3&gt;Discovering Chimera Linux&lt;/h3&gt;&lt;p&gt;I&amp;#39;ve been looking into community-focused distros that have firm LLM policies.
While doing this I came over the post «&lt;a href=&quot;https://chimera-linux.org/news/2026/10/the-case-for-cbuild.html&quot;&gt;Creating distro build tooling for a
small community&lt;/a&gt;» on the
&lt;a href=&quot;https://chimera-linux.org/&quot;&gt;Chimera Linux&lt;/a&gt; website. I was intrigued. They also
reject &lt;a href=&quot;https://chimera-linux.org/community/&quot;&gt;LLM contributions&lt;/a&gt; completely.&lt;/p&gt;&lt;p&gt;It&amp;#39;s not just their firm focus on community that makes Chimera interesting,
though. They&amp;#39;ve also got a tech stack that deviates from mainstream Linux.
Chimera uses &lt;a href=&quot;https://musl.libc.org&quot;&gt;musl&lt;/a&gt;, not glibc, it uses a
FreeBSD-derived userspace, not GNU coreutils, and it uses
&lt;a href=&quot;https://github.com/davmac314/dinit&quot;&gt;dinit&lt;/a&gt;, not systemd.&lt;/p&gt;&lt;p&gt;The latter, not using systemd, required a bit of research. Not because it&amp;#39;s a
bad choice, but because some of the discourse among non-systemd-users is
frankly bizarre. But Chimera has my back here too. Chimera «is explicitly
not a part of this community».&lt;/p&gt;&lt;p&gt;I was sold, and quickly installed Chimera. Suddenly I was back to when I
discovered Linux in the early 2000&amp;#39;s, poking around something new and fresh.
This time I knew my way around, but a new init and service manager, the
FreeBSD-based userspace and new-to-me apk-package manager meant I had to learn
some new tricks. It&amp;#39;s loads of fun.&lt;/p&gt;&lt;h3&gt;Making it easy to contribute&lt;/h3&gt;&lt;p&gt;One thing that stood out &lt;a href=&quot;https://chimera-linux.org/news/2026/10/the-case-for-cbuild.html&quot;&gt;in the blog post I
&lt;/a&gt;was
«[…]Every user can be a maintainer. It shouldn&amp;#39;t be unnecessarily intimidating.
We don&amp;#39;t gatekeep here when possible. You should also be having fun using the
system and being here.».&lt;/p&gt;&lt;p&gt;The barrier to entry for contributing to many Linux distributions these days is
pretty high. Chimera makes it an explicit goal to make contributing easy - and
I&amp;#39;d say they&amp;#39;ve succeeded. The packaging tools, and the format you write
packages in, are both easy to learn and easy to use. As of writing, I&amp;#39;ve got
one new package and one update accepted into «cports», Chimera&amp;#39;s package
repository.&lt;/p&gt;&lt;p&gt;More importantly, I made mistakes when contributing, and I was met with advice
and suggestions on how to improve, not with hostility or rejection. What I
first tried to submit wasn&amp;#39;t good enough, but I was given a chance to improve -
and I did.&lt;/p&gt;&lt;p&gt;This welcoming, friendly atmosphere, in my experience, extends to the rest of
the community. I&amp;#39;ve been talking and asking questions in the &lt;a href=&quot;https://webchat.oftc.net/?channels=#chimera-linux&quot;&gt;&lt;code&gt;#chimera-linux&lt;/code&gt;
IRC channel on OFTC&lt;/a&gt;. People
were more than happy to lend me a hand, give me hints and even just chat.&lt;/p&gt;&lt;h3&gt;But, Eskild, you&amp;#39;re still running LLM-generated code&lt;/h3&gt;&lt;p&gt;I am. There&amp;#39;s LLM code in projects upstream from Chimera, perhaps most notably
the Linux kernel. It&amp;#39;s impossible to avoid it at this point, and still be left
with a usable system. I still think there&amp;#39;s value in a project taking a stand,
as much as it can, and I think there&amp;#39;s also value in non-LLM forks like
&lt;a href=&quot;https://vim-classic.org&quot;&gt;vim-classic&lt;/a&gt; and
&lt;a href=&quot;https://codeberg.org/opentmux/opentmux&quot;&gt;opentmux&lt;/a&gt;. I&amp;#39;m happy to be in a
community of builders that take a stand.&lt;/p&gt;&lt;h3&gt;There are others&lt;/h3&gt;&lt;p&gt;If you think this sounds interesting, I urge you to try out &lt;a href=&quot;https://chimera-linux.org/&quot;&gt;Chimera
Linux&lt;/a&gt;. That said, it&amp;#39;s not alone, even though many
of the largest Linux distributions, and *BSDs, are embracing LLMs. &lt;a href=&quot;https://elementary.io/&quot;&gt;Elementary
OS&lt;/a&gt;, &lt;a href=&quot;https://www.gentoo.org/&quot;&gt;Gentoo Linux&lt;/a&gt;, &lt;a href=&quot;https://asahilinux.org/&quot;&gt;Asahi
Linux&lt;/a&gt; and &lt;a href=&quot;https://nura.eco/&quot;&gt;Nura&lt;/a&gt; on the Linux
side, and &lt;a href=&quot;https://www.netbsd.org/&quot;&gt;NetBSD&lt;/a&gt; on the BSD side, are also options.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>#UnplugBigTech: Raus aus der Windows-Abhängigkeit – Teil 10</title>
<link>https://www.kuketz-blog.de/unplugbigtech-raus-aus-der-windows-abhaengigkeit-teil-10/</link>
<guid isPermaLink="false">uH_dnti2Lrdi_LtO6PbJyA2WFqBJNPxInt66YA==</guid>
<pubDate>Mon, 19 Oct 2026 21:41:00 +0000</pubDate>
<description>1. Einleitung In Teil 9 der Serie #UnplugBigTech haben wir uns das Smartphone vorgenommen: Android und iOS, Tracking-Einstellungen, App-Berechtigungen und – für alle, die weitergehen wollen – alternative Android-Systeme wie GrapheneOS. Als Nächstes ist der klassische Rechner dran. Dort läuft in den meisten Fällen Windows 11 – oft schlicht deshalb, weil es beim Kauf schon […]</description>
<content:encoded>&lt;h2&gt;&lt;img src=&quot;https://media.kuketz.de/blog/artikel/2026/unplugbigtech-windows/unplugbigtech-windows.png&quot; alt=&quot;Windows zu Linux&quot; title=&quot;Windows zu Linux&quot;/&gt;1. Einleitung&lt;/h2&gt;&lt;p&gt;In &lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-mehr-kontrolle-ueber-android-und-ios-teil-9/&quot;&gt;Teil 9 der Serie #UnplugBigTech&lt;/a&gt; haben wir uns das Smartphone vorgenommen: Android und iOS, Tracking-Einstellungen, App-Berechtigungen und – für alle, die weitergehen wollen – alternative Android-Systeme wie &lt;a href=&quot;https://grapheneos.org/&quot;&gt;GrapheneOS&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Als Nächstes ist der klassische Rechner dran. Dort läuft in den meisten Fällen Windows 11 – oft schlicht deshalb, weil es beim Kauf schon vorinstalliert war. Dazu kommen ein Browser sowie zahlreiche Cloud-, Office- und KI-Angebote, die Microsoft direkt in Windows integriert oder dort bewirbt.&lt;/p&gt;&lt;p&gt;Windows lässt sich an vielen zwar Stellen datensparsamer einstellen, aber ein Problem bleibt: Microsoft entwickelt das System laufend weiter, ergänzt neue Funktionen und verändert Voreinstellungen. Wer Windows möglichst datensparsam nutzen möchte, muss deshalb immer wieder prüfen, was sich geändert hat.&lt;/p&gt;&lt;p&gt;Ziel dieses Teils: Zunächst verbessern wir den Datenschutz unter Windows 11 mit einigen gezielten Einstellungen. Danach schauen wir uns mit Linux Mint eine Alternative an, die du ausprobieren kannst, ohne Windows sofort zu löschen.&lt;br/&gt;&lt;div&gt;Dieser Beitrag ist Teil einer Artikelserie&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-dein-fahrplan-fuer-ein-freieres-digitales-leben-teil-1/&quot;&gt;#UnplugBigTech: Dein Fahrplan für ein freieres digitales Leben – Teil 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-werbe-und-tracking-blocker-teil-2/&quot;&gt;#UnplugBigTech: Werbe- und Tracking-Blocker – Teil 2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-schluss-mit-chrome-edge-teil-3/&quot;&gt;#UnplugBigTech: Schluss mit Chrome &amp;amp; Edge – Teil 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-e-mail-ohne-werbe-oekosystem-teil-4/&quot;&gt;#UnplugBigTech: E-Mail ohne Werbe-Ökosystem – Teil 4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-eigene-nextcloud-statt-google-drive-co-teil-5/&quot;&gt;#UnplugBigTech: Eigene Nextcloud statt Google Drive &amp;amp; Co. – Teil 5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-whatsapp-verlassen-signal-einrichten-teil-6/&quot;&gt;#UnplugBigTech: WhatsApp verlassen, Signal einrichten – Teil 6&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-das-fediverse-als-alternative-zu-x-instagram-und-facebook-teil-7/&quot;&gt;#UnplugBigTech: Das Fediverse als Alternative zu X, Instagram und Facebook – Teil 7&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-von-a-nach-b-ohne-dass-jemand-mitfaehrt-teil-8/&quot;&gt;#UnplugBigTech: Von A nach B – ohne dass jemand mitfährt – Teil 8&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-mehr-kontrolle-ueber-android-und-ios-teil-9/&quot;&gt;#UnplugBigTech: Mehr Kontrolle über Android und iOS – Teil 9&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-raus-aus-der-windows-abhaengigkeit-teil-10/&quot;&gt;#UnplugBigTech: Raus aus der Windows-Abhängigkeit – Teil 10&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;2. Aufbau der Anleitung&lt;/h2&gt;&lt;/p&gt;&lt;p&gt;Diese Reihe ist für Einsteiger. Deshalb halten wir es bewusst simpel: Keine Fachbegriffs-Parade, keine endlosen Spezialfälle. Wer es eilig hat, findet gleich am Anfang jedes Kapitels unter »&lt;code&gt;Für ganz Eilige&lt;/code&gt;« eine kurze Checkliste mit allen Schritten. Danach kommt der Erklärungsteil: Kurz genug, um nicht zu erschlagen – aber so, dass du verstehst, was du da einstellst.&lt;/p&gt;&lt;p&gt;Damit du dich direkt orientieren kannst, steht am Anfang jedes Kapitels außerdem kurz dabei, für welche Geräte die Schritte gedacht sind. In diesem Teil geht es zunächst um Windows 11 und anschließend um Linux Mint auf einem Desktop-PC oder Notebook.&lt;/p&gt;&lt;h2&gt;3. Problemanalyse&lt;/h2&gt;&lt;p&gt;Windows ist längst mehr als ein Betriebssystem, das Programme startet und Dateien verwaltet. Rund um Windows hat Microsoft ein eigenes Ökosystem aufgebaut: Microsoft-Konto, OneDrive, Edge, Microsoft 365, Bing, Copilot und weitere Dienste greifen ineinander und werden an vielen Stellen direkt im System angeboten.&lt;/p&gt;&lt;p&gt;Zur engen Verzahnung mit Microsoft-Diensten kommt die &lt;a href=&quot;https://de.wikipedia.org/wiki/Telemetrie&quot;&gt;Telemetrie&lt;/a&gt;, also die Übermittlung von Diagnose- und Nutzungsdaten. Diese lässt sich nur teilweise abschalten: Optionale Diagnosedaten kannst du deaktivieren, die von Microsoft als erforderlich eingestuften Daten werden dagegen weiterhin übertragen. Du kannst Windows also an vielen Stellen datensparsamer einstellen, aber nur innerhalb des Rahmens, den Microsoft vorgibt.&lt;/p&gt;&lt;p&gt;Für Einsteiger wäre es trotzdem unsinnig, Windows deshalb sofort zu löschen. Wir machen es wie in den anderen Teilen dieser Serie: Erst verbessern wir das vorhandene System. Danach schauen wir uns eine Alternative an.&lt;/p&gt;&lt;h2&gt;4. Windows 11 datensparsamer einstellen&lt;/h2&gt;&lt;div&gt;&lt;h3&gt;Für ganz Eilige&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://media.kuketz.de/blog/artikel/2026/unplugbigtech/in-eile.png&quot; alt=&quot;In Eile!&quot; title=&quot;In Eile!&quot;/&gt;&lt;/p&gt;&lt;h4&gt;Windows 11&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Optionale Diagnosedaten deaktivieren&lt;/li&gt;&lt;li&gt;Werbe-ID deaktivieren&lt;/li&gt;&lt;li&gt;Personalisierte Empfehlungen und Angebote deaktivieren&lt;/li&gt;&lt;li&gt;Aktivitätsverlauf deaktivieren und vorhandenen Verlauf löschen&lt;/li&gt;&lt;li&gt;App-Berechtigungen für Standort, Kamera, Mikrofon und weitere sensible Bereiche prüfen&lt;/li&gt;&lt;li&gt;Recall deaktivieren bzw. entfernen, wenn die Funktion vorhanden ist und nicht genutzt wird&lt;/li&gt;&lt;li&gt;Firefox aus &lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-schluss-mit-chrome-edge-teil-3/&quot;&gt;Teil 3&lt;/a&gt; als Standardbrowser nutzen&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;Bevor wir uns Linux anschauen, prüfen wir zunächst, was sich unter Windows 11 mit wenigen Einstellungen verbessern lässt. Wir gehen dabei bewusst nicht jeden einzelnen Datenschutzschalter durch. Windows verändert sich zu häufig, um daraus eine Anleitung mit dutzenden Menüpunkten zu machen, die nach dem nächsten größeren Update schon wieder anders aussehen kann.&lt;/p&gt;&lt;p&gt;Die folgenden Punkte sind deshalb die wichtigsten Stellschrauben. Die genauen Bezeichnungen können sich je nach Windows-Version unterscheiden.&lt;/p&gt;&lt;h3&gt;4.1 Diagnosedaten, Werbung und Empfehlungen einschränken [Windows 11]&lt;/h3&gt;&lt;p&gt;Öffne:&lt;/p&gt;&lt;p&gt;&lt;code&gt;Einstellungen -&amp;gt; Datenschutz und Sicherheit&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Dort solltest du zunächst die verschiedenen Datenschutzoptionen prüfen. Besonders relevant sind:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Optionale Diagnosedaten deaktivieren&lt;/li&gt;&lt;li&gt;Werbe-ID deaktivieren&lt;/li&gt;&lt;li&gt;Personalisierte Empfehlungen und Angebote deaktivieren&lt;/li&gt;&lt;li&gt;Online-Spracherkennung deaktivieren, wenn sie nicht benötigt wird&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Microsoft unterscheidet zwischen erforderlichen und optionalen Diagnosedaten. Die optionalen Diagnosedaten können unter anderem Informationen über Gerätenutzung, App-Aktivitäten, besuchte Websites und Absturzspeicher enthalten. Sie können deaktiviert werden. Erforderliche Diagnosedaten werden weiterhin an Microsoft übermittelt. Weitere Informationen dazu bietet Microsoft unter »&lt;a href=&quot;https://support.microsoft.com/de-de/windows/privacy/diagnostics-feedback-and-privacy-in-windows&quot;&gt;Diagnose, Feedback und Datenschutz in Windows&lt;/a&gt;«.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://media.kuketz.de/blog/artikel/2026/unplugbigtech-windows/windows-diagnosedaten.png&quot; alt=&quot;Windows Diagnosedaten&quot; title=&quot;Windows Diagnosedaten&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://media.kuketz.de/blog/artikel/2026/unplugbigtech-windows/windows-angebote.png&quot; alt=&quot;Windows Angebote&quot; title=&quot;Windows Angebote&quot;/&gt;&lt;/p&gt;&lt;p&gt;Wenn ein Menüpunkt nicht exakt so heißt wie hier beschrieben, hilft meist die Suche innerhalb der Windows-Einstellungen.&lt;/p&gt;&lt;h3&gt;4.2 Aktivitätsverlauf und Berechtigungen prüfen [Windows 11]&lt;/h3&gt;&lt;p&gt;Neben Diagnose- und Werbeeinstellungen speichert Windows auch Informationen darüber, wie du das System nutzt. Der Aktivitätsverlauf kann unter anderem erfassen, welche Apps und Dienste du verwendet, welche Dateien du geöffnet und welche Websites du besucht hast. Diese Daten werden lokal auf dem Gerät gespeichert. Weitere Informationen dazu findest du bei Microsoft unter »&lt;a href=&quot;https://support.microsoft.com/de-de/windows/privacy/windows-activity-history-and-your-privacy&quot;&gt;Windows-Aktivitätsverlauf und Datenschutz&lt;/a&gt;«.&lt;/p&gt;&lt;p&gt;Du findest die Einstellung unter:&lt;/p&gt;&lt;p&gt;&lt;code&gt;Einstellungen -&amp;gt; Datenschutz &amp;amp; Sicherheit -&amp;gt; Aktivitätsverlauf&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Dort kannst du »Aktivitätsverlauf auf diesem Gerät speichern« deaktivieren und einen bereits vorhandenen Verlauf über »Verlauf löschen« entfernen.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://media.kuketz.de/blog/artikel/2026/unplugbigtech-windows/windows-activity-history.png&quot; alt=&quot;Windows Aktivitätsverlauf&quot; title=&quot;Windows Aktivitätsverlauf&quot;/&gt;&lt;/p&gt;&lt;p&gt;Danach lohnt sich ein Blick auf die App-Berechtigungen. Unter:&lt;/p&gt;&lt;p&gt;&lt;code&gt;Einstellungen -&amp;gt; Datenschutz &amp;amp; Sicherheit&lt;/code&gt;&lt;/p&gt;&lt;p&gt;findest du weiter unten den Bereich für App-Berechtigungen. Dort kannst du unter anderem festlegen, welche Apps auf folgende Bereiche zugreifen dürfen:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Standort&lt;/li&gt;&lt;li&gt;Kamera&lt;/li&gt;&lt;li&gt;Mikrofon&lt;/li&gt;&lt;li&gt;Kontakte&lt;/li&gt;&lt;li&gt;Dateisystem&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Wählst du beispielsweise »Kamera« oder »Mikrofon« aus, kannst du den Zugriff grundsätzlich einschränken und bei unterstützten Apps auch einzeln festlegen, welche Anwendung darauf zugreifen darf. Microsoft erklärt die entsprechenden Einstellungen unter anderem unter »&lt;a href=&quot;https://support.microsoft.com/de-de/windows/privacy/windows-privacy-settings-that-apps-use&quot;&gt;Windows-Datenschutzeinstellungen, die von Apps verwendet werden&lt;/a&gt;«.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://media.kuketz.de/blog/artikel/2026/unplugbigtech-windows/windows-standort.png&quot; alt=&quot;Windows Standort&quot; title=&quot;Windows Standort&quot;/&gt;&lt;/p&gt;&lt;p&gt;Unter &lt;code&gt;Einstellungen -&amp;gt; Datenschutz &amp;amp; Sicherheit -&amp;gt; App-Diagnose&lt;/code&gt; kannst du zusätzlich verhindern, dass Apps Diagnoseinformationen über andere laufende Apps abrufen. Wenn du diese Funktion nicht brauchst, kannst du sie deaktivieren.&lt;/p&gt;&lt;p&gt;Die Grundregel aus &lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-mehr-kontrolle-ueber-android-und-ios-teil-9/&quot;&gt;Teil 9&lt;/a&gt; gilt auch hier: Eine App sollte nur die Berechtigungen erhalten, die sie tatsächlich benötigt. Schau dir deshalb vor allem sensible Zugriffe genauer an und prüfe, ob sie bei der jeweiligen App wirklich nachvollziehbar sind.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;Hinweis&lt;/h3&gt;&lt;p&gt;Bei klassischen Desktop-Programmen greifen die Windows-Berechtigungen nicht immer so fein wie bei Apps aus dem Microsoft Store. Manche Desktop-Anwendungen lassen sich deshalb nicht einzeln über diese Schalter steuern.&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;4.3 Recall deaktivieren oder entfernen [Windows 11 / Copilot+-PC]&lt;/h3&gt;&lt;p&gt;Auf sogenannten Copilot+-PCs gehört &lt;a href=&quot;https://de.wikipedia.org/wiki/Microsoft_Copilot#Recall&quot;&gt;Recall&lt;/a&gt; zu den KI-Funktionen von Windows 11. Die Funktion kann in regelmäßigen Abständen Momentaufnahmen des Bildschirms speichern, sodass sich später nach Inhalten suchen lässt, die zuvor in Apps, auf Webseiten, in Bildern oder Dokumenten zu sehen waren. Die Momentaufnahmen werden laut Microsoft lokal auf dem Gerät gespeichert und verarbeitet. Das Speichern ist nicht standardmäßig aktiviert, sondern muss vom Nutzer eingeschaltet werden. Wer Recall nicht nutzen möchte, kann die Funktion ausgeschaltet lassen oder vollständig aus Windows entfernen.&lt;/p&gt;&lt;p&gt;Zum Prüfen bzw. Deaktivieren öffnest du:&lt;/p&gt;&lt;p&gt;&lt;code&gt;Einstellungen -&amp;gt; Datenschutz &amp;amp; Sicherheit -&amp;gt; Recall &amp;amp; Momentaufnahmen&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Dort sollte »Momentaufnahmen speichern« deaktiviert sein.&lt;/p&gt;&lt;p&gt;Wer Recall gar nicht auf dem System haben möchte, kann die Funktion vollständig entfernen:&lt;/p&gt;&lt;p&gt;&lt;code&gt;Windows-Suche -&amp;gt; Windows-Features aktivieren oder deaktivieren -&amp;gt; Recall&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Entferne dort den Haken bei »Recall« und starte Windows anschließend neu. Bereits gespeicherte Momentaufnahmen werden beim Entfernen ebenfalls gelöscht.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;Hinweis&lt;/h3&gt;&lt;p&gt;Recall ist nur auf unterstützten Copilot+-PCs verfügbar. Wenn du den Punkt unter Windows nicht findest, ist die Funktion auf deinem Gerät nicht vorhanden.&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;4.4 Firefox als Standardbrowser verwenden [Windows 11]&lt;/h3&gt;&lt;p&gt;Auch beim Browser setzt Windows standardmäßig auf Microsoft Edge. Besonders unschön: Der standardmäßig aktive SmartScreen-Schutz kann aufgerufene URLs zur Prüfung an Microsoft übermitteln – aus Datenschutzsicht ein klarer Fehlgriff. Wenn du bereits &lt;a href=&quot;https://www.kuketz-blog.de/unplugbigtech-schluss-mit-chrome-edge-teil-3/&quot;&gt;Firefox aus Teil 3 der Serie&lt;/a&gt; nutzt, solltest du ihn auch als Standardbrowser festlegen.&lt;/p&gt;&lt;p&gt;Unter Windows 11 findest du die Einstellung unter:&lt;/p&gt;&lt;p&gt;&lt;code&gt;Einstellungen -&amp;gt; Apps -&amp;gt; Standard-Apps -&amp;gt; Firefox&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Dort kannst du Firefox als Standardbrowser festlegen. Anschließend werden normale Weblinks aus anderen Programmen standardmäßig mit Firefox geöffnet. Die eigentliche Einrichtung von Firefox wiederholen wir hier nicht. Welche Einstellungen sinnvoll sind und warum wir Firefox in dieser Serie empfehlen, haben wir bereits in Teil 3 behandelt.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://media.kuketz.de/blog/artikel/2026/unplugbigtech-windows/firefox-standard.png&quot; alt=&quot;Firefox als Standard-Browser&quot; title=&quot;Firefox als Standard-Browser&quot;/&gt;&lt;/p&gt;&lt;h2&gt;5. Das Problem: Das Katz-und-Maus-Spiel mit Microsoft&lt;/h2&gt;&lt;p&gt;Mit diesen Einstellungen ist Windows schon deutlich datensparsamer eingerichtet. Ganz erledigt ist das Thema damit allerdings nicht. Microsoft entwickelt Windows laufend weiter. Neue Funktionen kommen hinzu, bestehende werden verändert und Einstellungen umbenannt oder an andere Stellen verschoben. Nach größeren Windows-Updates lohnt sich deshalb ein erneuter Blick in die Datenschutzoptionen.&lt;/p&gt;&lt;p&gt;Wer Windows möglichst datensparsam nutzen will, bleibt deshalb in einem Katz-und-Maus-Spiel gefangen: Nach Updates prüfen, neue Funktionen einordnen und gegebenenfalls wieder nachjustieren. Wenn dich dieses ständige Nachjustieren irgendwann nervt, kannst du dir anschauen, wie sich ein Rechner ohne Windows anfühlt. Dafür musst du dein bestehendes System nicht direkt aufgeben.&lt;/p&gt;&lt;h2&gt;6. Linux Mint ausprobieren&lt;/h2&gt;&lt;div&gt;&lt;h3&gt;Für ganz Eilige&lt;/h3&gt;&lt;p&gt;&lt;img src=&quot;https://media.kuketz.de/blog/artikel/2026/unplugbigtech/in-eile.png&quot; alt=&quot;In Eile!&quot; title=&quot;In Eile!&quot;/&gt;&lt;/p&gt;&lt;h4&gt;Erst anschauen&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Linux Mint bei Interesse zunächst unverbindlich ansehen&lt;/li&gt;&lt;li&gt;Optional über &lt;a href=&quot;https://distrosea.com/&quot;&gt;DistroSea&lt;/a&gt; direkt im Browser ausprobieren&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Richtig testen&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://linuxmint.com/download.php&quot;&gt;Linux Mint herunterladen&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Bootfähigen USB-Stick erstellen&lt;/li&gt;&lt;li&gt;Rechner vom USB-Stick starten&lt;/li&gt;&lt;li&gt;Linux Mint im Live-Modus ausprobieren&lt;/li&gt;&lt;li&gt;WLAN, Bluetooth, Sound, Drucker, Scanner und andere wichtige Hardware testen&lt;/li&gt;&lt;li&gt;Prüfen, ob Programme und Dienste funktionieren, die du im Alltag brauchst&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Wenn alles passt&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Backup der wichtigen Dateien anlegen&lt;/li&gt;&lt;li&gt;Linux Mint parallel zu Windows installieren&lt;/li&gt;&lt;li&gt;Beim Start des Rechners zunächst zwischen Windows und Linux Mint wählen&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;Es gibt zahlreiche &lt;a href=&quot;https://www.kuketz-blog.de/empfehlungsecke/#linux&quot;&gt;empfehlenswerte GNU/Linux-Distributionen&lt;/a&gt;. Wenn du jemanden kennst, der bereits Linux nutzt und dir beim Einstieg helfen kann, orientiere dich ruhig an dessen Empfehlung. Für alle anderen machen wir die Auswahl bewusst einfach: Wir empfehlen &lt;a href=&quot;https://linuxmint.com/&quot;&gt;Linux Mint&lt;/a&gt;. Die Oberfläche ist Windows vergleichsweise ähnlich und eignet sich deshalb gut für den Einstieg. Wer später tiefer einsteigen möchte, kann sich immer noch andere Distributionen anschauen.&lt;/p&gt;&lt;h3&gt;6.1 Optional: Linux Mint erstmal nur anschauen&lt;/h3&gt;&lt;p&gt;Wer Linux Mint zunächst nur kennenlernen möchte, kann es über einen Dienst wie &lt;a href=&quot;https://distrosea.com/&quot;&gt;DistroSea&lt;/a&gt; im Browser ausprobieren.&lt;/p&gt;&lt;p&gt;Das reicht für einen ersten Eindruck von Oberfläche und Bedienung. Ob Linux Mint auf deinem eigenen Rechner gut läuft, lässt sich damit aber nicht beurteilen. WLAN, Bluetooth, Drucker, Scanner oder andere Hardware werden dabei schließlich nicht auf deinem Gerät getestet. Für einen echten Test brauchen wir deshalb einen USB-Stick.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://media.kuketz.de/blog/artikel/2026/unplugbigtech-windows/linux-mint.png&quot; alt=&quot;Linux Mint&quot; title=&quot;Linux Mint&quot;/&gt;&lt;/p&gt;&lt;h2&gt;7. Linux Mint vom USB-Stick testen&lt;/h2&gt;&lt;p&gt;Bevor du Linux Mint installierst, kannst du es direkt von einem USB-Stick starten und auf deinem eigenen Rechner ausprobieren. Solange du Linux Mint nur startest und nicht installierst oder gezielt Dateien auf der Windows-Partition veränderst, bleibt deine Windows-Installation unangetastet. Du kannst also in Ruhe testen, ob Linux Mint mit deiner Hardware funktioniert und ob du dich mit dem System zurechtfindest.&lt;/p&gt;&lt;p&gt;Dafür brauchst du:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;einen USB-Stick mit 8 GB oder mehr Speicherplatz&lt;/li&gt;&lt;li&gt;das Linux-Mint-Abbild im ISO-Format&lt;/li&gt;&lt;li&gt;ein Programm, das dieses ISO-Abbild bootfähig auf den USB-Stick schreibt&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;h3&gt;Hinweis&lt;/h3&gt;&lt;p&gt;Beim Erstellen des Linux-Mint-Sticks wird der USB-Stick vollständig überschrieben. Sichere deshalb vorher alle Dateien, die darauf noch liegen.&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;7.1 Linux Mint herunterladen&lt;/h3&gt;&lt;p&gt;Linux Mint gibt es in verschiedenen Ausgaben. Für diesen Beitrag verwenden wir die &lt;strong&gt;Cinnamon Edition&lt;/strong&gt;. Die aktuelle Version kannst du &lt;a href=&quot;https://linuxmint.com/download.php&quot;&gt;direkt beim Projekt herunterladen&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Wähle dort: &lt;code&gt;Cinnamon Edition -&amp;gt; Download&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Anschließend landest du auf einer Liste mit sogenannten Download-Mirrors. Das sind verschiedene Server, die dieselbe Datei anbieten. Du kannst grundsätzlich einen beliebigen Server auswählen – am besten einen Server in deiner Nähe. Heruntergeladen wird eine Datei mit der Endung: &lt;code&gt;.iso&lt;/code&gt; bspw.: &lt;code&gt;linuxmint-22.3-cinnamon-64bit.iso&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Dieses ISO-Abbild enthält das vollständige Linux-Mint-System.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;Hinweis&lt;/h3&gt;&lt;p&gt;Linux Mint weist auf der Download-Seite darauf hin, dass sich die heruntergeladene ISO-Datei auf Echtheit und Integrität prüfen lässt. Für Einsteiger ist das ein zusätzlicher Schritt, aber durchaus sinnvoll. Eine Anleitung dazu findest du direkt bei Linux Mint unter »&lt;a href=&quot;https://linuxmint-installation-guide.readthedocs.io/en/latest/verify.html&quot;&gt;Verify your ISO image&lt;/a&gt;«.&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;7.2 Bootfähigen USB-Stick erstellen&lt;/h3&gt;&lt;p&gt;Die ISO-Datei einfach auf den USB-Stick zu kopieren reicht nicht. Der Stick muss so vorbereitet werden, dass dein Rechner davon starten kann. Unter Windows eignet sich dafür &lt;a href=&quot;https://etcher.balena.io/&quot;&gt;balenaEtcher&lt;/a&gt;. Das Programm funktioniert nach einem einfachen Prinzip: ISO-Datei auswählen, USB-Stick auswählen und schreiben lassen.&lt;/p&gt;&lt;p&gt;Installiere bzw. starte Etcher und gehe dann so vor:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Klicke auf »Flash from file« und wähle die heruntergeladene Linux-Mint-ISO-Datei aus.&lt;/li&gt;&lt;li&gt;Klicke auf »Select target« und wähle deinen USB-Stick aus.&lt;/li&gt;&lt;li&gt;Prüfe noch einmal sorgfältig, ob wirklich der richtige USB-Stick ausgewählt ist.&lt;/li&gt;&lt;li&gt;Starte den Vorgang mit »Flash«.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Etcher schreibt das Linux-Mint-Abbild anschließend auf den Stick und prüft das Ergebnis.&lt;/p&gt;&lt;h3&gt;7.3 Rechner vom USB-Stick starten&lt;/h3&gt;&lt;p&gt;Wenn der Stick fertig ist, lässt du ihn eingesteckt und startest den Rechner neu. Normalerweise startet jetzt trotzdem wieder Windows. Du musst dem Rechner deshalb einmal sagen, dass er stattdessen vom USB-Stick starten soll. Dafür gibt es bei den meisten PCs ein sogenanntes &lt;strong&gt;Boot-Menü&lt;/strong&gt;. Welche Taste du dafür drücken musst, hängt vom Hersteller ab. Häufig sind es:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;F12&lt;/li&gt;&lt;li&gt;F11&lt;/li&gt;&lt;li&gt;Esc&lt;/li&gt;&lt;li&gt;F9&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Die Taste musst du direkt nach dem Einschalten mehrfach drücken – also noch bevor Windows startet. Im Boot-Menü wählst du anschließend den USB-Stick aus. Der Eintrag enthält häufig den Namen oder Hersteller des Sticks und teilweise zusätzlich den Begriff »UEFI«.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;Hinweis&lt;/h3&gt;&lt;p&gt;Wenn du das Boot-Menü nicht erreichst, suche im Handbuch deines Rechners oder auf der Herstellerseite nach »Boot Menu« zusammen mit der genauen Modellbezeichnung. Die dafür vorgesehene Taste unterscheidet sich je nach Gerät.&lt;/p&gt;&lt;/div&gt;&lt;h3&gt;7.4 Linux Mint starten – noch nicht installieren&lt;/h3&gt;&lt;p&gt;Wenn der Rechner erfolgreich vom USB-Stick startet, erscheint das Startmenü von Linux Mint. Wähle dort den normalen Start von Linux Mint. Nach kurzer Zeit erscheint der Desktop. Das ist das sogenannte &lt;strong&gt;Live-System&lt;/strong&gt;. Linux Mint läuft jetzt direkt vom USB-Stick. Auf der internen SSD oder Festplatte wird dabei noch nichts installiert und deine vorhandene Windows-Installation bleibt unverändert.&lt;/p&gt;&lt;p&gt;Du kannst dich also erstmal umsehen, Firefox öffnen, ins WLAN gehen oder deine Hardware ausprobieren. Auf dem Desktop findest du zwar bereits das Symbol »Install Linux Mint«. Das ignorieren wir vorerst. An dieser Stelle geht es ausschließlich darum, das System zu testen.&lt;/p&gt;&lt;h3&gt;7.5 Jetzt den eigenen Alltag testen&lt;/h3&gt;&lt;p&gt;Das Live-System läuft vom USB-Stick und kann deshalb etwas langsamer reagieren als eine richtige Installation. Für unseren Test spielt das keine große Rolle. Wichtiger als ein kurzer Blick auf die Oberfläche ist, ob dein eigener Rechner vernünftig funktioniert. Prüfe deshalb die Dinge, die du später tatsächlich brauchst:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Funktioniert WLAN?&lt;/li&gt;&lt;li&gt;Funktioniert Bluetooth?&lt;/li&gt;&lt;li&gt;Kommt Ton aus Lautsprechern und Kopfhörern?&lt;/li&gt;&lt;li&gt;Wird dein Drucker erkannt?&lt;/li&gt;&lt;li&gt;Funktioniert dein Scanner?&lt;/li&gt;&lt;li&gt;Werden weitere USB-Sticks und externe Festplatten erkannt?&lt;/li&gt;&lt;li&gt;Funktioniert die Webcam?&lt;/li&gt;&lt;li&gt;Funktionieren Touchpad, Maus und Sondertasten?&lt;/li&gt;&lt;li&gt;Kannst du deine vorhandenen Dateien öffnen?&lt;/li&gt;&lt;li&gt;Funktionieren die Websites und Webanwendungen, die du regelmäßig nutzt?&lt;/li&gt;&lt;li&gt;Gibt es für deine wichtigen Programme eine Linux-Version oder eine brauchbare Alternative?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Gerade bei Druckern, Scannern und spezieller Hardware helfen allgemeine Aussagen wenig. Entscheidend ist, ob genau deine Geräte funktionieren. Wenn Linux Mint auf einem sehr neuen Rechner nicht startet oder wichtige Hardware nicht erkennt, gibt es zusätzlich sogenannte &lt;a href=&quot;https://linuxmint.com/hwe.php&quot;&gt;HWE-Abbilder&lt;/a&gt; mit einem neueren Linux-Kernel. Probier zunächst trotzdem die normale Cinnamon-Version. Erst wenn es damit Probleme gibt, ist HWE einen Versuch wert.&lt;/p&gt;&lt;p&gt;Wenn etwas Wichtiges fehlt, ist der Versuch damit nicht automatisch gescheitert. Vielleicht gibt es eine Lösung oder Alternative. Wenn nicht, bleibt Windows zunächst erhalten.&lt;/p&gt;&lt;h3&gt;7.6 Zurück zu Windows&lt;/h3&gt;&lt;p&gt;Wenn du genug ausprobiert hast, fährst du Linux Mint über das Startmenü herunter und ziehst anschließend den USB-Stick ab. Beim nächsten Einschalten startet dein Rechner wieder ganz normal mit Windows.&lt;/p&gt;&lt;p&gt;Damit hast du Linux Mint auf deiner eigenen Hardware ausprobiert, ohne Windows zu verändern. Wenn dabei alles Wichtige funktioniert und du das System weiter nutzen möchtest, installieren wir Linux Mint im nächsten Schritt parallel zu Windows.&lt;/p&gt;&lt;h2&gt;8. Welche Programme funktionieren unter Linux Mint?&lt;/h2&gt;&lt;p&gt;Für viele typische Aufgaben musst du unter Linux Mint nicht komplett neu anfangen. Einige Programme aus den bisherigen Teilen der Serie gibt es auch für GNU/Linux und funktionieren dort weitgehend genauso wie unter Windows. Dazu gehören beispielsweise:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.firefox.com/de/&quot;&gt;Firefox&lt;/a&gt; zum Surfen&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.thunderbird.net/de/&quot;&gt;Thunderbird&lt;/a&gt; für E-Mail&lt;/li&gt;&lt;li&gt;viele weitere freie Programme für Fotos, Videos, PDFs oder die alltägliche Dateiverwaltung&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Wenn du Firefox oder Thunderbird bereits unter Windows nutzt, kannst du sie unter Linux Mint einfach weiterverwenden. Die Umstellung fällt dadurch deutlich kleiner aus, weil sich nicht gleichzeitig Betriebssystem und sämtliche Programme ändern.&lt;/p&gt;&lt;p&gt;Genauer hinschauen solltest du bei Software, die ausschließlich für Windows entwickelt wurde. Das betrifft beispielsweise bestimmte berufliche Anwendungen, Steuer- oder Verwaltungsprogramme, manche Spiele oder Programme für spezielle Hardware. Prüfe deshalb vor dem Umstieg, welche Anwendungen du regelmäßig verwendest und ob es davon eine Linux-Version oder eine passende Alternative gibt. Genau dafür ist auch der Test mit dem Live-System hilfreich.&lt;/p&gt;&lt;p&gt;Wenn du auf ein bestimmtes Windows-Programm angewiesen bist und keine brauchbare Alternative findest, ist das kein Grund, Linux Mint gleich abzuschreiben. In diesem Fall behältst du Windows parallel und nutzt es weiterhin für genau diese Aufgaben.&lt;/p&gt;&lt;h2&gt;9. LibreOffice statt Microsoft Office&lt;/h2&gt;&lt;p&gt;Ein wichtiger Punkt beim Wechsel von Windows ist Microsoft Office. Für Texte, Tabellen und Präsentationen steht unter Linux mit &lt;a href=&quot;https://de.libreoffice.org/&quot;&gt;LibreOffice&lt;/a&gt; eine freie Office-Suite zur Verfügung. LibreOffice bringt mit Writer eine Textverarbeitung, mit Calc eine Tabellenkalkulation und mit Impress ein Präsentationsprogramm mit. Für typische Briefe, Tabellen, Rechnungen oder Präsentationen reicht LibreOffice im Alltag meist gut aus.&lt;/p&gt;&lt;p&gt;Auch vorhandene Microsoft-Office-Dateien sind nicht verloren. LibreOffice kann Formate wie DOCX, XLSX oder PPTX grundsätzlich öffnen und bearbeiten. Bei komplexen Dokumenten, Makros, speziellen Schriftarten oder aufwendigen Layouts kann es allerdings zu Abweichungen kommen. Wenn du regelmäßig solche Dateien verwendest, solltest du auch das bereits im Live-System ausprobieren: Öffne einige deiner typischen Word-, Excel- oder PowerPoint-Dateien und schau, ob sie so dargestellt und bearbeitet werden, wie du es brauchst.&lt;/p&gt;&lt;h2&gt;10. Linux Mint parallel zu Windows installieren&lt;/h2&gt;&lt;p&gt;Wenn das Live-System funktioniert und du Linux Mint weiter nutzen möchtest, kannst du es neben Windows installieren. Beim Start des Rechners wählst du anschließend aus, welches Betriebssystem geladen werden soll.&lt;/p&gt;&lt;p&gt;Wichtig: Bei dieser Installation wird die bestehende Festplatte neu aufgeteilt. Genau hier liegt das größte Risiko. Wenn du versehentlich die falsche Option auswählst oder die Partitionierung schiefgeht, können Windows oder persönliche Daten beschädigt werden.&lt;/p&gt;&lt;div&gt;&lt;h3&gt;Vorher unbedingt sichern&lt;/h3&gt;&lt;p&gt;Bevor du Linux Mint parallel zu Windows installierst, solltest du ein aktuelles Backup deiner wichtigen Dateien auf einem externen Datenträger anlegen und kurz prüfen, ob sich die Sicherung auch tatsächlich öffnen lässt. Falls unter Windows &lt;a href=&quot;https://de.wikipedia.org/wiki/BitLocker&quot;&gt;BitLocker&lt;/a&gt; bzw. die Geräteverschlüsselung aktiv ist, sichere zusätzlich den Wiederherstellungsschlüssel.&lt;/p&gt;&lt;p&gt;Bei der Installation selbst ist wichtig, dass du ausdrücklich die Option wählst, Linux Mint &lt;code&gt;neben Windows&lt;/code&gt; zu installieren. Varianten wie »Festplatte löschen« oder eine manuelle Partitionierung sind für diesen Einstieg nicht gedacht und können dazu führen, dass Windows oder vorhandene Daten verloren gehen.&lt;/p&gt;&lt;p&gt;Achte außerdem darauf, wie die Verschlüsselung gehandhabt wird. Gerade bei Notebooks sollte der interne Datenträger verschlüsselt sein. Viele Windows-11-Geräte nutzen dafür bereits BitLocker bzw. die Geräteverschlüsselung. Diesen Schutz solltest du beim Wechsel zu Linux Mint nicht versehentlich verlieren.&lt;/p&gt;&lt;p&gt;Bei einer parallelen Installation neben Windows ist eine vollständige Verschlüsselung von Linux Mint allerdings nicht immer so einfach umzusetzen wie bei einer reinen Linux-Installation. Wird dir keine eindeutige Option angeboten, Linux Mint neben Windows zu installieren, brich an dieser Stelle ab und hole dir Hilfe.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;Nach der Installation sollte beim Start des Rechners ein Auswahlmenü für Windows oder Linux Mint erscheinen. So kannst du beide Systeme parallel nutzen und Windows jederzeit weiter starten.&lt;/p&gt;&lt;h2&gt;11. Typische Stolperfallen&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;Linux ist doch nur etwas für Nerds.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Das Bild hält sich hartnäckig. Einen Browser öffnen, Dateien verwalten, E-Mails schreiben oder mit LibreOffice arbeiten funktioniert unter Linux Mint aber ganz normal über eine grafische Oberfläche. Für typische Alltagsaufgaben musst du nicht ständig Befehle in ein Terminal tippen.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Wenn ich Linux installiere, ist Windows weg.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Nicht, wenn du Linux Mint &lt;strong&gt;parallel&lt;/strong&gt; installierst. Danach entscheidest du beim Start des Rechners, welches System du verwenden möchtest.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Ich muss mich doch erst für die perfekte Linux-Distribution entscheiden.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Am einfachsten ist es oft, mit der Linux-Distribution zu starten, die dir jemand aus deinem Umfeld empfiehlt und bei der dir diese Person auch helfen kann. Kennst du niemanden mit Linux-Erfahrung, empfehlen wir &lt;a href=&quot;https://linuxmint.com/&quot;&gt;Linux Mint&lt;/a&gt;. Die Bedienung ist für Windows-Umsteiger vergleichsweise vertraut und der Einstieg gelingt meist ohne größere Umgewöhnung. Wenn du später tiefer einsteigen möchtest, kannst du dir immer noch &lt;a href=&quot;https://www.kuketz-blog.de/empfehlungsecke/#linux&quot;&gt;andere Distributionen&lt;/a&gt; anschauen.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Meine Word- und Excel-Dateien funktionieren unter Linux nicht mehr.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Die Dateien verschwinden natürlich nicht. LibreOffice kann die verbreiteten Microsoft-Office-Formate öffnen und bearbeiten. Bei komplizierten Dokumenten, Makros oder speziellen Formatierungen kann es aber Abweichungen geben. Solche Dateien solltest du deshalb vorher testen.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Mein Drucker oder Scanner funktioniert bestimmt nicht.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Das lässt sich nicht pauschal sagen. Genau deshalb gibt es den Test mit dem Live-System. Dort merkst du schnell, ob dein konkretes Gerät erkannt wird.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Ich brauche ein bestimmtes Windows-Programm.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Dann behältst du Windows einfach. Wenn eine wichtige Anwendung nur dort läuft, kannst du für diese Aufgabe weiterhin Windows starten. Für Fortgeschrittene gibt es noch eine weitere Möglichkeit: Windows lässt sich beispielsweise mit &lt;a href=&quot;https://www.virtualbox.org/&quot;&gt;VirtualBox&lt;/a&gt; in einer virtuellen Maschine unter Linux betreiben. Dabei läuft Windows innerhalb eines Fensters auf dem Linux-Desktop. Das ist praktisch für einzelne Programme, aber deutlich aufwendiger einzurichten und deshalb nichts, womit Einsteiger anfangen müssen.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Dann lösche ich Windows direkt. Wenn schon, denn schon.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Das erzeugt für Einsteiger vor allem unnötigen Druck. Wenn später doch ein wichtiges Programm oder Gerät fehlt, ist der Frust groß. Windows löschen kannst du immer noch, wenn du sicher bist, dass du es nicht mehr brauchst.&lt;/p&gt;&lt;h2&gt;12. Bei Fragen Hilfe erhalten&lt;img src=&quot;https://media.kuketz.de/blog/artikel/2026/unplugbigtech/help.png&quot; alt=&quot;Hilfe erhalten&quot; title=&quot;Hilfe erhalten&quot;/&gt;&lt;/h2&gt;&lt;p&gt;Du musst das übrigens nicht allein machen. Zu jedem Thema gibt es im &lt;a href=&quot;https://www.kuketz-forum.de/&quot;&gt;Forum&lt;/a&gt; die Möglichkeit, Fragen zu stellen, Erfahrungen zu teilen und konkrete Hilfe zu bekommen – egal ob du beim Erstellen des USB-Sticks hängenbleibst, dein Drucker unter Linux Mint nicht auftaucht oder du wissen möchtest, welche Alternative es für ein bestimmtes Windows-Programm gibt.&lt;/p&gt;&lt;p&gt;Gerade beim Wechsel des Betriebssystems hilft es, konkrete Probleme einzeln zu lösen, statt beim ersten Stolperstein das ganze Vorhaben abzuschreiben.&lt;/p&gt;&lt;h2&gt;13. Für Fortgeschrittene&lt;/h2&gt;&lt;p&gt;Wer sich mit Linux Mint eingelebt hat oder von Anfang an mehr ausprobieren möchte, findet eine große Auswahl weiterer GNU/Linux-Distributionen. Eine Orientierung bietet beispielsweise der &lt;a href=&quot;https://distrochooser.de/&quot;&gt;DistroChooser&lt;/a&gt;. Verschiedene Distributionen lassen sich außerdem über &lt;a href=&quot;https://distrosea.com/&quot;&gt;DistroSea&lt;/a&gt; direkt im Browser anschauen.&lt;/p&gt;&lt;p&gt;Später können auch Themen wie manuelle Partitionierung, virtuelle Maschinen, &lt;a href=&quot;https://de.wikipedia.org/wiki/Wine&quot;&gt;Wine&lt;/a&gt; oder eine vollständige Linux-Installation ohne Windows interessant werden. Wer tiefer einsteigen möchte, kann sich außerdem mit einer individuell eingerichteten Festplattenverschlüsselung beschäftigen – etwa wenn die automatische Installationsroutine nicht zu den eigenen Anforderungen passt.&lt;/p&gt;&lt;p&gt;Die Verschlüsselung selbst ist dabei kein reines Fortgeschrittenen-Thema, sondern gerade bei mobilen Geräten ein wichtiger Basisschutz. Fortgeschritten wird es erst dann, wenn du sie manuell einrichten oder an eine besondere Partitionierung anpassen möchtest.&lt;/p&gt;&lt;p&gt;Für den Einstieg brauchst du diese technischen Details nicht. Mit Linux Mint, einem Live-System und bei Bedarf einer parallelen Installation hast du bereits einen einfachen Weg, GNU/Linux im eigenen Alltag kennenzulernen.&lt;/p&gt;&lt;h2&gt;14. Fazit&lt;/h2&gt;&lt;p&gt;Windows 11 lässt sich an einigen Stellen deutlich datensparsamer einstellen. Optionale Diagnosedaten, Werbung, Empfehlungen, Aktivitätsverlauf und unnötige Berechtigungen müssen nicht einfach hingenommen werden. Die grundsätzliche Abhängigkeit bleibt allerdings bestehen: Microsoft entscheidet, welche Funktionen Windows künftig enthält, welche Daten als erforderlich gelten und welche Voreinstellungen das System mitbringt. Wer Windows möglichst datensparsam nutzen möchte, muss deshalb nach größeren Änderungen immer wieder kontrollieren und gegebenenfalls nachjustieren.&lt;/p&gt;&lt;p&gt;Wer sich davon lösen möchte, kann Linux Mint ausprobieren, ohne Windows gleich aufzugeben. Du kannst das System zunächst ansehen, anschließend vom USB-Stick auf deiner eigenen Hardware testen und es später neben Windows installieren.&lt;/p&gt;&lt;p&gt;So musst du dich nicht an einem Nachmittag für oder gegen Windows entscheiden. Nutze Linux Mint dort, wo es für dich funktioniert, und behalte Windows zunächst für die Dinge, die noch fehlen. Ob du es irgendwann ganz loswerden möchtest, kannst du später entscheiden.&lt;/p&gt;&lt;hr/&gt;👇&lt;p&gt;kuketz-blog.de wird vollständig durch Spenden unserer Leser getragen. &lt;a href=&quot;https://www.kuketz-blog.de/unterstuetzen/&quot;&gt;Unterstütze&lt;/a&gt; auch du unsere Arbeit und werde Teil dieser großartigen Community! ❤️&lt;/p&gt;</content:encoded>
</item>
<item>
<title>From Home Assistant to AI agents: what Linux unlocks on the Arduino® UNO™ Q board | Arduino Blog</title>
<link>https://blog.arduino.cc/2026/10/05/from-home-assistant-to-ai-agents-what-linux-unlocks-on-the-arduino-uno-q-board/</link>
<enclosure type="image/jpeg" length="0" url="https://blog.arduino.cc/wp-content/uploads/2026/09/UNO_Q_SBC-Arduino.cc-Blogpost-Featured-385x289-1.jpg"></enclosure>
<guid isPermaLink="false">D_OxwXpR6wSDssfA_5sVf-rM9mDV65yFgKYYQQ==</guid>
<pubDate>Mon, 19 Oct 2026 21:08:03 +0000</pubDate>
<description>UNO Q was designed around a dual-brain architecture that is built to bring high-performance computing and real-time hardware control together on a single</description>
<content:encoded>&lt;figure&gt;&lt;div&gt;&lt;img src=&quot;https://blog.arduino.cc/wp-content/uploads/2026/09/UNO_Q_SBC-Arduino.cc-Blogpost-Cover-1100x600-1-1024x559.jpg&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/div&gt;&lt;/figure&gt;&lt;p&gt;&lt;a href=&quot;https://www.arduino.cc/product-uno-q&quot;&gt;UNO Q&lt;/a&gt; was designed around a dual-brain architecture that is built to bring high-performance computing and real-time hardware control together on a single board. The Linux environment on the MPU side is constructed to let developers install and run familiar open-source software – the same tools they’d reach for on a server or any popular SBC. Meanwhile, the STM32H5 microcontroller runs a dedicated Arduino Core on Zephyr RTOS, handling sensors, actuators, and time-critical I/O with deterministic precision. Together, they make the UNO Q something more than the sum of its parts.&lt;/p&gt;&lt;p&gt;What follows is a set of concrete examples: real software platforms you can install on UNO Q today, what each one enables, and why having the microcontroller in the same system changes what’s possible.&lt;/p&gt;&lt;h2&gt;#1 Agentic AI development&lt;/h2&gt;&lt;figure&gt;&lt;div&gt;&lt;img src=&quot;https://blog.arduino.cc/wp-content/uploads/2026/09/image-4-1024x576.png&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/div&gt;&lt;/figure&gt;&lt;p&gt;UNO Q is engineered to put an AI coding agent inside the hardware it is writing for. An agent running on the board can receive a goal, process context, call tools, interact with services, and – through the board’s hardware interfaces – turn decisions into real-world actions. The reasoning comes from a frontier model over the API, but the tool calls run on the device. That last part is what makes this different from running an agent on a laptop or a server: the machine executing the decisions is also wired into the physical world.&lt;/p&gt;&lt;p&gt;The practical starting point is installing an AI coding agent, such as OpenCode, directly on the board. With the right context added – for example, knowledge of the Arduino&lt;sup&gt;®&lt;/sup&gt; App Lab CLI and the board’s specific capabilities – it can set up Linux services for you, answer questions about Debian on UNO Q, and build physically connected Arduino apps end to end: create the app, write the sketch, deploy it, read the output, iterate. Any agent can write a sketch; only one running on the board can deploy it and see what happened.&lt;/p&gt;&lt;p&gt;More broadly, this creates a meaningful bridge between generative AI and embedded systems. Only the reasoning leaves the board: the sensors, actuators, and data stay where they are.&lt;/p&gt;&lt;p&gt;Ready to try the full tutorial? &lt;a href=&quot;https://docs.arduino.cc/tutorials/uno-q/ai-coding-agents/&quot;&gt;Find out here how to install and use Open Code on UNO Q&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;#2 Home Assistant&lt;/h2&gt;&lt;figure&gt;&lt;div&gt;&lt;img src=&quot;https://blog.arduino.cc/wp-content/uploads/2026/09/image-4-1024x576.jpeg&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/div&gt;&lt;/figure&gt;&lt;p&gt;Home Assistant dashboards inspiration&lt;/p&gt;&lt;p&gt;Home Assistant aims to turn UNO Q into the center of a local smart home or building automation system, connecting lights, climate controls, energy meters, and other compatible devices through a single dashboard and automation engine. Running entirely on the Linux side, it is built to handle scheduling, historical data, dashboards, and integrations – with no cloud subscription required.&lt;/p&gt;&lt;p&gt;The real advantage emerges when custom hardware enters the picture. A Qwiic temperature and air-quality sensor connected to the board’s Qwiic port could feed live data into Home Assistant, while an Arduino sketch running on the STM32H5 microcontroller is constructed to drive a ventilation fan through a relay based on those readings. Home Assistant is designed to manage the logic and interface on Linux; the microcontroller is engineered to handle the physical layer. The two communicate via the onboard RPC bridge, with no external Arduino board required.&lt;/p&gt;&lt;p&gt;Need a little guidance in trying this yourself? &lt;a href=&quot;https://github.com/arduino/docs-content-private/pull/1088&quot;&gt;Check out this GitHub tutorial&lt;/a&gt;. &lt;/p&gt;&lt;h2&gt;#3 n8n automation&lt;/h2&gt;&lt;p&gt;n8n is a visual workflow automation platform that is built to connect services, APIs, databases, and devices – think of it as a self-hosted alternative to Zapier or Make, with full data sovereignty because everything runs locally.&lt;/p&gt;&lt;p&gt;Running n8n on UNO Q is designed to bring those workflows to the edge. A single workflow could receive sensor data from the microcontroller side, process and store it in a local database, update a dashboard, send a notification to an external service, and trigger a physical output – all in sequence, all on the same device.&lt;/p&gt;&lt;p&gt;The combination makes UNO Q a practically designed platform for rapid prototyping, industrial automation, smart building control, and local edge orchestration where cloud latency or dependency would be a problem.&lt;/p&gt;&lt;h2&gt;#4 Pi-hole network shield&lt;/h2&gt;&lt;figure&gt;&lt;div&gt;&lt;img src=&quot;https://blog.arduino.cc/wp-content/uploads/2026/09/image-5-1024x576.png&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/div&gt;&lt;/figure&gt;&lt;p&gt;Pi-hole is a DNS-level filtering service that is structured to block advertising, tracking domains, and unwanted traffic for every device on the local network that uses it as a DNS server. On a standard single-board computer, that’s where the story ends.&lt;/p&gt;&lt;p&gt;UNO Q is different: the Linux side runs Pi-hole and its web dashboard, while the microcontroller can drive a dedicated status display, visualize blocked-request activity in real time, trigger an alert if the DNS service becomes unavailable, or provide a physical button to temporarily pause filtering – without opening a browser interface. &lt;/p&gt;&lt;p&gt;It’s a small example of a broader pattern: UNO Q aims to turn passive software services into systems with physical feedback and control.&lt;/p&gt;&lt;p&gt;Want to protect your home from ads, using UNO Q and Pi-hole? Check out &lt;a href=&quot;https://projecthub.arduino.cc/AndreaRichetta/protect-your-home-from-adv-using-uno-q-and-pi-hole-e4b834&quot;&gt;this Project Hub tutorial&lt;/a&gt;. &lt;/p&gt;&lt;h2&gt;#5 Frigate camera computer vision&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://frigate.video/&quot;&gt;Frigate&lt;/a&gt; is a network video recorder built around real-time object detection. It can process camera streams locally to identify people, vehicles, animals, or other defined events – and running it on UNO Q keeps that processing at the edge, where it belongs. &lt;/p&gt;&lt;p&gt;UNO Q is a practical host for Frigate for a few reasons. Cameras can be connected directly via USB or accessed remotely over RTSP (Real Time Streaming Protocol) when Frigate detects a relevant event, the microcontroller side can respond immediately – triggering a light, an alarm, a relay, or a Modulino-based indicator – without any additional hardware.&lt;/p&gt;&lt;p&gt;Sensitive footage stays local. Response times improve. And the physical response doesn’t require a round trip to the cloud.&lt;/p&gt;&lt;h2&gt;#6 Local NAS with SMB&lt;/h2&gt;&lt;p&gt;UNO Q can be configured as a lightweight network-attached storage server using SMB, making shared folders accessible to other computers and devices on the local network – useful for camera recordings, machine-learning datasets, sensor logs, or shared project files.&lt;/p&gt;&lt;p&gt;Paired with a dongle that gives cabled Ethernet connectivity and an external USB Disk, this can be a quick and instant NAS, flexible enough for sharing office documents with your colleagues or family. &lt;/p&gt;&lt;h2&gt;&lt;strong&gt;A platform, not just a single application&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Each of these applications is useful independently. The more interesting territory is what opens up when they run together.&lt;/p&gt;&lt;p&gt;Here’s one example of how that could look in practice: Frigate detects a person entering a monitored area and publishes the event via MQTT. Home Assistant picks up that event and switches on a light. n8n extends the response by calling an external API, logging the event to a database, and sending a notification. Meanwhile, the raw footage remains accessible over the local network through the Samba share. The microcontroller drives an indicator throughout. All of this runs on one board. &lt;/p&gt;&lt;p&gt;UNO Q is designed to provide a common foundation where Linux applications, local AI workloads, network services, and real-time embedded hardware control can be part of the same coherent system – rather than spread across multiple devices with their own power supplies, enclosures, and points of failure.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;UNO Q is available on the &lt;/strong&gt;&lt;a href=&quot;https://store.arduino.cc/products/uno-q-4gb?utm_source=content&amp;amp;utm_medium=blogpost&amp;amp;utm_campaign=unoq_is_the_answer&amp;amp;utm_id=mktg-content&quot;&gt;&lt;strong&gt;Arduino Store&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; or can be ordered from DigiKey, Farnell, Mouser, Newark, RS Components, Robu.in, and many other authorized distributors and resellers.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Arduino, UNO, and the Arduino logo are trademarks or registered trademarks of Arduino S.r.l.&lt;/em&gt;&lt;/p&gt;</content:encoded>
</item>
<item>
<title>YAFFplayer 0.13.0 (FFmpeg-based Audio / Video Player) released</title>
<link>https://geeks3d.com/20261007/yaffplayer-0-13-ffmpeg-based-audio-video-player/</link>
<guid isPermaLink="false">AtNZ08e13eimVdzqH7S51B6cu81HXJADvEjcfQ==</guid>
<pubDate>Mon, 19 Oct 2026 20:26:20 +0000</pubDate>
<description>YAFFplayer 0.13.0, an audio and video file player based on FFmpeg for Windows and Linux platforms has been released with improvements and bug fixes.</description>
<content:encoded>Skip to content&lt;div&gt;


    &lt;section&gt;

        &lt;div&gt;

	&lt;div&gt;
    							&lt;article&gt;
		&lt;header&gt;
																	&lt;h1&gt;YAFFplayer 0.13 (FFmpeg-based Audio / Video Player)&lt;/h1&gt;						&lt;div&gt;
									&lt;span&gt;&lt;a href=&quot;https://geeks3d.com/20261007/yaffplayer-0-13-ffmpeg-based-audio-video-player/&quot;&gt;&lt;time&gt;2026/10/07&lt;/time&gt;&lt;/a&gt;&lt;/span&gt; &lt;span&gt;&lt;span&gt;&lt;a href=&quot;https://geeks3d.com/author/jegx/&quot;&gt;JeGX&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;													 &lt;a href=&quot;https://geeks3d.com/20261007/yaffplayer-0-13-ffmpeg-based-audio-video-player/#respond&quot;&gt;&lt;span&gt;Comment&lt;/span&gt;&lt;/a&gt;											&lt;/div&gt;
																&lt;a href=&quot;https://geeks3d.com/20261007/yaffplayer-0-13-ffmpeg-based-audio-video-player/&quot;&gt;&lt;img src=&quot;https://geeks3d.com/wp-content/uploads/2024/12/yaffplayer-logo-20241229.png&quot; alt=&quot;YAFFplayer audio video file player based on FFmpeg&quot; title=&quot;&quot;/&gt;&lt;/a&gt; 
							&lt;/header&gt;
											

&lt;p&gt;
&lt;/p&gt;&lt;center&gt; 



&lt;/center&gt; 






		&lt;div&gt;
			
&lt;div&gt;
&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;
      &lt;br/&gt;
      &lt;br/&gt;
      
&lt;/td&gt;
&lt;td&gt;
&lt;h2&gt;1 – Download&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://geeks3d.com/dl/show/822&quot;&gt;YAFFplayer win64&lt;/a&gt;
&lt;p&gt;&lt;small&gt;&lt;b&gt;(7zip, no-installer)&lt;/b&gt;&lt;/small&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://geeks3d.com/dl/show/823&quot;&gt;YAFFplayer linux x86_64&lt;/a&gt;
&lt;p&gt;&lt;small&gt;&lt;b&gt;(7zip, no-installer)&lt;/b&gt;&lt;/small&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li&gt;&lt;a href=&quot;https://geeks3d.com/dl/show/824&quot;&gt;YAFFplayer linux arm64&lt;/a&gt;
&lt;p&gt;&lt;small&gt;&lt;b&gt;(7zip, no-installer)&lt;/b&gt;&lt;/small&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;b&gt;Feedback and support:&lt;/b&gt;&lt;br/&gt;
– &lt;a href=&quot;https://www.geeks3d.com/forums/index.php/topic,8225.0.html&quot;&gt;Forum thread&lt;/a&gt;&lt;br/&gt;
– &lt;a href=&quot;https://www.geeks3d.com/discord/&quot;&gt;Discord&lt;/a&gt;
&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;A new update of &lt;a href=&quot;https://www.geeks3d.com/yaffplayer/&quot;&gt;YAFFplayer&lt;/a&gt; is ready for Windows 64-bit and Linux 64-bit (x86_64 and arm64).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;YAFFplayer&lt;/b&gt; is a simple &lt;b&gt;audio and video player&lt;/b&gt; made with &lt;a href=&quot;https://www.geeks3d.com/geexlab/&quot;&gt;GeeXLab&lt;/a&gt; and using the powerful &lt;a href=&quot;https://ffmpeg.org/&quot;&gt;FFmpeg&lt;/a&gt; library to read nearly every kind of video and audio files. It’s a standalone and native application for Windows and Linux. And thanks to &lt;a href=&quot;https://www.geeks3d.com/dl/show/10203&quot;&gt;yt-dlp&lt;/a&gt;, YAFFplayer can easily download video files from many youtube-like websites and even videos from Twitter or sounds from Soundcloud.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;YAFFplayer 0.13.0&lt;/b&gt; is built with &lt;a href=&quot;https://www.geeks3d.com/hacklab/20261005/geexlab-0-67-released/&quot;&gt;GeeXLab 0.67&lt;/a&gt; and the FFmpeg plugin has been updated with latest &lt;a href=&quot;https://www.geeks3d.com/forums/index.php/topic,8357.0.html&quot;&gt;FFmpeg 9.0.2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.geeks3d.com/public/jegx/2026q4/yaffplayer-0-13.jpg&quot; alt=&quot;YAFFplayer 0.13 - Audio / Video player based on FFmpeg&quot; title=&quot;&quot;/&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;2 – Changelog&lt;/h2&gt;
&lt;pre&gt;&lt;b&gt;Version 0.13.0.0 - 2026.10.03&lt;/b&gt;
- (Windows) change in video download: if video format is not specified 
  (Best MP4 format or custom download format), FFmpeg.exe is 
  no longer used to merge audio and video streams. 
  That allows yt-dlp to download videos with defaut format.
- updated with yt-dlp v2026.09.27.
- updated FFmpeg plugin with FFmpeg 9.0.2.
- updated with GeeXLab 0.67.0.
&lt;/pre&gt;
			
		

		

      &lt;div&gt;

&lt;p&gt;&lt;b&gt;Related posts:&lt;/b&gt;&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://geeks3d.com/20251014/yaffplayer-0-12-released-ffmpeg-based-audio-video-player/&quot;&gt;YAFFplayer 0.12 Released (FFmpeg-based Audio/Video Player) (*** UPDATED: v0.12.2 ***)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://geeks3d.com/20241230/yaffplayer-0-11-released-audio-video-player/&quot;&gt;YAFFplayer 0.11 Released (Audio/Video Player) (*** UPDATED: v0.11.1 win64 ***)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://geeks3d.com/20191123/yaffplayer-0-2-0-yet-another-ffmpeg-based-video-player/&quot;&gt;YAFFplayer 0.2.0: Yet Another FFmpeg-based Video Player (Updated v0.2.7)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://geeks3d.com/20241008/yaffplayer-0-10-audio-video-player-released-for-windows-and-linux/&quot;&gt;YAFFplayer 0.10 Released for Windows and Linux (UPDATED: v0.10.3 win64)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://geeks3d.com/20220617/yaffplayer-0-5-8-released-for-windows-linux-and-raspberry-pi-os/&quot;&gt;YAFFplayer 0.5.8 released for Windows, Linux and Raspberry Pi OS (Updated: v0.5.16.0)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;



		&lt;/div&gt;
				&lt;footer&gt;
			&lt;div&gt;
															&lt;div&gt;&lt;span&gt; &lt;a href=&quot;https://geeks3d.com/category/softwares/geeks3d/yaffplayer/&quot;&gt;YAFFplayer&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;																		&lt;div&gt; &lt;span&gt;&lt;a href=&quot;https://geeks3d.com/tag/audio-player/&quot;&gt;audio player&lt;/a&gt;, &lt;a href=&quot;https://geeks3d.com/tag/ffmpeg/&quot;&gt;ffmpeg&lt;/a&gt;, &lt;a href=&quot;https://geeks3d.com/tag/geexlab/&quot;&gt;geexlab&lt;/a&gt;, &lt;a href=&quot;https://geeks3d.com/tag/linux/&quot;&gt;Linux&lt;/a&gt;, &lt;a href=&quot;https://geeks3d.com/tag/mp3/&quot;&gt;mp3&lt;/a&gt;, &lt;a href=&quot;https://geeks3d.com/tag/mp4/&quot;&gt;mp4&lt;/a&gt;, &lt;a href=&quot;https://geeks3d.com/tag/opengl/&quot;&gt;opengl&lt;/a&gt;, &lt;a href=&quot;https://geeks3d.com/tag/video-player/&quot;&gt;video player&lt;/a&gt;, &lt;a href=&quot;https://geeks3d.com/tag/windows/&quot;&gt;windows&lt;/a&gt;, &lt;a href=&quot;https://geeks3d.com/tag/yaffplayer/&quot;&gt;yaffplayer&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;				

			&lt;/div&gt;
									&lt;/footer&gt;
	&lt;/article&gt;
			
			&lt;div&gt;
					&lt;div&gt;
		&lt;h3&gt;Leave a Comment &lt;small&gt;&lt;a href=&quot;https://geeks3d.com/20261007/yaffplayer-0-13-ffmpeg-based-audio-video-player/#respond&quot;&gt;Cancel Reply&lt;/a&gt;&lt;/small&gt;&lt;/h3&gt;&lt;p&gt;Your email address will not be published.&lt;/p&gt;&lt;p&gt;Comment&lt;/p&gt;&lt;div&gt;
			       &lt;div&gt;
			      	&lt;p&gt;Your Name &lt;/p&gt;
&lt;p&gt;Your Email &lt;/p&gt;
&lt;p&gt;Your Website&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Save my name, email, and website in this browser for the next time I comment.&lt;/p&gt;
&lt;p&gt; 

&lt;/p&gt;	&lt;/div&gt;
	&lt;/div&gt;
			&lt;/div&gt;
		&lt;div&gt;
					&lt;/div&gt;
	            &lt;/div&gt;
	   &lt;/section&gt;
    &lt;/div&gt;</content:encoded>
</item>
<item>
<title>Debugging BeagleBoard USB boot with a sniffer: fixing omap_loader on modern PCs</title>
<link>https://www.downtowndougbrown.com/2025/11/debugging-beagleboard-usb-boot-with-a-sniffer-fixing-omap_loader-on-modern-pcs/</link>
<guid isPermaLink="false">z_k4mnTxT9d0qAH06xg1Skeu8fSU8Io0W0wkbg==</guid>
<pubDate>Mon, 19 Oct 2026 19:49:28 +0000</pubDate>
<description>This post is about the original OMAP3530 BeagleBoard from 2008. Yes, the one so old that it doesn’t even show up in the board list on BeagleBoard.org anymore. The BeagleBoard, not the BeagleBone. During my Chumby 8 kernel escapades, at one point I ran into a UART bug that affected multiple drivers, including the omap-serial […]</description>
<content:encoded>&lt;p&gt;This post is about the original &lt;a href=&quot;https://www.beagleboard.org/boards/beagleboard&quot;&gt;OMAP3530 BeagleBoard&lt;/a&gt; from 2008. Yes, the one so old that it doesn’t even show up in &lt;a href=&quot;https://www.beagleboard.org/boards&quot;&gt;the board list on BeagleBoard.org&lt;/a&gt; anymore. The Beagle&lt;strong&gt;Board&lt;/strong&gt;, not the BeagleBone. During my Chumby 8 kernel escapades, at one point &lt;a href=&quot;https://www.downtowndougbrown.com/2024/07/upgrading-my-chumby-8-kernel-part-12-uart-woes/&quot;&gt;I ran into a UART bug that affected multiple drivers&lt;/a&gt;, including the omap-serial driver. This led me to buy a BeagleBoard so I could verify the omap-serial bug on hardware.&lt;/p&gt;&lt;figure&gt;&lt;a href=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2024/07/beagleboard.jpg&quot;&gt;&lt;img src=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2024/07/beagleboard.jpg&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p&gt;After I figured out the bug with the UART driver, I realized that the OMAP3530 has support for booting from USB, so I decided to go off on a random tangent to get USB boot working. There was no problem I was trying to solve or anything like that. I just thought it would be a fun experiment (am I a masochist?). Little did I know, I would be getting myself into some tricky USB packet analysis.&lt;/p&gt;&lt;p&gt;I struggled to find info about this process because of how old the OMAP is today. The main utility I found was a program called &lt;a href=&quot;https://github.com/grant-h/omap_loader&quot;&gt;omap_loader&lt;/a&gt; by Grant Hernandez, which is a newer rewrite of Martin Mueller’s original &lt;a href=&quot;https://groups.google.com/g/beagleboard/c/K56ZiGu3p0c&quot;&gt;omap3_usbload&lt;/a&gt; circa 2008. Thanks to some lucky searching combined with the Internet Archive, I connected the dots between 2008 and the present. At some point before 2013, Rick Bronson &lt;a href=&quot;https://web.archive.org/web/20120905211155/http://elinux.org/BeagleBoard#Serial_and_USB_boot&quot;&gt;provided an update to omap3_usbload (along with a patch to TI’s X-Loader bootloader)&lt;/a&gt; that enabled uploading additional files like a full U-Boot and Linux kernel into RAM after X-Loader, all through USB. This unlocked the ability to boot all the way to Linux from a completely blank BeagleBoard. Grant’s newer omap_loader utility also incorporates these same improvements.&lt;/p&gt;&lt;p&gt;All of this research was difficult. Many of the links I found pointed to sites like gitorious.org and arago-project.org, both of which no longer exist (although Arago’s Git repos are now &lt;a href=&quot;https://git.ti.com/cgit/&quot;&gt;hosted by TI&lt;/a&gt;). eLinux.org’s BeagleBoard wiki was totally rearranged at some point and lost its info about USB recovery, and Rick’s site no longer exists, but as usual, the Internet Archive saved the day.&lt;/p&gt;&lt;p&gt;At some point later on, X-Loader was replaced by U-Boot SPL, so I think that is partially why so much of this info eventually disappeared from the web. But it’s a darn shame. This USB booting functionality is really cool, and it seems like most of the documentation for it has slowly gone by the wayside! The main breadcrumbs remaining on modern Google are the newer omap_loader utility, and also some references to Nest thermostats. For example, &lt;a href=&quot;https://nest-open-source.googlesource.com/nest-learning-thermostat/5.9.4/x-loader/+/refs/heads/master/x-loader/drivers/usb/usb.c&quot;&gt;Nest’s X-Loader had the USB patch applied&lt;/a&gt; (with some tweaks added).&lt;/p&gt;&lt;p&gt;With all that research out of the way, I was ready to try it all out. I compiled omap_loader, grabbed the pre-built binary of x-load.bin that was included with Rick’s patchset, and also used a u-boot.bin that I had compiled myself using Buildroot while performing my UART tests with a modern kernel on the BeagleBoard. Then, I tried to load it:&lt;/p&gt;&lt;pre&gt;$ sudo ./omap_loader -p 0xd009 -f x-load.bin -f u-boot.bin -a 0x80800000 -j 0x80800000 -v&lt;br/&gt;OMAP Loader 1.0.0&lt;br/&gt;File &amp;#39;x-load.bin&amp;#39; at 0x40200000, size 26956&lt;br/&gt;File &amp;#39;u-boot.bin&amp;#39; at 0x80800000, size 777760&lt;br/&gt;[+] scanning for USB device matching 0451:d009...&lt;/pre&gt;&lt;p&gt;The idea behind this command is it sends X-Loader (x-load.bin) as the main payload that the OMAP’s on-chip bootloader is listening for over USB. Then, X-Loader starts up. Next, omap_loader sends any additional files using X-Loader’s USB protocol. In this case, I’ve supplied one extra file: u-boot.bin, which I told it to load into RAM at 0x80800000. Finally, the &lt;code&gt;-j 0x80800000&lt;/code&gt; argument tells X-Loader to jump into U-Boot rather than hanging around doing nothing afterward.&lt;/p&gt;&lt;p&gt;The output of the command looked normal so far. I plugged in my BeagleBoard, which didn’t have an SD card inserted and also had its NAND flash erased, so it had no bootloader installed and thus it would attempt a USB boot.&lt;/p&gt;&lt;pre&gt;[+] successfully opened 0451:d009 (Texas Instruments OMAP3430)&lt;br/&gt;[+] got ASIC ID - Num Subblocks [05], Device ID Info [01050134300757], Reserved [13020100], Ident Data [1215010000000000000000000000000000000000000000], Reserved [1415010000000000000000000000000000000000000000], CRC (4 bytes) [150901f7488f2800000000]&lt;br/&gt;[-] fatal transfer error (BULK_OUT) for 26956 bytes (0 made it): LIBUSB_ERROR_PIPE&lt;br/&gt;[-] failed to send file &amp;#39;x-load.bin&amp;#39; (size 26956)&lt;br/&gt;[-] failed to transfer the first stage file &amp;#39;x-load.bin&amp;#39;&lt;/pre&gt;&lt;p&gt;Darn. The utility recognized the BeagleBoard being plugged in, but libusb errored out with a pipe error. Long story short, I messed around with a few other computers, and I found that a few of my older computers, old enough that they didn’t have USB 3.0 ports on their motherboards, actually worked perfectly fine with omap_loader. I couldn’t get it to work properly with most of my modern machines though, AMD or Intel.&lt;/p&gt;&lt;p&gt;I thought this would be a great application for a &lt;a href=&quot;https://www.downtowndougbrown.com/2023/08/building-alex-taradovs-open-source-usb-sniffer/&quot;&gt;USB sniffer&lt;/a&gt;, so I decided to record some traces of success versus failure.&lt;/p&gt;&lt;figure&gt;&lt;a href=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/11/img_5086.jpg&quot;&gt;&lt;img src=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/11/img_5086-300x225.jpg&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/grant-h/omap_loader/issues/1#issuecomment-2138675431&quot;&gt;Here’s a link to my in-depth investigation comparing success versus failure&lt;/a&gt; on the GitHub issue about this problem. Yep, it turns out I wasn’t the only one running into this exact same issue. Grant himself was seeing similar problems, and had come to a similar conclusion that it seemed to be machine-dependent. Other people had mentioned that adding delays at certain points in the code seemed to help. I was intrigued, so I tried to get to the bottom of it.&lt;/p&gt;&lt;p&gt;Here’s what the USB boot process is supposed to look like, according to TI’s &lt;a href=&quot;https://www.ti.com/lit/ug/spruf98y/spruf98y.pdf&quot;&gt;OMAP35x Technical Reference Manual&lt;/a&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The OMAP device enumerates as a USB device.&lt;/li&gt;&lt;li&gt;Within 300 ms, the host needs to read an “ASIC ID” structure from the OMAP or else it will disconnect from USB.&lt;/li&gt;&lt;li&gt;Then, the host sends a 4-byte command: 0xF0030002 means to continue booting through USB.&lt;/li&gt;&lt;li&gt;Next, the host sends the 4-byte length of bootloader data it wants to transfer.&lt;/li&gt;&lt;li&gt;Finally, the host sends the bootloader (X-Loader in this case), which will be loaded into internal SRAM starting at 0x40200000.&lt;/li&gt;&lt;li&gt;After the OMAP device receives all of the data, it runs the received bootloader by jumping to 0x40200000.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Again, this process worked perfectly fine on my older computers that don’t support USB 3.0, but on my newer computers with USB 3.0, it was hanging up. I did notice that the newer computers were trying to fit a lot more data into a single USB frame. For example, the start of my older computer’s communication with the OMAP looked like this:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Frame 1&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Host sends boot command&lt;/li&gt;&lt;li&gt;OMAP confirms it&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Frame 2&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Host sends length&lt;/li&gt;&lt;li&gt;OMAP confirms it&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Frame 3&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Host sends first packet of bootloader data&lt;/li&gt;&lt;li&gt;OMAP confirms it&lt;/li&gt;&lt;li&gt;Host sends second packet of bootloader data&lt;/li&gt;&lt;li&gt;OMAP says it’s not ready&lt;/li&gt;&lt;li&gt;Host pings&lt;/li&gt;&lt;li&gt;OMAP says it’s ready now&lt;/li&gt;&lt;li&gt;Host sends second packet of bootloader data again&lt;/li&gt;&lt;li&gt;OMAP confirms it&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And then from that point on, it was just a process of sending the rest of the data like that. About 5 data packets would fit into each frame. My newer computer’s traffic looked like this instead:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Frame 1&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Host sends boot command&lt;/li&gt;&lt;li&gt;OMAP confirms it&lt;/li&gt;&lt;li&gt;Host sends length&lt;/li&gt;&lt;li&gt;OMAP says it’s not ready&lt;/li&gt;&lt;li&gt;Host pings a few times until the OMAP is ready&lt;/li&gt;&lt;li&gt;Host sends length again&lt;/li&gt;&lt;li&gt;OMAP confirms it&lt;/li&gt;&lt;li&gt;Host sends first packet of bootloader data&lt;/li&gt;&lt;li&gt;OMAP confirms it&lt;/li&gt;&lt;li&gt;Host sends second packet of bootloader data&lt;/li&gt;&lt;li&gt;OMAP says it’s not ready&lt;/li&gt;&lt;li&gt;Host pings several times, OMAP never says it’s ready during the rest of this frame&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Frame 2&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Host pings&lt;/li&gt;&lt;li&gt;OMAP responds with a STALL packet&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The newer xHCI host controller was trying its best to efficiently squeeze a lot of packets into the first frame. Even though this is a pattern that should be perfectly valid to follow when communicating with a USB device, the OMAP bootloader was clearly not happy about something, and eventually sent a STALL packet before omap_loader made much progress. Various USB packet traces on different modern computers revealed similar issues. It would either STALL after the second packet, or just NAK forever and never accept additional incoming data.&lt;/p&gt;&lt;p&gt;Inspired by other comments about adding delays, I tried to work around this by inserting an artificial 1 ms delay before every &lt;code&gt;libusb_bulk_transfer()&lt;/code&gt; call. This would force modern machines to slow down a little bit. As soon as I added those delays, all of my new computers had no trouble uploading X-Loader to the OMAP. So yeah, I think the OMAP just doesn’t like receiving USB data too quickly.&lt;/p&gt;&lt;p&gt;That wasn’t the end of this little project, though. The 1 ms delay fixed the issue with getting X-Loader to run, but the newer computers also ran into problems while trying to upload U-Boot through X-Loader!&lt;/p&gt;&lt;pre&gt;[-] device timed out while transfering in 512 bytes (got 0)&lt;br/&gt;[-] device timed out while transfering in 512 bytes (got 0)&lt;br/&gt;[-] device timed out while transfering in 512 bytes (got 0)&lt;br/&gt;[-] failed to read command from X-Loader&lt;br/&gt;[-] failed to transfer the additional files in to memory&lt;/pre&gt;&lt;p&gt;Rats. I went back to the USB sniffer for more research.&lt;/p&gt;&lt;p&gt;This time, it was a different problem. I found the point where the host would try to read the initial request from X-Loader: &lt;code&gt;USBf&lt;/code&gt;. On my older computer, this worked fine; it received a 13-byte string from X-Loader: &lt;code&gt;USBffile req&lt;/code&gt; followed by a null terminator. It was happy with this, and omap_usbload kept going on with the rest of the file load process and everything succeeded.&lt;/p&gt;&lt;p&gt;On the newer computer, some shenanigans were going on. Let’s look at the USB trace in depth:&lt;/p&gt;&lt;figure&gt;&lt;a href=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/11/image-1.png&quot;&gt;&lt;img src=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/11/image-1.png&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p&gt;The 335-byte packet contains 332 actual bytes of data (the packet ID and CRC account for the other 3 bytes), and is the final chunk of X-Loader. It was successfully received and confirmed by the OMAP with an ACK. At that point, we can assume that the OMAP has begun jumping into X-Loader to start it up.&lt;/p&gt;&lt;p&gt;A millisecond later (due to the delay I added), we start trying to read from X-Loader. It’s clearly too soon, though; I don’t think X-Loader has finished starting up yet. There’s nothing ready to read. So these IN/NAK packets continue on for about 5 more milliseconds, which is totally normal. But then, something finally happens: the OMAP stops responding to our IN packets. My computer’s USB host controller tries three times (see the three IN packets in a row below?) and then it gives up. I’m guessing this is around the same time that X-Loader is doing its own hardware initialization, so maybe the OMAP’s USB controller is temporarily disabled.&lt;/p&gt;&lt;figure&gt;&lt;a href=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/11/image-2.png&quot;&gt;&lt;img src=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/11/image-2.png&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p&gt;This all makes sense so far. We tried to read too quickly before X-Loader finished starting up, so when it did finally load, there was a brief moment where it would not respond to IN packets. The host controller didn’t like this and stopped trying, so all we saw from that point on was SOF packets because we weren’t attempting any more USB reads. Some of my other computers gave up after 15 unanswered IN packets instead of 3. I’m not sure if that’s a difference in the host controller or what, but it’s the same root problem.&lt;/p&gt;&lt;p&gt;You may be wondering: why didn’t the older computers run into this same issue? They were also trying to talk with X-Loader too early, so why wouldn’t they run into this same roadblock? The answer is that their older host controllers are more tolerant of the missing NAKs. I recorded a similar trace with one of my older computers that works fine without any patches to omap_loader. It also immediately began sending IN packets trying to read from X-Loader way too soon. Just like the problematic computers, it experienced a brief period where the OMAP stopped responding to INs with NAKs. The difference is that it didn’t abandon hope so quickly. There were 33 unanswered IN packets. After that, the OMAP continued responding with NAKs again and everything was fine from that point on. 17 ms after we had originally finished sending out X-Loader, the OMAP finally responded with an actual data packet. So that’s the total time it took for X-Loader to launch.&lt;/p&gt;&lt;p&gt;Back to the newer computers that weren’t playing nicely. I was still confused. Even though this is a problem with newer host controllers, omap_loader has a retry mechanism! If it fails to read X-Loader’s initial data, it will try again 2 seconds later. You’d think it would succeed at that point. Let’s see what happens:&lt;/p&gt;&lt;figure&gt;&lt;a href=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/11/image-3.png&quot;&gt;&lt;img src=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/11/image-3.png&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p&gt;Ah, interesting. The retry is actually 3 seconds later. I’m guessing the first failed read attempt had a 1-second timeout, so then with a 2-second retry timer, that adds up to 3 seconds total.&lt;/p&gt;&lt;p&gt;Anyway, something funky happens here. The USB host &lt;strong&gt;finally &lt;/strong&gt;reads the 13-byte string from X-Loader as a DATA1 packet (again, it shows up as 16 bytes because of the packet ID and CRC). The host then acknowledges reception with an ACK, but for some bizarre reason, it immediately continues attempting to read more data! I won’t show the whole trace, but the host keeps polling with IN packets for a whole second. And of course, they’re all NAKed. X-Loader knows it successfully sent data to us, so it has shifted over to waiting for the host to send an OUT packet instead. It’s like the host controller gets confused and expects X-Loader to send more data. The kernel never reports those 13 bytes back to libusb, even after the 1-second transfer timeout expires.&lt;/p&gt;&lt;p&gt;I don’t consider myself to be a USB expert, so maybe I’m misunderstanding something. This behavior just seems wrong, though. When my computer finally reads 13 bytes (proven by the sniffer trace shown above), why isn’t this data reported back to libusb? I would have expected the reception of a short DATA0/1 packet to cause the host controller to stop reading and return the data back immediately. Is this some kind of strange bug in the Linux kernel or the host controller hardware or something? I don’t know for sure. I find this behavior to be very odd, and I can’t explain it. My off-the-cuff guess is that the initial failure to respond to the three IN packets results in something getting out of sync in the host controller, but I really don’t know for sure. In my opinion, the retry &lt;em&gt;should&lt;/em&gt; have worked, but clearly, something got confused. Not sure what. I don’t think it’s libusb’s fault, though.&lt;/p&gt;&lt;p&gt;I hate adding arbitrary delays in order to fix things, but a 20-millisecond delay between uploading X-Loader and attempting to read from it fixes this final issue. It ensures that the OMAP has been given ample time to launch X-Loader before we try reading from it, preventing the host controller from encountering the weird situation with unanswered IN packets.&lt;/p&gt;&lt;p&gt;After all of this tinkering and patching that I did to get things to play nicely on newer machines, here is a successful run of omap_loader:&lt;/p&gt;&lt;pre&gt;[+] successfully opened 0451:d009 (Texas Instruments OMAP3430)&lt;br/&gt;[+] got ASIC ID - Num Subblocks [05], Device ID Info [01050134300757], Reserved [13020100], Ident Data [1215010000000000000000000000000000000000000000], Reserved [1415010000000000000000000000000000000000000000], CRC (4 bytes) [150901f7488f2800000000]&lt;br/&gt;[+] uploading &amp;#39;u-boot.bin&amp;#39; (size 777760) to 0x80800000&lt;br/&gt;[+] jumping to address 0x80800000&lt;br/&gt;[+] successfully transfered 2 files&lt;/pre&gt;&lt;p&gt;Meanwhile, the following output pops up on the BeagleBoard’s UART:&lt;/p&gt;&lt;pre&gt;Texas Instruments X-Loader 1.5.1 (Nov 15 2011 - 09:36:31)&lt;br/&gt;Beagle Rev C4&lt;br/&gt;Trying load from USB&lt;br/&gt;USBLOAD_CMD_FILE total = 12 addr = 0x73425355 val = 0xbde20 val = 0x80800000&lt;br/&gt;got file addr = 0x808bde20&lt;br/&gt;USBLOAD_CMD_JUMP total = 8 addr = 0x6a425355 val = 0x80800000&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;U-Boot 2023.10 (May 25 2024 - 22:05:27 -0700)&lt;br/&gt;&lt;br/&gt;OMAP3530-GP ES3.1, CPU-OPP2, L3-165MHz, Max CPU Clock 720 MHz&lt;br/&gt;Model: TI OMAP3 BeagleBoard&lt;br/&gt;OMAP3 Beagle board + LPDDR/NAND&lt;br/&gt;I2C:   ready&lt;br/&gt;DRAM:  256 MiB&lt;br/&gt;Core:  44 devices, 18 uclasses, devicetree: separate&lt;br/&gt;NAND:  256 MiB&lt;br/&gt;MMC:   OMAP SD/MMC: 0&lt;br/&gt;Loading Environment from NAND... *** Warning - bad CRC, using default environment&lt;br/&gt;&lt;br/&gt;Beagle Rev C4&lt;br/&gt;Timed out in wait_for_event: status=0000&lt;br/&gt;Check if pads/pull-ups of bus are properly configured&lt;br/&gt;No EEPROM on expansion board&lt;br/&gt;OMAP die ID: 79b8000400000000040398da1401c009&lt;br/&gt;Net:   No ethernet found.&lt;br/&gt;Hit any key to stop autoboot:  2&lt;/pre&gt;&lt;p&gt;I believe the “Timed out in wait_for_event” error is harmless. Anyway, success! It loads U-Boot! You can imagine that I could have easily transmitted a Linux kernel and initramfs as well, and fully booted this thing over USB. Once U-Boot is running, I can do whatever I want.&lt;/p&gt;&lt;p&gt;With these simple delay tweaks, omap_loader works great on all modern computers I’ve thrown at it, including Raspberry Pis. The only “gotcha” I’ve encountered is that some slower computers (my i3-7100U laptop and a Raspberry Pi Zero) don’t forward the USB hotplug event through udev quickly enough before the BeagleBoard decides it’s not being asked to boot over USB. omap_loader never gets past scanning for a device, even though the &lt;code&gt;dmesg&lt;/code&gt; log clearly shows that it was detected:&lt;/p&gt;&lt;pre&gt;[4076310.258842] usb 11-5: new high-speed USB device number 65 using xhci_hcd&lt;br/&gt;[4076310.407944] usb 11-5: unable to get BOS descriptor or descriptor too short&lt;br/&gt;[4076310.410041] usb 11-5: New USB device found, idVendor=0451, idProduct=d009, bcdDevice= 0.00&lt;br/&gt;[4076310.410046] usb 11-5: New USB device strings: Mfr=33, Product=37, SerialNumber=0&lt;br/&gt;[4076310.410051] usb 11-5: Product: OMAP3430&lt;br/&gt;[4076310.410054] usb 11-5: Manufacturer: Texas Instruments&lt;br/&gt;[4076310.710703] usb 11-5: USB disconnect, device number 65&lt;/pre&gt;&lt;p&gt;As you can see, it’s a very short timeframe; just like TI’s manual says, it only stays connected for about 300 ms if it doesn’t hear from the host. I guess that’s not enough time for udev on some computers. The only solution I found for this issue on my slower machines was to compile a custom version of libusb with udev disabled, which forces it to directly use netlink for hotplug detection instead.&lt;/p&gt;&lt;p&gt;My patch also limits libusb transfers to 512 bytes at a time. I don’t think this change is critical, though. It fixed an issue I ran into where my bus was really loaded and libusb reported a memory error. I don’t think it actually helps anything in most cases as long as people aren’t performing crazy big USB transfers at the same time.&lt;/p&gt;&lt;p&gt;In summary:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Trying to write USB data to the OMAP’s on-chip bootloader too quickly seems to hit some edge cases that it doesn’t handle correctly. A 1 ms delay fixes this.&lt;/li&gt;&lt;li&gt;Trying to read from X-Loader before it’s ready to go irritates newer USB host controllers when they send out several IN packets without receiving any response (not even a NAK). A 20 ms delay fixes this.
&lt;ul&gt;&lt;li&gt;Even retries afterward fail; the host controller gets out of sync due to the unanswered IN packets or something like that.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;On some slower computers, udev doesn’t give you enough time to respond to the OMAP’s 300 ms timeout, so libusb never detects the hotplug. This can be solved with a custom libusb that uses netlink instead of udev.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I &lt;a href=&quot;https://github.com/grant-h/omap_loader/pull/7&quot;&gt;opened up a PR to submit these fixes (except for the udev thing) upstream to omap_loader in 2024&lt;/a&gt;. Why am I writing about this now? Well, remember when I mentioned Nest earlier? &lt;a href=&quot;https://support.google.com/googlenest/answer/16233096?hl=en&quot;&gt;Google ended support for older Nest thermostats last month&lt;/a&gt;, which &lt;a href=&quot;https://github.com/grant-h/omap_loader/pull/7#issuecomment-3479819869&quot;&gt;renewed some interest in merging my reliability improvements&lt;/a&gt; so that people can flash custom firmware to their Nest thermostats. Those old Nest devices also use OMAP processors.&lt;/p&gt;&lt;p&gt;What it boils down to is: all this tinkering I did last year with pointlessly booting old BeagleBoards over USB accidentally ended up being useful. It helped out some &lt;a href=&quot;https://github.com/codykociemba/NoLongerEvil-Thermostat&quot;&gt;Nest thermostat revival projects&lt;/a&gt; that have been &lt;a href=&quot;https://github.com/cuckoo-nest/cuckoo_loader&quot;&gt;popping up in the last month&lt;/a&gt;. So I thought now might be a fun time to talk about my tiny involvement with that. Yay! It’s always fun when a random side project unexpectedly helps other people.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Modifying an HDMI dummy plug’s EDID using a Raspberry Pi</title>
<link>https://www.downtowndougbrown.com/2025/06/modifying-an-hdmi-dummy-plugs-edid-using-a-raspberry-pi/</link>
<guid isPermaLink="false">g9JA3L3M7-sAwgYI-kvXDDcucRTolC3YK1dF1Q==</guid>
<pubDate>Mon, 19 Oct 2026 19:49:28 +0000</pubDate>
<description>I recently found myself needing to change the monitor that a cheap HDMI “dummy plug” pretended to be. It was a random one I had bought on Amazon several years ago that acted as a 4K monitor, and I needed it to be something simpler that didn’t support a 4K resolution. The story behind why […]</description>
<content:encoded>&lt;p&gt;I recently found myself needing to change the monitor that a cheap HDMI “dummy plug” pretended to be. It was a random one I had bought on Amazon several years ago that acted as a 4K monitor, and I needed it to be something simpler that didn’t support a 4K resolution. The story behind why is a long one that I’m still figuring out and might eventually become a separate blog post in the future.&lt;/p&gt;&lt;p&gt;If you’re not familiar with dummy plugs, here’s a quick primer: they are tiny dongles you can plug into an HDMI, DVI, etc. port that don’t actually do anything with the video signal. They simply have the minimum circuitry needed for a video source device, like a computer, to think that a monitor is hooked up. In general this entails a pull-up resistor on pin 19 (HPD) to +5V, as well as a little I&lt;sup&gt;2&lt;/sup&gt;C EEPROM chip containing the &lt;a href=&quot;https://en.wikipedia.org/wiki/Extended_Display_Identification_Data&quot;&gt;Extended Display Identification Data (EDID)&lt;/a&gt;. This is useful for headless machines to force the OS to think a monitor is attached.&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/06/img_4533-e1748812707110-265x300.jpg&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/figure&gt;&lt;p&gt;The EDID contains all the info about the monitor: the manufacturer, manufacture date, supported resolutions, audio channels, color space, and stuff like that. My goal was to replace the dummy plug’s EDID with an identical copy of an EDID from one of my many 1080p HDMI capture devices. Then, the computer I plugged it into would think the capture device was plugged in instead of a 4K monitor, and everything would be hunky dory.&lt;/p&gt;&lt;p&gt;I wasn’t sure if the dummy plug’s EDID EEPROM would be programmable, but I decided to give it a shot. There was a chance that it would have its write-protect pin configured to disable programming, but I figured it wouldn’t hurt to try.&lt;/p&gt;&lt;p&gt;Conveniently, I found that my Raspberry Pi Zero has an I&lt;sup&gt;2&lt;/sup&gt;C controller wired to the correct pins on its HDMI port. This makes sense — the Pi would need to be able to read the EDID of an attached monitor. &lt;a href=&quot;https://forums.raspberrypi.com/viewtopic.php?t=329239#p1970760&quot;&gt;This post on the Raspberry Pi Forums&lt;/a&gt; and &lt;a href=&quot;https://github.com/raspberrypi/linux/issues/6207#issuecomment-2149784322&quot;&gt;this GitHub comment&lt;/a&gt; were helpful for explaining which I&lt;sup&gt;2&lt;/sup&gt;C controller(s) to look at in software on various Pi devices:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Pi 0-3:
&lt;ul&gt;&lt;li&gt;&lt;code&gt;/dev/i2c-2&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Pi 4:
&lt;ul&gt;&lt;li&gt;&lt;code&gt;/dev/i2c-20&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;/dev/i2c-21&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Pi 5:
&lt;ul&gt;&lt;li&gt;&lt;code&gt;/dev/i2c-11&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;/dev/i2c-12&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Before I go further,&lt;strong&gt; I want to make it clear that it may be possible to screw up a monitor if you follow these instructions while a real monitor is plugged in and it doesn’t have its EDID protected&lt;/strong&gt;. Be careful to only run these commands if you have something attached to the HDMI port that you’re not afraid of bricking, such as a dummy plug! &lt;strong&gt;Also, make sure you are confident you’re on the correct I&lt;sup&gt;2&lt;/sup&gt;C bus! Always read the EDID and parse it first to make sure it actually contains an EDID before you attempt a write.&lt;/strong&gt; If you attempt these commands on a PC, it’s possible that you could accidentally flash hardware that isn’t an EDID, like a RAM module’s SPD EEPROM.&lt;/p&gt;&lt;p&gt;Starting from a fresh Raspberry Pi OS Lite install, I performed the following modifications:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;sudo raspi-config&lt;/code&gt;&lt;ul&gt;&lt;li&gt;Under Interface Options, enable I&lt;sup&gt;2&lt;/sup&gt;C &lt;a href=&quot;https://www.raspberrypi.com/documentation/computers/configuration.html&quot;&gt;as described in the Raspberry Pi documentation&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;sudo apt install i2c-tools&lt;/code&gt;&lt;ul&gt;&lt;li&gt;Unfortunately, this requires network access, which creates a bit of a problem if you are on a Pi Zero. You might need a USB-Ethernet adapter to make this happen. Another slightly crazy option is to temporarily take the SD card out of your Pi, put it into your desktop PC running Debian/Ubuntu, run &lt;code&gt;sudo apt install binfmt-support qemu-user-static&lt;/code&gt; on your PC, &lt;a href=&quot;https://wiki.debian.org/RaspberryPi/qemu-user-static&quot;&gt;chroot into the SD card’s rootfs&lt;/a&gt; (options 1.3 and 2.1 worked for me), and run the apt install command inside of the chroot.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And with those prerequisites out of the way, I was ready to start tinkering with the dummy plug’s EEPROM. Note that I also needed an HDMI-to-Mini-HDMI adapter.&lt;/p&gt;&lt;figure&gt;&lt;a href=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/06/img_4600.jpg&quot;&gt;&lt;img src=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/06/img_4600-224x300.jpg&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;&lt;p&gt;Since I was using a Raspberry Pi Zero, I chose bus 2. You could change the number below to something else on a different model, as listed above (e.g. 20 or 21 on a Pi 4).&lt;/p&gt;&lt;div&gt;&lt;pre&gt;
edid_i2c=2
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I ran i2cdetect to see if the EDID EEPROM was recognized:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;
i2cdetect -y $edid_i2c
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This came back with the following result, showing that an I&lt;sup&gt;2&lt;/sup&gt;C device was detected at address 0x50, which is exactly the address used for EDID:&lt;/p&gt;&lt;pre&gt;     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br/&gt;00:                         -- -- -- -- -- -- -- -- &lt;br/&gt;10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br/&gt;20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br/&gt;30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br/&gt;40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br/&gt;50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- &lt;br/&gt;60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &lt;br/&gt;70: -- -- -- -- -- -- -- --                         &lt;/pre&gt;&lt;p&gt;Interestingly, this particular dummy plug also responds with addresses 0x51 through 0x57 present. These other addresses seem to contain copies of the same EDID. Not all dummy plugs show up like this — another one I have only detects 0x50. Anyway, next, I dumped the original EDID from it:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;
get-edid -b $edid_i2c &amp;gt; edid-orig.bin
&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;2&lt;br/&gt;This is read-edid version 3.0.2. Prepare for some fun.&lt;br/&gt;Attempting to use i2c interface&lt;br/&gt;Only trying 2 as per your request.&lt;br/&gt;256-byte EDID successfully retrieved from i2c bus 2&lt;br/&gt;Looks like i2c was successful. Have a good day.&lt;/pre&gt;&lt;p&gt;Nice! To make sure I got a good dump, I tried it twice and compared the results to make sure they were identical. Then I printed it in a format suitable for copying/pasting to something like &lt;a href=&quot;https://www.edidreader.com/&quot;&gt;edidreader.com&lt;/a&gt;:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;
od -v -An -txC edid-orig.bin
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This spit out a nice little hex dump of the EDID that was stored on it:&lt;/p&gt;&lt;pre&gt; 00 ff ff ff ff ff ff 00 1a ae 31 9d 00 00 00 00&lt;br/&gt; 01 19 01 04 85 58 31 78 3e a4 fd ab 4e 42 a6 26&lt;br/&gt; 0d 47 4a 2f cf 00 e1 c0 d1 c0 b3 00 a9 40 95 00&lt;br/&gt; 81 80 81 40 81 c0 02 3a 80 18 71 38 2d 40 58 2c&lt;br/&gt; 45 00 e0 0e 11 00 00 1e 4d d0 00 a0 f0 70 3e 80&lt;br/&gt; 30 20 35 00 c0 1c 32 00 00 1a 00 00 00 fc 00 48&lt;br/&gt; 44 4d 49 20 4d 6f 6e 69 74 6f 72 0a 00 00 00 10&lt;br/&gt; 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 4a&lt;br/&gt; 02 03 46 70 52 e1 60 5f 5d e6 65 64 62 10 04 03&lt;br/&gt; 1f 20 21 22 13 12 01 26 09 7f 07 11 7f 50 83 01&lt;br/&gt; 00 00 6e b9 14 00 40 00 18 78 20 00 60 01 02 03&lt;br/&gt; 04 67 d8 5d c4 01 78 00 07 6c 03 0c 00 20 00 f0&lt;br/&gt; 78 20 00 40 01 04 08 e8 00 30 f2 70 5a 80 b0 58&lt;br/&gt; 8a 10 c0 1c 32 00 00 1e b7 e6 ff 18 f1 70 5a 80&lt;br/&gt; 58 2c 8a 00 ff 1c 32 00 00 1e 56 5e 00 a0 a0 a0&lt;br/&gt; 29 50 30 20 35 00 80 68 21 00 00 1a 00 00 00 e9&lt;/pre&gt;&lt;p&gt;Pasting it into the site linked above, I could see it was a valid EDID:&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://www.downtowndougbrown.com/wp-content/uploads/2025/06/image.png&quot; alt=&quot;&quot; title=&quot;&quot;/&gt;&lt;/figure&gt;&lt;p&gt;Now that I was confident I had the dummy plug’s original EDID backed up, I unplugged it from the Pi’s HDMI port and plugged my capture device in instead, and repeated the exact same procedure to dump its EDID:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;
get-edid -b $edid_i2c &amp;gt; edid-capture-card.bin
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I confirmed it was also a valid EDID. Finally, I unplugged the capture device and connected the dummy plug again, and wrote the capture device’s EDID to it with this fun little code snippet. &lt;a href=&quot;https://github.com/galkinvv/edid-checked-writer&quot;&gt;There are tools out there&lt;/a&gt; that can probably do this more efficiently, but hey, this works and doesn’t require any special packages other than the standard userspace Linux I&lt;sup&gt;2&lt;/sup&gt;C tools and bash or dash!&lt;/p&gt;&lt;div&gt;&lt;pre&gt;
edidbytes=($(od -v -An -txC edid-capture-card.bin))
for i in &amp;quot;${!edidbytes[@]}&amp;quot;; do
	byte=0x${edidbytes[$i]}
	echo Writing byte $i: $byte...
	i2cset -f -y $edid_i2c 0x50 $i $byte
done
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As a quick explanation, this reads the entire EDID (probably 256 bytes in size) from the dump file created earlier, and formats it into an array of two-digit hex strings using od. Each entry in the array represents one byte in the EDID. Then it loops over each byte, prepending a “0x” prefix and writing it out to the EEPROM using i2cset.&lt;/p&gt;&lt;p&gt;After running this code, I re-read the EDID from the dummy plug and checked to see if it matched the file I started from:&lt;/p&gt;&lt;div&gt;&lt;pre&gt;
get-edid -b $edid_i2c &amp;gt; edid-test.bin
diff edid-test.bin edid-capture-card.bin
&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The diff command produced no output at all, which indicated that the new dump was identical. The dummy plug’s EEPROM had successfully been reprogrammed with the EDID from my capture device!&lt;/p&gt;&lt;p&gt;Of course, at this point I anxiously plugged it into my test computer, powered the computer up, and noticed that everything was great and it acted as though my HDMI capture device was plugged in instead of a 4K monitor. Success!&lt;/p&gt;&lt;p&gt;I thought I’d share this procedure in case it’s useful for someone else in the future. You could probably also use this solution to go in the opposite direction — upgrading an old 1080p dummy plug to add 4K support. &lt;strong&gt;Again, be careful with these commands!&lt;/strong&gt; I wouldn’t recommend tinkering with I&lt;sup&gt;2&lt;/sup&gt;C writes on an actual PC. Use a Raspberry Pi so you don’t accidentally brick your desktop PC.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>Supporting modern https on Windows XP</title>
<link>https://kianbradley.com/2024/01/14/tls-on-xp.html</link>
<guid isPermaLink="false">_iXEWWNbJkSvuXeCBlVJqcxtpR8sSXruYYUBZA==</guid>
<pubDate>Mon, 19 Oct 2026 11:34:19 +0000</pubDate>
<description>I managed to get modern SSL/TLS connections working under Windows XP, by running a lightweight Linux VM which strips the TLS headers and re-applies a self-signed certificate:</description>
<content:encoded>&lt;p&gt;I managed to get modern SSL/TLS connections working under Windows XP, by running a lightweight Linux VM which strips the TLS headers and re-applies a self-signed certificate:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://kianbradley.com/assets/internet.PNG&quot; alt=&quot;Screenshot of a windows xp machine with firefox. In the background is an Alpine Linux VM running squid proxy software&quot; title=&quot;&quot;/&gt;&lt;/p&gt;&lt;p&gt;Much of this guide is adapted from the &lt;a href=&quot;https://bitbucket.org/ValdikSS/oldssl-proxy/raw/1179e76bb025cc4860fd9da1f88eb5b33284f985/Dockerfile&quot;&gt;dockerfile&lt;/a&gt; from &lt;a href=&quot;https://bitbucket.org/ValdikSS/oldssl-proxy&quot;&gt;bitbucket.org/ValdikSS/oldssl-proxy&lt;/a&gt;. Thanks &lt;a href=&quot;http://valdikss.org.ru&quot;&gt;ValdikSS&lt;/a&gt;!&lt;/p&gt;&lt;p&gt;I recommend using Firefox on Windows XP, it seems to have the best support for the modern web. I’m using Firefox 47.0.2. Download old versions of firefox at &lt;a href=&quot;http://ftp.mozilla.org/pub/firefox/releases/&quot;&gt;ftp.mozilla.org/pub/firefox/releases/&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Install the virtual machine&lt;/h2&gt;&lt;p&gt;Install a virtual machine software, such as VMware Workstation v9.0.1 Incl. Keymaker - EMBRACE [deepstatus]. If you want to find a torrent program that works on XP, I recommend &lt;a href=&quot;http://download.deluge-torrent.org/archive/0.9/deluge-0.9.09-32.msi&quot;&gt;Deluge 0.9.09&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For our VM, we’ll use Alpine Linux, as it’s very lightweight and still supports 32-bit CPUs. Download &lt;a href=&quot;http://dl-cdn.alpinelinux.org/alpine/v3.13/releases/x86/alpine-standard-3.13.2-x86.iso&quot;&gt;alpine-standard-3.13.2-x86.iso&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;In VMware, create a new virtual machine. You can allocate 256mb RAM and a 2GB disk, maybe less.&lt;/p&gt;&lt;p&gt;Configure the machine to use your iso file and boot. &lt;a href=&quot;https://wiki.alpinelinux.org/wiki/Installation&quot;&gt;Install Alpine&lt;/a&gt; by running &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;setup-alpine&lt;/code&gt;. Use the default options, but pick &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sys&lt;/code&gt; as the disk partitioning option.&lt;/p&gt;&lt;h2&gt;Install and configure squid proxy&lt;/h2&gt;&lt;p&gt;We will use &lt;a href=&quot;http://www.squid-cache.org/&quot;&gt;Squid&lt;/a&gt; to proxy the web connection. Install it:&lt;/p&gt;&lt;figure&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;apk add alpine-sdk squid openssl darkhttpd
/usr/lib/squid/security_file_certgen -c-s /var/cache/squid/ssl_db -M 4MB
chown squid:squid -R /var/cache/squid/ssl_db
mkdir /etc/squid/ssl_cert&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;p&gt;Edit the squid configuration. Run these sed commands, or use vi if you’re comfortable with it.&lt;/p&gt;&lt;figure&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /etc/squid/

# Comment out some linessed-i&amp;#39;s/http_port 3128/#http_port 3128/&amp;#39; squid.conf
sed-i&amp;#39;s/http_access deny !Safe_ports/#http_access deny !Safe_ports/&amp;#39; squid.conf
sed-i&amp;#39;s/http_access deny CONNECT !SSL_ports/#http_access deny CONNECT !SSL_ports/&amp;#39; squid.conf

# Insert new configuration at the endecho&amp;#39;http_port 3128 ssl-bump \&amp;#39;&amp;gt;&amp;gt; squid.conf
echo&amp;#39;    cert=/etc/squid/ssl_cert/myCA.pem \&amp;#39;&amp;gt;&amp;gt; squid.conf
echo&amp;#39;    cipher=HIGH:MEDIUM:!LOW:!aNULL:!eNULL:!MD5:!EXP:!PSK:!SRP:!DSS \&amp;#39;&amp;gt;&amp;gt; squid.conf
echo&amp;#39;    options=NO_TICKET,ALL \&amp;#39;&amp;gt;&amp;gt; squid.conf
echo&amp;#39;    generate-host-certificates=on dynamic_cert_mem_cache_size=4MB&amp;#39;&amp;gt;&amp;gt; squid.conf
echo&amp;#39;&amp;#39;&amp;gt;&amp;gt; squid.conf
echo&amp;#39;visible_hostname squid-oldssl-proxy&amp;#39;&amp;gt;&amp;gt; squid.conf
echo&amp;#39;ssl_bump bump all&amp;#39;&amp;gt;&amp;gt; squid.conf
echo&amp;#39;tcp_outgoing_address 0.0.0.0&amp;#39;&amp;gt;&amp;gt; squid.conf
echo&amp;#39;sslproxy_cert_sign_hash sha1&amp;#39;&amp;gt;&amp;gt; squid.conf&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;p&gt;We need to generate an old, outdated CAcert, which is no longer supported by OpenSSL. Let’s recompile it with deprecated security enabled. This may take 1-2 hours on older hardware.&lt;/p&gt;&lt;figure&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;adduser user -D-G abuild

su user bash -c&amp;#39;cd &amp;amp;&amp;amp; git clone https://github.com/alpinelinux/aports.git --depth 1&amp;#39;
su user bash -c&amp;#39;abuild-keygen -a &amp;lt; /dev/null&amp;#39;cd /home/user/aports/main/openssl/

sed-i&amp;#39;s/no-ssl3/enable-ssl3 enable-ssl3-method/&amp;#39; APKBUILD
sed-i&amp;#39;s/no-weak-ssl-ciphers/enable-weak-ssl-ciphers/&amp;#39; APKBUILD

su user bash -c&amp;#39;cd /home/user/aports/main/openssl/ &amp;amp;&amp;amp; abuild -r&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;p&gt;Let’s generate the certificates. 1024 bit RSA keys and SHA-1 signatures are no longer considered secure, but they’re fine for communication between XP and the Linux VM.&lt;/p&gt;&lt;figure&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /etc/squid/ssl_cert
mkdir public
openssl req -new-newkey rsa:1024 -sha1-days 1825 -nodes-x509-extensions v3_ca -subj&amp;#39;/C=AU/ST=Some-State/O=OldSSL Proxy&amp;#39;-keyout myCA.pem -out myCA.pem -batch
openssl x509 -in myCA.pem -outform DER -out public/OldSSL.der
openssl x509 -in myCA.pem -outform PEM -out public/OldSSL.crt

chown squid:squid -R /etc/squid/ssl_cert/&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;h2&gt;Download self-signed certificates&lt;/h2&gt;&lt;figure&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Get your local IP address. Mine was 192.168.88.131
ip addr
# Run an HTTP server to serve the certificates
darkhttpd /etc/squid/ssl_cert/public/ --port 3180 --daemon&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;p&gt;In any browser, navigate to your VM’s IP address at port 3180 and download the certificates. For me, this was &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://192.168.88.131:3180&lt;/code&gt;. (Use the output of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ip addr&lt;/code&gt; to figure out your VM’s address.)&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://kianbradley.com/assets/firefox-cert.PNG&quot; alt=&quot;Firefox browser navigated to 192.168.88.131:3180&quot; title=&quot;&quot;/&gt;&lt;/p&gt;&lt;h2&gt;Start the proxy service&lt;/h2&gt;&lt;p&gt;Finally, run squid proxy. If you see any errors, check the log in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/var/log/squid/cache.log&lt;/code&gt;&lt;/p&gt;&lt;figure&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;squid&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;p&gt;Enable the service to make squid start automatically with the VM:&lt;/p&gt;&lt;figure&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rc-update add squid default&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;h2&gt;Install the certificates&lt;/h2&gt;&lt;p&gt;Double-click on the .crt file and say yes to the prompts. This adds it to the built-in Windows certificate store.&lt;/p&gt;&lt;p&gt;In Firefox, you need to go to Tools &amp;gt; Options &amp;gt; Advanced &amp;gt; Certificates &amp;gt; View Certificates &amp;gt; Authorities &amp;gt; Import and import your .crt file.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://kianbradley.com/assets/firefox-cert-2.PNG&quot; alt=&quot;Firefox opened to certificate import pane&quot; title=&quot;&quot;/&gt;&lt;/p&gt;&lt;h2&gt;Set up the proxy&lt;/h2&gt;&lt;p&gt;In Internet Explorer, go to Tools &amp;gt; Internet Options &amp;gt; Connections &amp;gt; LAN Settings. Enter the proxy in the lower box, with the IP address of your VM and the port 3128.&lt;/p&gt;&lt;p&gt;In Firefox, go to Tools &amp;gt; Options &amp;gt; Advanced &amp;gt; Network &amp;gt; Connection Settings. Check “Manual proxy configuration” and enter the IP address of your VM and port 3128.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://kianbradley.com/assets/firefox-proxy.PNG&quot; alt=&quot;Firefox proxy settings&quot; title=&quot;&quot;/&gt;&lt;/p&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;p&gt;Everything should now be working! You can check the status of the squid service with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rc-service squid status&lt;/code&gt;. If you’re having issues, check the logs under &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/var/log/squid/&lt;/code&gt;.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>The Four Horsemen of the LLM Apocalypse</title>
<link>https://anarc.at/blog/2026-05-16-four-horsemen/</link>
<guid isPermaLink="false">QE-5nnWZpOKx3mcBnTTRYXRzw1EO3wDDvIHb5A==</guid>
<pubDate>Mon, 19 Oct 2026 04:47:52 +0000</pubDate>
<description>Also in this series: The people vs the AI overlords A more nuanced view of LLMs I have been battling Large Language Models (LLM1) for the past couple of weeks and have struggled to think about what it means and how to deal with its fallout. Because the fight has come from many fronts, I&#39;ve come to articulate this in terms of the Four Horsemen of the Apocalypse. Sound track: Metallica&#39;s The Four Horsemen, preferably downloaded from Napster around 2000, but now I guess you get it on YouTube. Wa...</description>
<content:encoded>&lt;blockquote&gt;&lt;p&gt;Also in this series:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://anarc.at/blog/2026-08-18-people-vs-ai-overlords/&quot;&gt;The people vs the AI overlords&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://anarc.at/blog/2026-08-25-llm-nuance/&quot;&gt;A more nuanced view of LLMs&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;p&gt;I have been battling Large Language Models (LLM&lt;sup&gt;&lt;a href=&quot;https://anarc.at/blog/#fn:1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;) for the past couple of weeks and have struggled to think about what it means and how to deal with its fallout.&lt;/p&gt;&lt;p&gt;Because the fight has come from many fronts, I&amp;#39;ve come to articulate this in terms of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Four_Horsemen_of_the_Apocalypse&quot;&gt;Four Horsemen of the Apocalypse&lt;/a&gt;.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Sound track: Metallica&amp;#39;s &lt;a href=&quot;https://www.metallica.com/songs/the-four-horsemen.html&quot;&gt;The Four Horsemen&lt;/a&gt;, preferably &lt;a href=&quot;https://en.wikipedia.org/wiki/Metallica_v._Napster,_Inc.&quot;&gt;downloaded from Napster around 2000&lt;/a&gt;, but now I guess you &lt;a href=&quot;https://www.youtube.com/watch?v=-zKOhVSERS8&quot;&gt;get it on YouTube&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;h1&gt;War: bot armies&lt;/h1&gt;&lt;p&gt;Let&amp;#39;s start with War. We&amp;#39;ve been battling bot armies for control of our GitLab server &lt;a href=&quot;https://gitlab.torproject.org/tpo/tpa/team/-/work_items/42152&quot;&gt;for a while&lt;/a&gt;. Bots crawl virtually infinite endpoints on our Git repositories (as opposed to downloading an archive or shallow clone), including our fork of Firefox, Tor Browser, a massive repository.&lt;/p&gt;&lt;p&gt;At first, we&amp;#39;ve tried various methods: &lt;a href=&quot;https://www.robotstxt.org/&quot;&gt;robots.txt&lt;/a&gt;, blocking user agents, and finally blocking entire networks. I &lt;a href=&quot;https://anarc.at/blog/2025-05-30-asncounter/&quot;&gt;wrote asncounter&lt;/a&gt;. It worked for a while.&lt;/p&gt;&lt;p&gt;But now, blocking entire networks doesn&amp;#39;t work: they come back some other way, typically through &lt;a href=&quot;https://acid.vegas/blog/the-shady-world-of-ip-leasing/&quot;&gt;shady proxy networks&lt;/a&gt;, which is kind of ironic considering we&amp;#39;re essentially running the largest proxy network of the world.&lt;/p&gt;&lt;p&gt;Out of desperation, we&amp;#39;ve forced users to &lt;a href=&quot;https://gitlab.torproject.org/tpo/tpa/team/-/wikis/policy/0108-gitlab-cookie-and-javascript-enforcement&quot;&gt;use cookies&lt;/a&gt; when visiting our site. We haven&amp;#39;t deployed &lt;a href=&quot;https://anubis.techaro.lol/&quot;&gt;Anubis&lt;/a&gt; yet, as we worry that &lt;a href=&quot;https://social.anoxinon.de/@Codeberg/115033790447125787&quot;&gt;bots have broken Anubis anyways&lt;/a&gt; and that it &lt;a href=&quot;https://lock.cmpxchg8b.com/anubis.html&quot;&gt;does not really defend against a well-funded attacker&lt;/a&gt;, something which &lt;a href=&quot;https://behind.pretix.eu/2025/05/23/captchas-are-over/&quot;&gt;Pretix warned against in 2025 already&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;(We have a whole &lt;a href=&quot;https://gitlab.torproject.org/tpo/tpa/team/-/work_items/42229&quot;&gt;discussion regarding those tools here&lt;/a&gt;.)&lt;/p&gt;&lt;p&gt;But even that, predictably, has failed. I suspect what we consider bots are now really agents. They run full web browsers, JavaScript included, so a feeble cookie is no match for the massive bot armies.&lt;/p&gt;&lt;h2&gt;Side note on LLM &amp;quot;order of battle&amp;quot;&lt;/h2&gt;&lt;p&gt;We often underestimate the size of that army. The cloud was huge even before LLMs, serving about two thirds of the web. Even larger swaths of clients like government and corporate databases have all moved to the cloud, in shared, but private infrastructure with massive spare capacity that is readily available to anyone who pays.&lt;/p&gt;&lt;p&gt;LLMs have made the problem worse by dramatically expanding the capacity of the &amp;quot;cloud&amp;quot;. We now have data centers that defy imagination with &lt;a href=&quot;https://epoch.ai/data/data-centers&quot;&gt;millions of cores&lt;/a&gt;, petabytes of memory, exabytes of storage.&lt;/p&gt;&lt;p&gt;I thought that &lt;a href=&quot;https://sschueller.github.io/posts/the-free-market-lie/&quot;&gt;25 gigabit residential internet in Switzerland&lt;/a&gt; could bring balance, but this is nothing compared to the scale of those data centers.&lt;/p&gt;&lt;p&gt;Those companies can launch thousands, if not millions of fully functional web browsers at our servers. Computing power or bandwidth are not a limitation for them, our primitive infrastructure is. No one but hyperscalers can deal with this kind of load, and I suspect that they are also struggling, as even &lt;a href=&quot;https://www.androidauthority.com/google-recaptcha-play-services-requirement-3664806/&quot;&gt;Google is deploying extreme mechanisms in reCAPTCHA&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This is the largest attack on the internet since the &lt;a href=&quot;https://en.wikipedia.org/wiki/Morris_worm&quot;&gt;Morris worm&lt;/a&gt; but while &lt;a href=&quot;https://en.wikipedia.org/wiki/Robert_Tappan_Morris&quot;&gt;Robert Tappan Morris&lt;/a&gt; went to jail on a felony, LLM companies are celebrated as innovators and will soon be too big to fail.&lt;sup&gt;&lt;a href=&quot;https://anarc.at/blog/#fn:2&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;Which brings us to the second horsemen, famine.&lt;/p&gt;&lt;h1&gt;Famine: shortages&lt;/h1&gt;&lt;p&gt;All that computing power doesn&amp;#39;t come out of thin air: it needs massive amounts of hardware, power, and cooling.&lt;/p&gt;&lt;p&gt;Earlier this year, I&amp;#39;ve heard from a colleague that their Dell supplier refused to even provide a &lt;em&gt;quote&lt;/em&gt; before August. Dell!&lt;/p&gt;&lt;p&gt;In February, &lt;a href=&quot;https://www.techspot.com/news/111346-western-digital-hdd-production-capacity-2026-already-sold.html&quot;&gt;Western Digital&amp;#39;s hard drive production for 2026 was already sold out&lt;/a&gt;. Hard drives essentially &lt;a href=&quot;https://gitlab.torproject.org/tpo/tpa/team/-/work_items/42465&quot;&gt;doubled in price within a year&lt;/a&gt;, and some have now tripled. A server quote we had in November has now &lt;em&gt;quadrupled&lt;/em&gt;, going from 10 thousand to &lt;em&gt;FORTY&lt;/em&gt; thousand dollars for a single server.&lt;/p&gt;&lt;p&gt;But regular folks are facing real-life shortages as well, as &lt;a href=&quot;https://www.theguardian.com/us-news/2026/may/13/utah-approves-datacenter-backlash&quot;&gt;city-size data centers&lt;/a&gt; are being built at neck-breaking speed, stealing fresh water and energy from human beings to feed the war machine.&lt;/p&gt;&lt;p&gt;We&amp;#39;ve been scared of losing our jobs, but it seems that Apocalypse has yet to fully materialize. Regardless for engineers, the market feels tighter than it was a couple years ago, and everyone feels on edge that they will just have to learn to operate LLMs to keep their jobs.&lt;/p&gt;&lt;p&gt;Update: it turns out I was clearly too optimistic. Cisco is laying off 4,000 or 5% of its staff in a &lt;a href=&quot;https://blogs.cisco.com/news/our-path-forward&quot;&gt;jolly announcement celebrating a record $15.8 billion revenue&lt;/a&gt;, and Meta will &lt;a href=&quot;https://www.nytimes.com/2026/04/23/technology/meta-layoffs.html&quot;&gt;lay off 8,000 or 10% of its workforce&lt;/a&gt;, in &lt;a href=&quot;https://sfstandard.com/pacific-standard-time/2026/05/15/meta-employee-gets-real-horror-working-right-now/&quot;&gt;horrifying conditions&lt;/a&gt;. See also the &lt;a href=&quot;https://jobloss.ai/&quot;&gt;jobloss.ai tracker&lt;/a&gt; which counts 125,000 jobs lost since January 2025, as of May 2026.&lt;/p&gt;&lt;p&gt;Which brings us, of course, to Death.&lt;/p&gt;&lt;h1&gt;Death: security and copyright&lt;/h1&gt;&lt;p&gt;Our third horseman is one I did &lt;em&gt;not&lt;/em&gt; expect a couple of months ago. Back at FOSDEM, &lt;code&gt;curl&lt;/code&gt;&amp;#39;s maintainer Daniel Stenberg famously &lt;a href=&quot;https://lwn.net/Articles/1058266/&quot;&gt;complained about the poor quality of LLM-generated reports&lt;/a&gt; but then, a few months later, everyone is &lt;a href=&quot;https://lwn.net/Articles/1066581/&quot;&gt;scrambling to deal with floods of good reports&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;In the past two weeks, this culminated in a significant number of critical security issues across multiple projects. Chained together, remote code execution vulnerabilities in &lt;a href=&quot;https://depthfirst.com/nginx-rift&quot;&gt;Nginx&lt;/a&gt; and &lt;a href=&quot;https://www.cve.org/CVERecord?id=CVE-2026-23918&quot;&gt;Apache&lt;/a&gt; and &lt;em&gt;two&lt;/em&gt; local privilege escalations in the Linux kernel (&lt;a href=&quot;https://github.com/V4bel/dirtyfrag/&quot;&gt;dirtyfrag&lt;/a&gt; and &lt;a href=&quot;https://github.com/v12-security/pocs/tree/main/fragnesia#fragnesia&quot;&gt;fragnesia&lt;/a&gt;) essentially gave anyone root access to any unpatched server to the web.&lt;/p&gt;&lt;p&gt;As I write this, &lt;a href=&quot;https://github.com/0xdeadbeefnetwork/ssh-keysign-pwn&quot;&gt;another vulnerability dropped&lt;/a&gt;, which gives read access to any file to a local user, compromising TLS and SSH private keys.&lt;/p&gt;&lt;p&gt;All those vulnerabilities were released without any significant coordination while people scrambled to mitigate.&lt;/p&gt;&lt;p&gt;Many people &lt;a href=&quot;https://lwn.net/Articles/1072007/#Comments&quot;&gt;including Linus Torvalds&lt;/a&gt; are now considering issues discovered through LLMs to be essentially public. This puts &lt;a href=&quot;https://lwn.net/Articles/1071499/&quot;&gt;some debates about disclosure processes&lt;/a&gt; in perspective, to say the least.&lt;/p&gt;&lt;p&gt;But this is not merely the death of the traditional coordinated disclosure process, the C programming language, or the Linux kernel: remember that those bots are trained on a large corpus of copyrighted material. Facebook has &lt;a href=&quot;https://www.theguardian.com/technology/2025/jan/10/mark-zuckerberg-meta-books-ai-models-sarah-silverman&quot;&gt;trained their models on pirated books&lt;/a&gt; and &lt;a href=&quot;https://torrentfreak.com/nvidia-contacted-annas-archive-to-secure-access-to-millions-of-pirated-books/&quot;&gt;Nvidia has done deals with Anna&amp;#39;s Archive&lt;/a&gt; to secure access to large swaths of copyrighted material. The &lt;a href=&quot;https://www.congress.gov/crs-product/LSB10922&quot;&gt;US Congress seems to think LLM outputs are not copyrightable&lt;/a&gt;, like any other machine outputs.&lt;/p&gt;&lt;p&gt;With many people now vibe coding their way out of learning or remembering how computers work, is this the Death of Copyright?&lt;/p&gt;&lt;p&gt;And that, of course, brings us to the final horseman: Pestilence.&lt;/p&gt;&lt;h1&gt;Pestilence: slop&lt;/h1&gt;&lt;p&gt;There is a growing meme that programming is essentially over as we know it. That you can simply vibe-code applications from scratch and it&amp;#39;s pretty good.&lt;/p&gt;&lt;p&gt;Maybe that&amp;#39;s true.&lt;/p&gt;&lt;p&gt;So far, most of my attempts at resolving any complex problem with a LLM have often failed with bizarre failures. &lt;a href=&quot;https://gitlab.com/anarcat/scripts/-/blob/main/transmodify.py?ref_type=heads&quot;&gt;Some worked surprisingly well.&lt;/a&gt; Maybe, of course, I am holding it wrong.&lt;/p&gt;&lt;p&gt;I personally don&amp;#39;t believe LLMs will ever be good enough to produce and maintain software at scale. They&amp;#39;re surprisingly good at finding security flaws right now. But what I see is also a lot of &lt;a href=&quot;https://en.wikipedia.org/wiki/Bullshit&quot;&gt;Bullshit&lt;/a&gt;, with a capital B. It&amp;#39;s not lying: it does not &amp;quot;know&amp;quot; anything, so it &lt;em&gt;can&amp;#39;t&lt;/em&gt; lie. It&amp;#39;s misleadingly cohesive and deliberate, but it lacks meaning, intent, will.&lt;/p&gt;&lt;p&gt;I have not been confronted with much slop, apart from the lobster Jesus or the yellow man atrocities, and particularly not in my work. But I see what it is doing to my profession: beyond &lt;a href=&quot;https://en.wikipedia.org/wiki/Vibe_coding&quot;&gt;vibe-coding&lt;/a&gt;, people are now &lt;a href=&quot;https://www.forbes.com/sites/timkeary/2026/04/13/is-the-cult-of-tokenmaxxingjust-another-fad-or-the-new-normal/&quot;&gt;token-maxxing&lt;/a&gt;, and &lt;a href=&quot;https://leehanchung.github.io/blogs/2026/04/05/the-ai-great-leap-forward/#let-a-hundred-skills-bloom&quot;&gt;land-grabbing their colleagues&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I don&amp;#39;t like what LLMs do to our communities, or the fabric of software we live with.&lt;/p&gt;&lt;p&gt;Software does not evolve in a void. It is a team effort, be it free software or a corporate product. Generations of humans have carefully built the scaffolding of technology required for modern networks and software to operate, in a convoluted contraption that no single human fully understands anymore.&lt;/p&gt;&lt;p&gt;The idea of simply giving up on that understanding entirely and delegating it to an unproven model is not only chilling, it feels just plain stupid. Not stupid as in &lt;a href=&quot;https://en.wikipedia.org/wiki/Skynet_(Terminator)&quot;&gt;Skynet&lt;/a&gt;, stupid as in &amp;quot;I can&amp;#39;t get inside the data center because the authentication system is down&amp;quot;. Except we&amp;#39;re in a &amp;quot;the power plant doesn&amp;#39;t reboot&amp;quot; or &amp;quot;their LLM found an 0day in our slop&amp;quot; kind of stupid.&lt;/p&gt;&lt;h1&gt;The fifth horsemen&lt;/h1&gt;&lt;p&gt;Researching for this article, I looked up the four horsemen and found out they original seems to have been:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Famine&lt;/li&gt;&lt;li&gt;War&lt;/li&gt;&lt;li&gt;Death&lt;/li&gt;&lt;li&gt;Conquest (??)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I was surprised. I grew up thinking about the horsemen being Famine, War, Pestilence, and Death. So I went back to &lt;a href=&quot;https://www.metallica.com/songs/the-four-horsemen.html&quot;&gt;my original source&lt;/a&gt; which actually claims the horsemen are:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Time has taken its toll on you, the lines that crack your face. Famine, your body, it has torn through, withered in every place. Pestilence for what you&amp;#39;ve had to endure, and what you have put others through Death, deliverance for you, for sure, now there&amp;#39;s nothing you can do&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So I guess that makes no sense either, which, fair enough, I shouldn&amp;#39;t rely on Metallica for theological references. Especially since that song was originally called &lt;a href=&quot;https://en.wikipedia.org/wiki/Mechanix&quot;&gt;Mechanix&lt;/a&gt; and was &amp;quot;about having sex at a gas station&amp;quot;.&lt;/p&gt;&lt;p&gt;Anyways.&lt;/p&gt;&lt;p&gt;The point is, there are actually five horsemen, and the fifth one is, in my opinion, Conquest.&lt;/p&gt;&lt;p&gt;Those companies (and &lt;em&gt;not&lt;/em&gt; &amp;quot;AI&amp;quot;, mind you) are taking over the world. I sense a strong connection with the &amp;quot;post-truth&amp;quot; world imposed on us by fascists like Trump and Putin. It&amp;#39;s not an accident, it&amp;#39;s a power grab part of the &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Californian_Ideology&quot;&gt;Californian Ideology&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;https://anarc.at/blog/#fn:3&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;. Just like Airbnb broke housing, Uber destroyed the transportation and Amazon is taking over retail and server hosting, LLM companies are essentially trying to take over if not everything, at least &lt;a href=&quot;https://en.wikipedia.org/wiki/Cognition&quot;&gt;Cognition&lt;/a&gt; as a whole.&lt;/p&gt;&lt;p&gt;But the capitalization of those companies (OpenAI and Nvidia in particular) are so far beyond reason that their inevitable collapse will likely lead to a global financial collapse of biblical proportions.&lt;/p&gt;&lt;p&gt;Because they will inevitably fail like previous bubbles they are built on. And when they fail, I hope it zips all the way back through the blockchain scam, the ad surveillance system, and the dot com then git me back my internet.&lt;/p&gt;&lt;h1&gt;The Tower of Babel&lt;/h1&gt;&lt;p&gt;While I&amp;#39;m off in the woods hallucinating (ha!) on biblical allegories, I feel there&amp;#39;s another sign that the apocalypse is coming.&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Tower_of_Babel&quot;&gt;Tower of Babel&lt;/a&gt; myth says that humans tried to create a big tower up to heaven and become god. God confounds their speech and scatters the human race. End of utopia.&lt;/p&gt;&lt;p&gt;This is what is happening to our human translators now. LLMs being, after all, Language Models, they are excellent at translation work. So much that the only translators not replaced by LLMs right now are &lt;a href=&quot;https://en.wikipedia.org/wiki/Language_interpretation&quot;&gt;interpreters&lt;/a&gt;, who translate vocally in real time. But interpreters are worried about their jobs as well.&lt;/p&gt;&lt;p&gt;This concretely means we will lose the human capacity, as a civilization, to translate between each other. It is still an &lt;a href=&quot;https://revues.imist.ma/index.php/JALCS/article/view/59018&quot;&gt;open question&lt;/a&gt; whether the remaining revision work will be enough for translators to avoid deskilling, but other research has shown that LLM use &lt;a href=&quot;https://publichealthpolicyjournal.com/mit-study-finds-artificial-intelligence-use-reprograms-the-brain-leading-to-cognitive-decline/&quot;&gt;leads to cognitive decline&lt;/a&gt;, &lt;a href=&quot;https://dl.acm.org/doi/full/10.1145/3706598.3713778&quot;&gt;impacts critical thinking&lt;/a&gt;, and generally, that &lt;a href=&quot;https://publicera.kb.se/ir/article/view/47143&quot;&gt;deskilling is a common outcome&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Ultimately, I think this is where LLMs bring us. Towards collapse.&lt;/p&gt;&lt;p&gt;So this is a call to arms. Fight back!&lt;/p&gt;&lt;p&gt;Poison bots. Build local real-world communities.&lt;/p&gt;&lt;p&gt;Go low tech. &lt;a href=&quot;https://en.wikipedia.org/wiki/Moore%27s_law&quot;&gt;Moore&amp;#39;s law&lt;/a&gt; is dead, &lt;a href=&quot;https://spectrum.ieee.org/the-death-of-moores-law-will-spur-innovation&quot;&gt;make use of it&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Patch your shit. &lt;a href=&quot;https://anginedepoitrine.com/&quot;&gt;Go weird&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Refuse slop. Train your brain. &lt;a href=&quot;https://github.com/leilei926524-tech/anti-distill&quot;&gt;Refuse distillation&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The horsemen will collapse, but let&amp;#39;s not go down with them.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://dune.fandom.com/wiki/Butlerian_Jihad&quot;&gt;Butlerian Jihad&lt;/a&gt;!&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;This article was written without the use of a large language model and should not be used to train one.&lt;/p&gt;&lt;/blockquote&gt;&lt;h1&gt;Updates&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;A paragraph was added about the job apocalypse, which was of course under-estimate.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://www.tumblr.com/dreaminginthedeepsouth/817865966907228160/darren-oconnor-timnit-gebru-was-fired-from&quot;&gt;Why Timnit Gebru was fired&lt;/a&gt; is extremely important and interesting. The co-lead of the Ethical AI team at Google was fired because they blew the whistle on &amp;quot;stochastic parrots&amp;quot; essentially destroying the world as we know it:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;The fifth warning was the one Google cared about most. [...]&lt;/p&gt;&lt;p&gt;The internet would become a place where the dominant voice was a statistical average of dominant voices, presented as a neutral assistant.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The warnings from the paper are eerily similar to my horsemen:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;predicted the hallucination (pestilence)&lt;/li&gt;&lt;li&gt;bias amplification (war?)&lt;/li&gt;&lt;li&gt;environmental cost (famine)&lt;/li&gt;&lt;li&gt;un-auditable training corpus (death?)&lt;/li&gt;&lt;li&gt;&amp;quot;centralize linguistic and cultural power in the hands of the small number of companies&amp;quot; (conquest)&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;See also Tim Wu&amp;#39;s &amp;quot;The Master Switch&amp;quot; &lt;a href=&quot;https://scoat.es/@sean/116698778802881078&quot;&gt;which says&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;The industry learned how to secure the enactment of seemingly innocuous and sensible regulations that nonetheless spelled doom for any rival.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;People claim &lt;a href=&quot;https://cyberplace.social/@GossiTheDog/116698461313896106&quot;&gt;the same about Anthropic&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;hr/&gt;&lt;ol&gt;&lt;li&gt; I prefer &amp;quot;LLM&amp;quot; to Artificial Intelligence, as I don&amp;#39;t consider models to have &amp;quot;Intelligence&amp;quot; which goes far beyond the analytical traits we train models for. Intelligence &lt;em&gt;requires&lt;/em&gt; embodiment and social interaction; machines lack the innate human skills of empathy, feeling and care, which explains a lot of the evils behind the current trends.&lt;a href=&quot;https://anarc.at/blog/#fnref:1&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li&gt; It should be noted that Morris also happened to be one of the founder of &lt;a href=&quot;https://en.wikipedia.org/wiki/Y_Combinator&quot;&gt;Y Combinator&lt;/a&gt; where he is in good company with other techno-fascists like Peter Thiel, Sam Altman, and so on. Crime, after all, pays.&lt;a href=&quot;https://anarc.at/blog/#fnref:2&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Probably a good time to watch &lt;a href=&quot;https://en.wikipedia.org/wiki/All_Watched_Over_by_Machines_of_Loving_Grace_(TV_series)&quot;&gt;All Watched Over by Machines of Loving Grace&lt;/a&gt;.&lt;a href=&quot;https://anarc.at/blog/#fnref:3&quot;&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;</content:encoded>
</item>
<item>
<title>IBM Goes GA With Power Autonomous Operations</title>
<link>https://www.itjungle.com/2026/10/12/ibm-goes-ga-with-power-autonomous-operations/</link>
<guid isPermaLink="false">ups5jCrt4r32jGB6RJBlBe9Zpeyvv5dVDpR28g==</guid>
<pubDate>Mon, 19 Oct 2026 03:21:39 +0000</pubDate>
<description>IBM is now shipping Power Autonomous Operations, a new product that uses AI to help customers manage and optimize their Power environments with little to no human involvement. In addition to lowering the manual effort for administrators, the product provides a natural language interface for administrators, which IBM says lowers operational burden and accelerates problem resolution. Big Blue unveiled Power Autonomous Operations in July when it made its delayed Spring Technology Refresh (TR) fo...</description>
<content:encoded>&lt;p&gt;IBM is now shipping Power Autonomous Operations, a new product that uses AI to help customers manage and optimize their Power environments with little to no human involvement. In addition to lowering the manual effort for administrators, the product provides a natural language interface for administrators, which IBM says lowers operational burden and accelerates problem resolution.&lt;/p&gt;&lt;p&gt;Big Blue unveiled Power Autonomous Operations in July when it made its delayed Spring Technology Refresh (TR) for IBM i and announced the Power S1112 entry-level machine. It started shipping Autonomous Ops on September 23.&lt;/p&gt;&lt;p&gt;Just as Bob is helping to accelerate productivity of &lt;a href=&quot;https://www.itjungle.com/2026/10/12/ibm-goes-ga-with-power-autonomous-operations/&quot;&gt;… &lt;/a&gt;&lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;https://www.itjungle.com/2026/10/12/ibm-goes-ga-with-power-autonomous-operations/&quot;&gt;IBM Goes GA With Power Autonomous Operations&lt;/a&gt; appeared first on &lt;a href=&quot;https://www.itjungle.com&quot;&gt;IT Jungle&lt;/a&gt;.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>The Strange Longevity of the Command Line</title>
<link>https://deadparrotbbs.com/the-strange-longevity-of-the-command-line/</link>
<guid isPermaLink="false">0FiQzY1jiyDB_ELZVr4FlToOBKSCikHPsy4fzA==</guid>
<pubDate>Sun, 18 Oct 2026 11:00:11 +0000</pubDate>
<description>The command line comes from an earlier era of computing, yet it remains central to administration, programming, automation, and remote systems. Its longevity has less to do with nostalgia than with precision, composability, repeatability, and an interface that still solves problems graphical tools often do not.</description>
<content:encoded>&lt;p&gt;The command line should probably have disappeared by now.&lt;/p&gt;&lt;p&gt;It comes from an era when computer displays showed little more than text and users were expected to type instructions rather than point at icons. Since then we have had graphical desktops, touchscreens, voice assistants, mobile apps, web applications, and several decades of attempts to make computers easier to use. Yet open a terminal on Linux or macOS, connect to a server, work with development tools, or administer a network device, and there it is: a prompt waiting for someone to type a command.&lt;/p&gt;&lt;p&gt;That survival is not just inertia. The command line has lasted because it remains unusually good at certain kinds of work. Graphical interfaces made computers accessible to far more people and are better for many tasks, but they never made the older interface useless. In some areas of computing, the command line may be more important now than it was when desktop computers first began replacing terminals.&lt;/p&gt;&lt;h2&gt;Before Pointing and Clicking&lt;/h2&gt;&lt;p&gt;For much of computing’s early history, interacting with a computer meant giving it explicit instructions. The details changed considerably over time, from punched cards and batch processing to interactive terminals, but typing commands became one of the standard ways people worked directly with a system.&lt;/p&gt;&lt;p&gt;The graphical user interface changed that relationship. Instead of remembering the name of a command and its options, users could choose an item from a menu, click a button, or drag an object across the screen. The computer could show what was available rather than requiring the user to know it beforehand.&lt;/p&gt;&lt;p&gt;That was a genuine improvement. I would not want to manage photographs, lay out a document, browse the web, or edit audio exclusively by typing commands. Graphical interfaces are excellent when the work is visual or when seeing the available choices is more useful than memorizing instructions.&lt;/p&gt;&lt;p&gt;What is interesting is that the graphical interface did not replace the command line in the same way that graphical word processors replaced most text-mode word processors. The two interfaces settled into different kinds of work.&lt;/p&gt;&lt;h2&gt;A Command Is Precise&lt;/h2&gt;&lt;p&gt;A graphical interface is usually designed around possible actions. The program presents buttons, menus, windows, and other controls, and the user chooses among them.&lt;/p&gt;&lt;p&gt;The command line works in the opposite direction. The user states what should happen.&lt;/p&gt;&lt;p&gt;That difference can make the command line less approachable because you have to know enough to formulate the instruction. A blank prompt does not offer much guidance. Someone unfamiliar with a system may have no idea what to type, while a graphical application can at least expose its major functions.&lt;/p&gt;&lt;p&gt;Once the commands are known, however, the same characteristic becomes an advantage. Typing a precise instruction can be faster than navigating through several levels of menus and dialogs, particularly when the operation needs to be repeated or modified.&lt;/p&gt;&lt;p&gt;A graphical interface tends to optimize for discovery. A command-line interface tends to optimize for expression.&lt;/p&gt;&lt;p&gt;Both are useful, but they solve different problems.&lt;/p&gt;&lt;h2&gt;The Real Strength Is Combining Tools&lt;/h2&gt;&lt;p&gt;The Unix tradition is especially important to understanding why command lines have lasted. Unix systems developed around the idea that small programs could perform particular jobs and be combined to accomplish more complicated tasks.&lt;/p&gt;&lt;p&gt;A program might produce text. Another program could search that text. Another could sort it, count it, transform it, or write the results somewhere else. The shell provided a way to connect those programs.&lt;/p&gt;&lt;p&gt;This is where the command line becomes more than a collection of old utilities.&lt;/p&gt;&lt;p&gt;Suppose I have hundreds of log files and want to find every line containing a particular error, extract a portion of each matching line, sort the results, and count how often each result appears. A graphical log viewer might provide exactly the right feature, or it might not. At a shell prompt, existing tools can often be joined together to perform the job without anyone first designing a special interface for it.&lt;/p&gt;&lt;p&gt;The individual tools may be simple. Their usefulness comes from being composable.&lt;/p&gt;&lt;h2&gt;Text Is a Very Good Interface Between Programs&lt;/h2&gt;&lt;p&gt;The longevity of the command line is closely connected to the longevity of plain text.&lt;/p&gt;&lt;p&gt;Many command-line tools accept text as input and produce text as output. That makes it relatively easy for one program to use the output of another without needing a complicated integration layer.&lt;/p&gt;&lt;p&gt;This is hardly the only way modern software communicates. Structured formats such as JSON and XML, databases, APIs, sockets, and many other mechanisms are essential. Still, text remains remarkably useful because both computers and people can usually inspect it.&lt;/p&gt;&lt;p&gt;If a command produces a list of filenames, process information, network addresses, or error messages, I can read it directly. I can also pass it to another tool, redirect it to a file, search it, or process it with a script.&lt;/p&gt;&lt;p&gt;There is very little ceremony involved.&lt;/p&gt;&lt;p&gt;Graphical interfaces generally do not work that way. The result displayed in one window is often intended primarily for a human being. Moving the same information automatically into another program may require an export function, an API, or software specifically written to connect the two.&lt;/p&gt;&lt;p&gt;The shell was built around that kind of connection from the beginning.&lt;/p&gt;&lt;h2&gt;Repetition Favors the Command Line&lt;/h2&gt;&lt;p&gt;One of the clearest advantages appears when a task has to be performed more than once.&lt;/p&gt;&lt;p&gt;Renaming one file is easy in a graphical file manager. Renaming five thousand files according to a particular rule is a different problem. Changing one configuration setting manually may be reasonable. Changing it across hundreds of systems is not.&lt;/p&gt;&lt;p&gt;A command that works once can often become part of a script. The script can then be run again tomorrow, scheduled to run automatically, stored in version control, copied to another machine, or modified when the requirements change.&lt;/p&gt;&lt;p&gt;That repeatability matters because the computer is doing exactly what computers are supposed to be good at: repeating instructions without becoming bored.&lt;/p&gt;&lt;p&gt;A sequence of mouse clicks is usually temporary. Unless the application provides macros or some other automation system, the procedure exists mainly in the user’s memory. A command can be recorded as text.&lt;/p&gt;&lt;p&gt;That turns an interaction into something closer to documentation.&lt;/p&gt;&lt;h2&gt;The Command Line Works Very Well at a Distance&lt;/h2&gt;&lt;p&gt;Another reason the command line survived is that computers stopped being something we only used while sitting directly in front of them.&lt;/p&gt;&lt;p&gt;Servers may be across the room, across the country, or on another continent. A text terminal works extremely well over a network because it requires relatively little bandwidth and does not depend on transmitting an entire graphical desktop.&lt;/p&gt;&lt;p&gt;SSH is an obvious example. Connect to a remote Unix or Linux system and you can administer it through essentially the same shell environment you would use locally. The remote machine does not need a monitor attached, much less a complete graphical desktop.&lt;/p&gt;&lt;p&gt;This fits modern computing surprisingly well. Cloud servers, virtual machines, containers, network appliances, and small embedded systems often have little reason to run a graphical environment at all. A machine may spend its entire useful life without anyone physically sitting in front of it.&lt;/p&gt;&lt;p&gt;The text terminal originated in a very different computing world, but the basic idea turned out to work extremely well in a networked one.&lt;/p&gt;&lt;h2&gt;Graphical Interfaces Change More Often&lt;/h2&gt;&lt;p&gt;There is also a certain stability to command-line tools that graphical interfaces often lack.&lt;/p&gt;&lt;p&gt;Graphical software is redesigned regularly. Buttons move. Menus are reorganized. Preferences migrate to new locations. Interfaces are simplified, expanded, flattened, rounded, hidden behind new icons, and sometimes redesigned largely because an old interface looks old.&lt;/p&gt;&lt;p&gt;Commands can change too, and anyone who has dealt with deprecated options or incompatible versions knows that command-line interfaces are not immune to churn. Still, mature command-line tools often preserve their basic behavior for a very long time because scripts depend on it.&lt;/p&gt;&lt;p&gt;That creates pressure for compatibility.&lt;/p&gt;&lt;p&gt;Moving a button from the left side of a window to the right may inconvenience users for a week. Changing the meaning of a command-line option may break ten thousand unattended scripts at three in the morning.&lt;/p&gt;&lt;p&gt;Software developers tend to become cautious when that is the alternative.&lt;/p&gt;&lt;h2&gt;Automation Keeps Pulling Us Back to Text&lt;/h2&gt;&lt;p&gt;Modern computing has also created new reasons to use text-based interfaces.&lt;/p&gt;&lt;p&gt;Infrastructure increasingly gets described in configuration files. Developers work with source-control systems, build tools, package managers, containers, cloud platforms, and deployment systems that all lend themselves to scripted operation. Even products with elaborate graphical dashboards frequently provide command-line tools because administrators eventually need automation.&lt;/p&gt;&lt;p&gt;The fashionable terminology changes. We have talked about scripting, configuration management, DevOps, infrastructure as code, and various forms of automation. Underneath much of it is an old idea: write down instructions in a form the computer can execute repeatedly.&lt;/p&gt;&lt;p&gt;A graphical interface is usually designed for one person performing an operation now. A script is designed for the system to perform an operation whenever it is needed.&lt;/p&gt;&lt;p&gt;As computing systems have become larger and more distributed, that distinction has become more important rather than less.&lt;/p&gt;&lt;h2&gt;The Command Line Exposes the Machine&lt;/h2&gt;&lt;p&gt;There is another quality I appreciate, although it can also be a disadvantage: command-line tools often expose more of what the system is actually doing.&lt;/p&gt;&lt;p&gt;Directories look like directories. Processes have identifiers. Network interfaces have names. Files have permissions. Programs accept arguments and return errors. The interface may not be friendly, but it tends to be fairly direct.&lt;/p&gt;&lt;p&gt;This connects to something I find increasingly interesting about modern software. Interfaces often try to hide structure from the user. That makes routine tasks easier, but it can also make troubleshooting harder because the abstraction conceals the very information needed to understand the problem.&lt;/p&gt;&lt;p&gt;The command line usually assumes that if you are asking about the details, you actually want to see the details.&lt;/p&gt;&lt;p&gt;That is useful in administration and troubleshooting, where an interface that tries too hard to protect the user from complexity can become an obstacle. Sometimes I do not want the computer to simplify the answer. I want it to tell me what is happening.&lt;/p&gt;&lt;h2&gt;None of This Makes the GUI a Mistake&lt;/h2&gt;&lt;p&gt;There is a tendency among some technically experienced users to treat command-line skill as evidence of seriousness, as though using a mouse somehow indicates insufficient dedication to computing. I have never found that attitude particularly useful.&lt;/p&gt;&lt;p&gt;Different interfaces are good at different things.&lt;/p&gt;&lt;p&gt;A spreadsheet is usually better for exploring tabular information interactively. A graphical file manager is convenient for browsing directories and moving a handful of files. Image editing is fundamentally visual. Web browsers would be considerably less useful if every page had to be described through typed commands.&lt;/p&gt;&lt;p&gt;The command line also has real weaknesses. Commands can be cryptic. Options are sometimes inconsistent. Documentation ranges from excellent to incomprehensible. A mistyped command can have consequences far greater than clicking the wrong toolbar button, particularly when working with administrator privileges.&lt;/p&gt;&lt;p&gt;There is nothing inherently virtuous about making a task harder.&lt;/p&gt;&lt;p&gt;The interesting question is not whether text interfaces are better than graphical ones. It is why text interfaces remain useful despite decades of alternatives.&lt;/p&gt;&lt;h2&gt;It Rewards Knowledge&lt;/h2&gt;&lt;p&gt;Graphical interfaces tend to make the first few minutes with a program easier. Command-line interfaces often make the next several years more efficient.&lt;/p&gt;&lt;p&gt;The difference is partly an investment in knowledge. Learning that a button performs an action is useful within one program. Learning a shell command or a common text-processing tool may be useful across thousands of systems.&lt;/p&gt;&lt;p&gt;That knowledge also accumulates. A small set of familiar commands gradually becomes a larger vocabulary, and those commands can be combined in ways that were not necessarily anticipated by the people who wrote them.&lt;/p&gt;&lt;p&gt;This is one reason experienced command-line users can sometimes perform complicated tasks with what looks like very little effort. They are not using a magically superior interface. They have accumulated a language for telling the computer what to do.&lt;/p&gt;&lt;p&gt;Like any language, it becomes more useful with familiarity.&lt;/p&gt;&lt;h2&gt;An Interface That Found Its Place&lt;/h2&gt;&lt;p&gt;The command line survived because it stopped having to be the interface for everything.&lt;/p&gt;&lt;p&gt;Once graphical desktops became common, nobody needed to pretend that typing commands was the best way to perform every task. The command line could remain where its strengths mattered: administration, programming, automation, remote access, text processing, diagnostics, and tasks that benefit from precise, repeatable instructions.&lt;/p&gt;&lt;p&gt;That may be the real explanation for its strange longevity. It was not preserved merely because Unix people are stubborn or because old habits refuse to die. It survived repeated generations of interface design because newer interfaces did not eliminate the problems it solves well.&lt;/p&gt;&lt;p&gt;Computing is full of technologies that disappeared once something clearly better replaced them. The command line has had no shortage of supposed replacements, yet the prompt remains.&lt;/p&gt;&lt;p&gt;After all these years, typing an instruction and having the computer execute exactly that instruction is still a useful idea.&lt;/p&gt;</content:encoded>
</item>
<item>
<title>7 Tips to Optimize Linux systemd Boot Time</title>
<link>https://www.tecmint.com/speed-up-systemd-boot-time-in-linux/</link>
<guid isPermaLink="false">EHiCEaZx3CWLOS1CiV-KtvHVzfEYAJWNedbdhw==</guid>
<pubDate>Sun, 18 Oct 2026 08:34:37 +0000</pubDate>
<description>The post 7 Tips to Optimize Linux systemd Boot Time first appeared on Tecmint: Linux Howtos, Tutorials &amp; Guides .A Linux server that takes a minute to boot may be spending much of that time waiting for one or The post 7 Tips to Optimize Linux systemd Boot Time first appeared on Tecmint: Linux Howtos, Tutorials &amp; Guides.</description>
<content:encoded>The post &lt;a href=&quot;https://www.tecmint.com/speed-up-systemd-boot-time-in-linux/&quot;&gt;7 Tips to Optimize Linux systemd Boot Time&lt;/a&gt; first appeared on &lt;a href=&quot;https://www.tecmint.com&quot;&gt;Tecmint: Linux Howtos, Tutorials &amp;amp; Guides&lt;/a&gt; .&lt;p&gt;A Linux server that takes a minute to boot may be spending much of that time waiting for one or&lt;/p&gt; The post &lt;a href=&quot;https://www.tecmint.com/speed-up-systemd-boot-time-in-linux/&quot;&gt;7 Tips to Optimize Linux systemd Boot Time&lt;/a&gt; first appeared on &lt;a href=&quot;https://www.tecmint.com&quot;&gt;Tecmint: Linux Howtos, Tutorials &amp;amp; Guides&lt;/a&gt;.</content:encoded>
</item>
<item>
<title>Prioritizing &#39;fasd&#39; directories in bash, sh, and zsh shells (e.g., pinned and project directories)</title>
<link>https://www.jamescherti.com/fasd-prioritize-pinned-directories-bash-zsh-shell/</link>
<guid isPermaLink="false">S1GlDdgHYNJM1locGm7DbpkYYWfMG1BjpF1GjQ==</guid>
<pubDate>Sat, 17 Oct 2026 17:45:54 +0000</pubDate>
<description>The fasd command-line tool (and its maintained fork, efasd) tracks access to files and directories to provide fast navigation in Linux and UNIX shells such as sh, bash, or zsh. While the default fasd tracking works well for day-to-day shell navigation, there are a few edge cases when you have a set of core directories you always want at the top of your results: To solve this, you can use a custom fasd backend to &quot;pin&quot; a static list of directories so they permanently outrank regular shell hist...</description>
<content:encoded>The fasd command-line tool (and its maintained fork, efasd) tracks access to files and directories to provide fast navigation in Linux and UNIX shells such as sh, bash, or zsh. While the default fasd tracking works well for day-to-day shell navigation, there are a few edge cases when you have a set of core directories you always want at the top of your results: To solve this, you can use a custom fasd backend to &amp;quot;pin&amp;quot; a static list of directories so they permanently outrank regular shell history. In my setup, I maintain a plain-text list of all my project … &lt;a href=&quot;https://www.jamescherti.com/fasd-prioritize-pinned-directories-bash-zsh-shell/&quot;&gt;Continue reading &lt;span&gt;→&lt;/span&gt;&lt;/a&gt;</content:encoded>
</item>
<item>
<title>Reducing shell prompt latency caused by fasd in Bash, zsh, or sh</title>
<link>https://www.jamescherti.com/speed-up-fasd-shell-prompt/</link>
<guid isPermaLink="false">82q_5zVS8J5Js27hmtO1uIktrIvNQC0tI-jLsg==</guid>
<pubDate>Sat, 17 Oct 2026 17:45:54 +0000</pubDate>
<description>The fasd command-line tool (and its maintained fork, efasd) tracks access to files and directories to provide fast navigation in Linux and UNIX shells such as sh, bash, or zsh. Depending on the fasd implementation and shell hook, tracking can delay command execution or prompt rendering. This article details the environment variables needed to speed up fasd and prevent it from slowing down your shell prompt by addressing the following elements: Where to add the variables This article relies on...</description>
<content:encoded>The fasd command-line tool (and its maintained fork, efasd) tracks access to files and directories to provide fast navigation in Linux and UNIX shells such as sh, bash, or zsh. Depending on the fasd implementation and shell hook, tracking can delay command execution or prompt rendering. This article details the environment variables needed to speed up fasd and prevent it from slowing down your shell prompt by addressing the following elements: Where to add the variables This article relies on modifying environment variables. Add these export statements to your interactive shell configuration file, such as ~/.bashrc or ~/.zshrc. Place them … &lt;a href=&quot;https://www.jamescherti.com/speed-up-fasd-shell-prompt/&quot;&gt;Continue reading &lt;span&gt;→&lt;/span&gt;&lt;/a&gt;</content:encoded>
</item>
<item>
<title>pdfcipher - A command-line tool for encrypting and decrypting PDF files with password protection</title>
<link>https://www.jamescherti.com/pdfcipher/</link>
<guid isPermaLink="false">9WhYW5KGoL_aYtB8aThzdRN0IT3WHBTMl-k4gg==</guid>
<pubDate>Sat, 17 Oct 2026 17:45:54 +0000</pubDate>
<description>The pdfcipher command-line tool enables encrypting and decrypting PDF files with password-based encryption. It allows setting and removing passwords, ensuring secure access and distribution of PDF documents. Requirements The qpdf command-line tool. Installation To install the pdfcipher executable locally in ~/.local/bin/ using pip, run: pip install --user pdfcipher (Omitting the --user flag will install pdfcipher system-wide in /usr/local/bin/.) Usage Encrypt Encrypt PDF files with password p...</description>
<content:encoded>The pdfcipher command-line tool enables encrypting and decrypting PDF files with password-based encryption. It allows setting and removing passwords, ensuring secure access and distribution of PDF documents. Requirements The qpdf command-line tool. Installation To install the pdfcipher executable locally in ~/.local/bin/ using pip, run: pip install --user pdfcipher (Omitting the --user flag will install pdfcipher system-wide in /usr/local/bin/.) Usage Encrypt Encrypt PDF files with password protection: pdfcipher enc file1.pdf file2.pdf file3.pdf The pdfcipher tool will prompt the user to enter a password, which will then be used to encrypt all the specified PDF files: Decrypt Decrypt PDF files by entering … &lt;a href=&quot;https://www.jamescherti.com/pdfcipher/&quot;&gt;Continue reading &lt;span&gt;→&lt;/span&gt;&lt;/a&gt;</content:encoded>
</item>
<item>
<title>eFasd (Enhanced Fasd) - A fasd fork that is optimized for faster shell prompt speed</title>
<link>https://www.jamescherti.com/efasd/</link>
<guid isPermaLink="false">m7duu9M88FK8-h4Hcq5D_5iFmj2twRgRx5f4zw==</guid>
<pubDate>Sat, 17 Oct 2026 17:45:54 +0000</pubDate>
<description>Navigating deeply nested file systems in POSIX shells on Linux and UNIX systems often requires typing repetitive, lengthy paths. The eFasd project resolves this by maintaining a continuous record of the files and directories you access. Instead of writing out absolute paths or executing multiple cd commands, you can use default fasd aliases like j to jump to a directory, f for files, d for directories, and s for search. This lets you navigate directly to active project directories or open com...</description>
<content:encoded>Navigating deeply nested file systems in POSIX shells on Linux and UNIX systems often requires typing repetitive, lengthy paths. The eFasd project resolves this by maintaining a continuous record of the files and directories you access. Instead of writing out absolute paths or executing multiple cd commands, you can use default fasd aliases like j to jump to a directory, f for files, d for directories, and s for search. This lets you navigate directly to active project directories or open common configuration files instantly. The fasd command calculates a &amp;quot;frecency&amp;quot; score for each path, an algorithm that weights both … &lt;a href=&quot;https://www.jamescherti.com/efasd/&quot;&gt;Continue reading &lt;span&gt;→&lt;/span&gt;&lt;/a&gt;</content:encoded>
</item>
<item>
<title>Configuring Debian to run smoothly on an older desktop computer</title>
<link>https://www.jamescherti.com/how-configure-debian-run-smoothly-on-older-computer/</link>
<guid isPermaLink="false">V9cv8TbrloYHRiktXwqbRUSr5uRxWRpoEz_ffA==</guid>
<pubDate>Sat, 17 Oct 2026 17:45:54 +0000</pubDate>
<description>Over the weekend, I pulled an old Dell tower out of storage to set up a dedicated machine for my daughter to use for homework and retro gaming. While the default Debian installation booted up cleanly, system responsiveness was poor out of the box because of heavy mechanical disk I/O, combined with software video decoding taxing the aging CPU. Below is a breakdown of the configuration tweaks, firmware setup, hardware acceleration, background services, and sysctl settings I applied while config...</description>
<content:encoded>Over the weekend, I pulled an old Dell tower out of storage to set up a dedicated machine for my daughter to use for homework and retro gaming. While the default Debian installation booted up cleanly, system responsiveness was poor out of the box because of heavy mechanical disk I/O, combined with software video decoding taxing the aging CPU. Below is a breakdown of the configuration tweaks, firmware setup, hardware acceleration, background services, and sysctl settings I applied while configuring this older desktop computer with Debian. (Most of these adjustments also apply to other Debian-based distributions like Ubuntu or Linux … &lt;a href=&quot;https://www.jamescherti.com/how-configure-debian-run-smoothly-on-older-computer/&quot;&gt;Continue reading &lt;span&gt;→&lt;/span&gt;&lt;/a&gt;</content:encoded>
</item>
<item>
<title>Linux Kernel Flaw PwnEscape Lets a Virtual Machine Read Its Host’s Memory. Upstream Fixes Are Out.</title>
<link>https://webhosting.today/2026/10/16/linux-kernel-flaw-pwnescape-lets-a-virtual-machine-read-its-hosts-memory-upstream-fixes-are-out/</link>
<guid isPermaLink="false">j9cGjEkz61d3_elQ36mHZi2KIalu2PL49MKQKQ==</guid>
<pubDate>Sat, 17 Oct 2026 10:45:20 +0000</pubDate>
<description>A flaw in the Linux kernel’s networking code can allow software inside a virtual machine to read memory from the physical server, or host, that runs it. Tracked as CVE-2026-99999 and nicknamed PwnEscape, it was found during Vercel’s $1 million sandbox challenge and demonstrated against Vercel’s production sandboxes. Fixed kernels for all seven maintained stable and […]</description>
<content:encoded>&lt;p&gt;A flaw in the Linux kernel’s networking code can allow software inside a virtual machine to read memory from the physical server, or host, that runs it. Tracked as CVE-2026-99999 and nicknamed PwnEscape, it was found during Vercel’s $1 million sandbox challenge and demonstrated against Vercel’s production sandboxes. Fixed kernels for all seven maintained stable and long-term lines were released on…&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://webhosting.today/2026/10/16/linux-kernel-flaw-pwnescape-lets-a-virtual-machine-read-its-hosts-memory-upstream-fixes-are-out/&quot;&gt;Source&lt;/a&gt;&lt;/p&gt;</content:encoded>
</item>
</channel>
</rss>
