<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Linux on KnightLi Blog</title>
        <link>https://www.knightli.com/es/tags/linux/</link>
        <description>Recent content in Linux on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Sat, 09 May 2026 07:25:55 +0800</lastBuildDate><atom:link href="https://www.knightli.com/es/tags/linux/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Dirty Frag CVE-2026-43284: riesgo de escalada local en Linux y guía de mitigación</title>
        <link>https://www.knightli.com/es/2026/05/09/dirty-frag-cve-2026-43284-linux-lpe-mitigation/</link>
        <pubDate>Sat, 09 May 2026 07:25:55 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/09/dirty-frag-cve-2026-43284-linux-lpe-mitigation/</guid>
        <description>&lt;p&gt;Dirty Frag es un conjunto de vulnerabilidades de escalada local de privilegios en el kernel Linux, divulgadas en mayo de 2026 y con indicios de explotación activa. Microsoft la describe como un riesgo post-compromiso: después de que un atacante consigue ejecución con pocos privilegios, puede usar el fallo para escalar a root. Ubuntu también clasifica CVE-2026-43284 como High.&lt;/p&gt;
&lt;p&gt;El peligro no está en un “compromiso remoto de un clic”. El peligro está en que, una vez dentro, el atacante puede ampliar el control rápidamente. Si consigue ejecución local mediante credenciales SSH débiles, una web shell, escape de contenedor, una cuenta de servicio con pocos privilegios o acceso remoto tras phishing, Dirty Frag puede permitir root y luego desactivar herramientas de seguridad, leer credenciales, manipular logs, moverse lateralmente o persistir.&lt;/p&gt;
&lt;h2 id=&#34;qué-cve-están-implicados&#34;&gt;Qué CVE están implicados
&lt;/h2&gt;&lt;p&gt;La información pública asocia Dirty Frag principalmente con dos identificadores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43284&lt;/code&gt;: relacionado con la ruta xfrm/ESP del kernel Linux. Las referencias de Microsoft a &lt;code&gt;esp4&lt;/code&gt; y &lt;code&gt;esp6&lt;/code&gt; pertenecen a esta zona de riesgo.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43500&lt;/code&gt;: Microsoft indica que está relacionado con &lt;code&gt;rxrpc&lt;/code&gt;, pero al 8 de mayo de 2026 el CVE aún no estaba publicado en NVD y el estado de parches seguía evolucionando.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por eso no conviene mirar solo un CVE. Es más seguro revisar si &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt;, &lt;code&gt;rxrpc&lt;/code&gt; y funciones relacionadas con xfrm/IPsec están activas, son necesarias y ya tienen parche de la distribución.&lt;/p&gt;
&lt;h2 id=&#34;explicación-técnica-resumida&#34;&gt;Explicación técnica resumida
&lt;/h2&gt;&lt;p&gt;Según Microsoft y Ubuntu, CVE-2026-43284 afecta al manejo de red y fragmentos de memoria del kernel Linux, especialmente al tratamiento de fragmentos de página compartidos en la ruta ESP/IPsec.&lt;/p&gt;
&lt;p&gt;En términos simples, páginas de datos pueden adjuntarse a buffers de red mediante mecanismos como splice. Si rutas posteriores del kernel tratan esos fragmentos como datos privados que se pueden modificar in-place, puede producirse descifrado o modificación in-place donde no debería. Un atacante puede manipular el comportamiento de page cache y acabar logrando escalada local.&lt;/p&gt;
&lt;p&gt;Esto se parece a CopyFail (&lt;code&gt;CVE-2026-31431&lt;/code&gt;): ambos giran en torno a page cache de Linux, rutas de datos del kernel y escalada local. Dirty Frag es peligroso porque introduce más rutas de ataque y puede ser más fiable que exploits LPE tradicionales dependientes de ventanas de carrera estrechas.&lt;/p&gt;
&lt;h2 id=&#34;entornos-prioritarios&#34;&gt;Entornos prioritarios
&lt;/h2&gt;&lt;p&gt;Dirty Frag es una vulnerabilidad local, así que el atacante ya debe poder ejecutar código en la máquina. Prioriza:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Servidores Linux con SSH expuesto.&lt;/li&gt;
&lt;li&gt;Servidores web donde pueda escribirse una web shell.&lt;/li&gt;
&lt;li&gt;Hosts multiusuario, bastiones, máquinas de desarrollo y runners CI/CD.&lt;/li&gt;
&lt;li&gt;Hosts de contenedores, nodos Kubernetes y nodos OpenShift.&lt;/li&gt;
&lt;li&gt;Sistemas que usen IPsec, VPN, xfrm o funcionalidad relacionada con RxRPC.&lt;/li&gt;
&lt;li&gt;Servidores con Ubuntu, RHEL, CentOS Stream, AlmaLinux, Fedora, openSUSE y otras distribuciones comunes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si un servidor no tiene usuarios locales, contenedores ni rutas de aplicación expuestas, el riesgo es menor. Pero cualquier sistema donde un atacante pueda conseguir una shell de bajo privilegio debe tratar esto como un problema de kernel de alta prioridad.&lt;/p&gt;
&lt;h2 id=&#34;primero-parchear&#34;&gt;Primero parchear
&lt;/h2&gt;&lt;p&gt;La corrección más segura es instalar la actualización de seguridad del kernel de tu distribución y reiniciar con el kernel nuevo.&lt;/p&gt;
&lt;p&gt;La página de Ubuntu indica que &lt;code&gt;CVE-2026-43284&lt;/code&gt; se publicó el 8 de mayo de 2026 y se clasifica como High. Microsoft también dice que Linux Kernel Organization publicó correcciones para &lt;code&gt;CVE-2026-43284&lt;/code&gt; y recomienda aplicar parches cuanto antes.&lt;/p&gt;
&lt;p&gt;Empieza revisando el sistema:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uname -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /etc/os-release
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Después actualiza el kernel según la distribución:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt full-upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;O:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dnf update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Tras actualizar, confirma que el sistema arrancó con el kernel nuevo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uname -r
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Instalar paquetes de kernel sin reiniciar deja el kernel antiguo ejecutándose, así que la vulnerabilidad puede seguir presente.&lt;/p&gt;
&lt;h2 id=&#34;mitigación-temporal-desactivar-módulos-relacionados&#34;&gt;Mitigación temporal: desactivar módulos relacionados
&lt;/h2&gt;&lt;p&gt;Si aún no hay parches, o producción no puede reiniciarse de inmediato, evalúa si puedes desactivar temporalmente los módulos relacionados. La mitigación de Ubuntu bloquea la carga de &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt; y &lt;code&gt;rxrpc&lt;/code&gt;, y los descarga si ya están cargados.&lt;/p&gt;
&lt;p&gt;Crear reglas modprobe:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;install esp4 /bin/false&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/modprobe.d/dirty-frag.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;install esp6 /bin/false&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee -a /etc/modprobe.d/dirty-frag.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;install rxrpc /bin/false&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee -a /etc/modprobe.d/dirty-frag.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Actualizar initramfs para evitar carga temprana:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-initramfs -u -k all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Descargar módulos ya cargados:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rmmod esp4 esp6 rxrpc 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Comprobar si siguen cargados:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grep -qE &lt;span class=&#34;s1&#34;&gt;&amp;#39;^(esp4|esp6|rxrpc) &amp;#39;&lt;/span&gt; /proc/modules &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Affected modules are loaded&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Affected modules are NOT loaded&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si un módulo está en uso, puede no descargarse. En ese caso, la regla de bloqueo probablemente solo surtirá efecto tras reiniciar.&lt;/p&gt;
&lt;h2 id=&#34;evalúa-impacto-antes-de-desactivar&#34;&gt;Evalúa impacto antes de desactivar
&lt;/h2&gt;&lt;p&gt;No pegues esos comandos a ciegas. &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt; y funciones xfrm/IPsec pueden usarse en VPN, túneles, redes cifradas, redes Kubernetes/contenedores o configuraciones empresariales. &lt;code&gt;rxrpc&lt;/code&gt; también puede afectar cargas que dependan de ese protocolo.&lt;/p&gt;
&lt;p&gt;Antes de ejecutar en producción, revisa al menos:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lsmod &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -E &lt;span class=&#34;s1&#34;&gt;&amp;#39;^(esp4|esp6|rxrpc|xfrm)&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ip xfrm state
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ip xfrm policy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si dependes de IPsec VPN o funciones relacionadas del kernel, desactivar módulos puede cortar conectividad. En ese caso, es mejor programar parcheo del kernel y ventana de mantenimiento que depender mucho tiempo del bloqueo de módulos.&lt;/p&gt;
&lt;h2 id=&#34;no-omitas-comprobaciones-post-compromiso&#34;&gt;No omitas comprobaciones post-compromiso
&lt;/h2&gt;&lt;p&gt;Microsoft recuerda que la mitigación no necesariamente revierte cambios ya introducidos por explotación exitosa. Si el atacante ya obtuvo root, puede haber dejado persistencia, modificado archivos, alterado logs o accedido a datos de sesión.&lt;/p&gt;
&lt;p&gt;Comprueba al menos:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;journalctl -k --since &lt;span class=&#34;s2&#34;&gt;&amp;#34;24 hours ago&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -Ei &lt;span class=&#34;s2&#34;&gt;&amp;#34;dirty|frag|exploit|segfault|xfrm|rxrpc|esp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;last -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lastlog
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo find /tmp /var/tmp /dev/shm -type f -mtime -3 -ls
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo find / -perm -4000 -type f -mtime -7 -ls 2&amp;gt;/dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;También revisa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lanzamientos anómalos de &lt;code&gt;su&lt;/code&gt;, &lt;code&gt;sudo&lt;/code&gt; o procesos SUID/SGID.&lt;/li&gt;
&lt;li&gt;Ejecutables ELF creados recientemente.&lt;/li&gt;
&lt;li&gt;Archivos PHP, JSP o ASP sospechosos en directorios web.&lt;/li&gt;
&lt;li&gt;Cambios en SSH authorized_keys.&lt;/li&gt;
&lt;li&gt;Persistencia nueva en systemd services, cron o rc.local.&lt;/li&gt;
&lt;li&gt;Contenedores privilegiados o montajes sospechosos en hosts de contenedores.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si sospechas explotación, aísla el host, conserva evidencias, rota credenciales y luego limpia. No asumas que descargar módulos o limpiar cachés hace seguro el sistema.&lt;/p&gt;
&lt;h2 id=&#34;sobre-drop_caches&#34;&gt;Sobre drop_caches
&lt;/h2&gt;&lt;p&gt;Microsoft menciona que en algunos escenarios de verificación de integridad post-explotación puede evaluarse limpiar caché:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /proc/sys/vm/drop_caches
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto no es una corrección de la vulnerabilidad ni un comando de limpieza de incidente. Limpiar cachés puede aumentar I/O de disco y afectar rendimiento en producción. Úsalo solo como paso auxiliar tras entender el impacto. La corrección real sigue siendo parchear, reiniciar, verificar integridad y revisar persistencia.&lt;/p&gt;
&lt;h2 id=&#34;orden-recomendado-de-respuesta&#34;&gt;Orden recomendado de respuesta
&lt;/h2&gt;&lt;p&gt;Para producción, una secuencia razonable es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Inventariar activos Linux y versiones de kernel.&lt;/li&gt;
&lt;li&gt;Priorizar sistemas con SSH expuesto, workloads web, hosts de contenedores y acceso multiusuario.&lt;/li&gt;
&lt;li&gt;Parchear y reiniciar cuanto antes los sistemas que puedan reiniciarse.&lt;/li&gt;
&lt;li&gt;En sistemas que aún no puedan parchearse o reiniciarse, evaluar desactivar &lt;code&gt;esp4&lt;/code&gt;, &lt;code&gt;esp6&lt;/code&gt; y &lt;code&gt;rxrpc&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Aumentar monitorización de &lt;code&gt;su&lt;/code&gt;, SUID/SGID, ELF sospechosos, web shells e indicadores de escape de contenedor.&lt;/li&gt;
&lt;li&gt;Ejecutar comprobaciones post-compromiso y rotar credenciales en hosts sospechosos.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Dirty Frag no es una vulnerabilidad “remote one-click”, pero aumenta mucho el riesgo tras una intrusión. Si un atacante puede ejecutar código local con pocos privilegios, &lt;code&gt;CVE-2026-43284&lt;/code&gt; y la superficie asociada a &lt;code&gt;rxrpc&lt;/code&gt; pueden permitir escalada a root.&lt;/p&gt;
&lt;p&gt;Para administradores, la prioridad no es estudiar PoC. La prioridad es confirmar exposición del kernel, instalar actualizaciones de seguridad de la distribución y reiniciar, evaluar mitigaciones de bloqueo de módulos antes de la ventana de parcheo, e inspeccionar sistemas expuestos o sospechosos en busca de problemas de integridad y persistencia.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-us/security/blog/2026/05/08/active-attack-dirty-frag-linux-vulnerability-expands-post-compromise-risk/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Security Blog: Active attack: Dirty Frag Linux vulnerability expands post-compromise risk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ubuntu.com/security/CVE-2026-43284&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu: CVE-2026-43284&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ubuntu.com/blog/dirty-frag-linux-vulnerability-fixes-available&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu: Dirty Frag Linux kernel local privilege escalation vulnerability mitigations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Guía de Btrfs Scrub: verificación de datos, reparación automática y mantenimiento periódico</title>
        <link>https://www.knightli.com/es/2026/05/09/btrfs-scrub-check-repair-guide/</link>
        <pubDate>Sat, 09 May 2026 07:11:01 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/09/btrfs-scrub-check-repair-guide/</guid>
        <description>&lt;p&gt;Btrfs scrub es una de las funciones de mantenimiento más importantes y más malentendidas de Btrfs. No es fsck en el sentido tradicional. Es una pasada de validación online que lee datos y metadata del filesystem, verifica checksums, superblocks, metadata block headers y errores de lectura del disco, e intenta reparar daños cuando existe una réplica buena conocida.&lt;/p&gt;
&lt;p&gt;Si usas Btrfs en un NAS, servidor doméstico, disco de backup o array multidispositivo, scrub debería formar parte del mantenimiento periódico. Su valor no es “ejecutarlo después del desastre”, sino detectar corrupción silenciosa temprano, mientras los discos aún se pueden leer y todavía existen réplicas buenas.&lt;/p&gt;
&lt;h2 id=&#34;qué-comprueba-scrub&#34;&gt;Qué comprueba scrub
&lt;/h2&gt;&lt;p&gt;Según la documentación oficial de Btrfs, scrub recorre datos y metadata del filesystem y comprueba principalmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Errores de checksum en bloques de datos.&lt;/li&gt;
&lt;li&gt;Errores básicos de super block.&lt;/li&gt;
&lt;li&gt;Errores básicos de metadata block header.&lt;/li&gt;
&lt;li&gt;Errores de lectura de disco.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En filesystems que usan perfiles de block group replicados, como RAID1, scrub sobre un montaje read-write puede reparar automáticamente algunos daños. La reparación no es recuperación mágica. Btrfs copia datos buenos verificados desde otra réplica.&lt;/p&gt;
&lt;p&gt;Este punto es clave: la reparación de scrub depende de que exista una copia buena conocida. En un disco único con una sola copia de los datos, scrub puede detectar errores de checksum, pero normalmente no puede restaurar el contenido original por sí mismo.&lt;/p&gt;
&lt;h2 id=&#34;comandos-comunes&#34;&gt;Comandos comunes
&lt;/h2&gt;&lt;p&gt;Iniciar scrub sobre un punto de montaje:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub start /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ejecutarlo en foreground, útil para observar manualmente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub start -B /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ver estado:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub status /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Cancelar un scrub en ejecución:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub cancel /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Reanudar un scrub interrumpido:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub resume /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si especificas una ruta montada de Btrfs, Btrfs hace scrub de todos los dispositivos del filesystem en paralelo. Si especificas un dispositivo, solo se hace scrub de ese dispositivo. Pero si la réplica del dispositivo indicado no puede leerse o verificarse, Btrfs intenta leer una copia buena desde otro dispositivo.&lt;/p&gt;
&lt;h2 id=&#34;scrub-no-es-fsck&#34;&gt;Scrub no es fsck
&lt;/h2&gt;&lt;p&gt;Este es el error más común. Scrub no es &lt;code&gt;btrfs check&lt;/code&gt; ni un comprobador tradicional de filesystem.&lt;/p&gt;
&lt;p&gt;Scrub puede:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usar checksums para detectar corrupción de datos o metadata.&lt;/li&gt;
&lt;li&gt;Reparar automáticamente cuando existe otra réplica fiable.&lt;/li&gt;
&lt;li&gt;Detectar errores de lectura de disco y algunos errores estructurales básicos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Scrub no puede:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reconstruir datos cuando no existe una réplica buena.&lt;/li&gt;
&lt;li&gt;Sustituir una comprobación offline del filesystem.&lt;/li&gt;
&lt;li&gt;Reparar toda corrupción compleja de estructuras de árbol.&lt;/li&gt;
&lt;li&gt;Garantizar que el contenido a nivel de aplicación sea correcto.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si las estructuras del filesystem están gravemente dañadas, pueden necesitarse herramientas como &lt;code&gt;btrfs check&lt;/code&gt; bajo guía experta. No trates scrub como un comando universal de reparación.&lt;/p&gt;
&lt;h2 id=&#34;riesgos-de-archivos-nocow&#34;&gt;Riesgos de archivos NOCOW
&lt;/h2&gt;&lt;p&gt;La documentación de Btrfs advierte de un punto importante: al establecer el atributo &lt;code&gt;NOCOW&lt;/code&gt; con &lt;code&gt;chattr +C&lt;/code&gt;, la implementación actual también activa implícitamente &lt;code&gt;NODATASUM&lt;/code&gt;. Eso significa que los datos del archivo no tienen checksum.&lt;/p&gt;
&lt;p&gt;Scrub aún puede validar y reparar la metadata de esos archivos, pero no puede validar el contenido de sus datos. Esto es especialmente arriesgado en configuraciones con varias réplicas: si una copia de un archivo NOCOW se daña, Btrfs no tiene checksum de datos para saber qué réplica es buena, así que puede devolver contenido dañado a user space.&lt;/p&gt;
&lt;p&gt;Algunas aplicaciones usan &lt;code&gt;+C&lt;/code&gt; por defecto por rendimiento. systemd journal y algunos escenarios de libvirt storage pool son ejemplos conocidos. Para imágenes de VM, bases de datos y directorios de logs puede tener sentido por rendimiento, pero significa que no puedes esperar que scrub proteja sus datos igual que protege archivos COW normales.&lt;/p&gt;
&lt;h2 id=&#34;read-only-scrub-todavía-puede-escribir&#34;&gt;Read-only scrub todavía puede escribir
&lt;/h2&gt;&lt;p&gt;Otro punto contraintuitivo: ejecutar read-only scrub en un filesystem montado read-write puede causar algunas escrituras.&lt;/p&gt;
&lt;p&gt;La documentación oficial explica que se debe a una limitación de diseño para evitar carreras entre marcar block groups como read-only y escribir de vuelta block group items. En otras palabras, si quieres que scrub no escriba nada, debes ejecutar read-only scrub sobre un filesystem montado read-only. Añadir una opción de read-only scrub sobre un montaje read-write no basta.&lt;/p&gt;
&lt;p&gt;Para usuarios normales, esto significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El scrub online rutinario puede ejecutarse sobre un montaje read-write.&lt;/li&gt;
&lt;li&gt;Para forense, análisis de fallos o comprobaciones muy conservadoras, confirma antes el estado del montaje.&lt;/li&gt;
&lt;li&gt;No interpretes read-only scrub como cero escrituras absolutas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;interrupción-y-reanudación&#34;&gt;Interrupción y reanudación
&lt;/h2&gt;&lt;p&gt;En kernels recientes, scrub puede ser interrumpido por eventos como suspend, hibernate, filesystem freezing, cgroup freezing y pending signals. Tras una interrupción, el scrub en ejecución se cancela, pero puede reanudarse con &lt;code&gt;btrfs scrub resume&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;El estado de scrub se registra en:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/var/lib/btrfs/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Los nombres suelen parecerse a:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scrub.status.UUID
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;scrub.progress.UUID
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El archivo de estado se actualiza periódicamente. Un scrub reanudado continúa desde la última posición guardada, no desde el principio.&lt;/p&gt;
&lt;h2 id=&#34;cada-cuánto-ejecutarlo&#34;&gt;Cada cuánto ejecutarlo
&lt;/h2&gt;&lt;p&gt;La recomendación oficial es una vez al mes. En la práctica, ajusta según la importancia de los datos y el estado de los discos.&lt;/p&gt;
&lt;p&gt;Calendarios comunes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NAS doméstico: una vez al mes.&lt;/li&gt;
&lt;li&gt;Discos de backup: tras sesiones largas conectados o una vez al mes.&lt;/li&gt;
&lt;li&gt;Arrays multidispositivo importantes: una vez al mes, o más a menudo si hace falta.&lt;/li&gt;
&lt;li&gt;Migración a disco nuevo o sospecha de fallo: ejecutar justo después de migrar.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Scrub puede usar alrededor del 80% del ancho de banda del dispositivo en un filesystem inactivo, así que no conviene ejecutarlo en horas pico. En arrays HDD, la latencia puede subir notablemente durante scrub. En SSD también añade read amplification y presión de fondo.&lt;/p&gt;
&lt;h2 id=&#34;limitar-ancho-de-banda-de-scrub&#34;&gt;Limitar ancho de banda de scrub
&lt;/h2&gt;&lt;p&gt;Antes se usaba &lt;code&gt;ionice&lt;/code&gt; para reducir el impacto de scrub sobre I/O foreground. La documentación oficial advierte que no todos los I/O schedulers lo soportan igual. CFQ ya no está disponible de forma general. BFQ soporta el comportamiento de prioridad relacionado, pero conviene entenderlo antes de usarlo. Para schedulers comunes como &lt;code&gt;mq-deadline&lt;/code&gt;, suele ser mejor usar cgroup2 I/O controller o límites específicos de Btrfs.&lt;/p&gt;
&lt;p&gt;Ejemplo con systemd para limitar ancho de banda de lectura:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemd-run -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;IOReadBandwidthMax=/dev/sdx 10M&amp;#34;&lt;/span&gt; btrfs scrub start -B /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Desde Linux 5.14, Btrfs puede establecer límites de scrub por dispositivo mediante sysfs:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; 100m &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /sys/fs/btrfs/FSID/devinfo/DEVID/scrub_speed_max
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Mostrar límites actuales:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub limit /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esta configuración no es persistente y desaparece al desmontar el filesystem. Sustituye &lt;code&gt;FSID&lt;/code&gt; y &lt;code&gt;DEVID&lt;/code&gt; por los valores reales de tu sistema. Puedes empezar comprobando:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs filesystem show /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls /sys/fs/btrfs/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;flujo-práctico-de-mantenimiento&#34;&gt;Flujo práctico de mantenimiento
&lt;/h2&gt;&lt;p&gt;Un flujo razonable de mantenimiento Btrfs puede ser:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub start -B /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs scrub status /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo btrfs device stats /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dmesg -T &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -Ei &lt;span class=&#34;s2&#34;&gt;&amp;#34;btrfs|checksum|i/o error|read error&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si scrub informa corrected errors, Btrfs reparó datos desde una réplica buena, pero no debes ignorarlo. Sigue revisando SMART, cables, alimentación, controladores y Btrfs device stats.&lt;/p&gt;
&lt;p&gt;Si scrub informa uncorrectable errors, Btrfs no encontró una copia buena. Haz backup cuanto antes de lo que aún pueda leerse, identifica archivos o dispositivos afectados, y reemplaza hardware o restaura desde backup según corresponda.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Btrfs scrub tiene un papel claro: verificación online de datos y reparación desde réplicas. No es fsck y no es backup.&lt;/p&gt;
&lt;p&gt;Funciona mejor en filesystems Btrfs con checksums y réplicas redundantes, donde puede encontrar corrupción silenciosa de forma periódica y restaurar desde copias buenas. No puede proteger datos de archivos NOCOW sin checksum, ni recuperar contenido dañado si no hay una réplica buena.&lt;/p&gt;
&lt;p&gt;Si guardas datos importantes en Btrfs, ejecuta scrub mensualmente y úsalo junto con SMART, device stats, backups y alertas. La seguridad de datos fiable viene de checksums, redundancia, monitorización y backups trabajando juntos, no de un solo comando.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://btrfs.readthedocs.io/en/latest/Scrub.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Documentación oficial de Btrfs: Scrub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>¿F2FS congela un HC620 SMR? Guía de diagnóstico para discos SMR en Linux</title>
        <link>https://www.knightli.com/es/2026/05/08/hc620-smr-f2fs-io-wait-freeze/</link>
        <pubDate>Fri, 08 May 2026 22:34:39 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/08/hc620-smr-f2fs-io-wait-freeze/</guid>
        <description>&lt;p&gt;Cuando un HC620 de helio con SMR se usa con F2FS, síntomas como congelamientos del sistema, aplicaciones sin respuesta y &lt;code&gt;iowait&lt;/code&gt; alto durante mucho tiempo normalmente no se deben a una sola opción mal configurada. Son el resultado de un choque entre las características del dispositivo y la política del filesystem.&lt;/p&gt;
&lt;p&gt;Western Digital Ultrastar DC HC620 es un disco Host-managed SMR. Encaja mejor con escrituras secuenciales, cargas zoned-aware y stacks de software que entienden las restricciones del dispositivo. F2FS es un filesystem log-structured diseñado para flash. Aunque puede reorganizar muchas escrituras aleatorias como escrituras secuenciales, la falta de espacio libre, el GC frecuente o las actualizaciones intensas de metadata pueden llevar a un disco mecánico SMR a ciclos internos largos de mantenimiento.&lt;/p&gt;
&lt;h2 id=&#34;primero-confirma-si-es-este-problema&#34;&gt;Primero confirma si es este problema
&lt;/h2&gt;&lt;p&gt;Empieza con estas comprobaciones:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iostat -x &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;iotop -oPa
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dmesg -T &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -Ei &lt;span class=&#34;s2&#34;&gt;&amp;#34;f2fs|blk|zoned|reset|timeout|I/O error&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si &lt;code&gt;%util&lt;/code&gt; se mantiene cerca de 100%, &lt;code&gt;await&lt;/code&gt; es alto y muchos procesos quedan en estado &lt;code&gt;D&lt;/code&gt;, el cuello de botella probablemente está en el I/O del dispositivo de bloques.&lt;/p&gt;
&lt;p&gt;Luego confirma si el disco aparece como dispositivo zoned:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lsblk -o NAME,MODEL,SIZE,ROTA,ZONED,SCHED,MOUNTPOINTS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /sys/block/sdX/queue/zoned
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si es Host-managed SMR, un filesystem normal y cargas con escrituras aleatorias pueden rendir muy mal. A diferencia de muchos SMR de escritorio gestionados por el propio disco, esta clase depende más de que el software del host entienda las reglas de escritura.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-f2fs-puede-amplificar-el-bloqueo&#34;&gt;Por qué F2FS puede amplificar el bloqueo
&lt;/h2&gt;&lt;p&gt;El problema de SMR es que no puede sobrescribir ubicaciones arbitrarias tan libremente como un disco CMR. Las pistas se superponen para aumentar capacidad. Cuando las escrituras se vuelven aleatorias, las sobrescrituras son frecuentes o la caché se agota, el disco necesita mover y reorganizar datos.&lt;/p&gt;
&lt;p&gt;F2FS fue creado para NAND flash. Usa escrituras log-structured y recupera espacio mediante segment cleaning y garbage collection. En SSD esto suele ser natural porque no hay seek mecánico. En discos mecánicos, especialmente SMR, las lecturas y escrituras generadas por GC pueden convertirse en tail latency severa.&lt;/p&gt;
&lt;p&gt;Cuando background GC de F2FS, escrituras foreground, checkpoints, actualizaciones de metadata y la limpieza SMR interna del disco se superponen, la cola de I/O puede permanecer saturada durante mucho tiempo. En espacio de usuario, copiar archivos, borrar directorios, descargar, descomprimir o escribir en bases de datos puede hacer que el sistema parezca congelado.&lt;/p&gt;
&lt;h2 id=&#34;empieza-con-opciones-de-montaje-conservadoras&#34;&gt;Empieza con opciones de montaje conservadoras
&lt;/h2&gt;&lt;p&gt;Si no puedes migrar inmediatamente, ajusta primero &lt;code&gt;/etc/fstab&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;UUID=xxxx  /data  f2fs  defaults,nodiscard,active_logs=2,gc_merge,flush_merge,lazytime  0  0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Qué hace cada opción:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nodiscard&lt;/code&gt;: desactiva discard en tiempo real. Los discos mecánicos normalmente no necesitan TRIM/discard frecuente como un SSD.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;active_logs=2&lt;/code&gt;: F2FS admite 2, 4 o 6 active logs; el valor por defecto suele ser 6. Bajar a 2 puede reducir presión de seek por logs concurrentes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gc_merge&lt;/code&gt;: permite que el hilo de background GC gestione algunas peticiones de foreground GC, reduciendo bloqueos cuando un proceso dispara GC lento.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;flush_merge&lt;/code&gt;: fusiona peticiones de cache flush, útil si el dispositivo maneja flush lentamente.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lazytime&lt;/code&gt;: reduce escrituras de metadata causadas por algunas actualizaciones de tiempo de acceso.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No trates &lt;code&gt;checkpoint=disable&lt;/code&gt; como una opción normal de rendimiento. Puede reducir presión de checkpoint, pero aumenta el riesgo tras cortes de energía o fallos. La documentación del kernel también indica que el filesystem sigue necesitando GC mientras checkpoint está desactivado para garantizar espacio utilizable. Si no entiendes bien el coste, no lo uses como solución permanente.&lt;/p&gt;
&lt;h2 id=&#34;ajusta-el-io-scheduler&#34;&gt;Ajusta el I/O scheduler
&lt;/h2&gt;&lt;p&gt;Los discos mecánicos y SMR suelen necesitar fusión de peticiones y control de latencia. Mira primero el scheduler actual:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat /sys/block/sdX/queue/scheduler
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Puedes probar &lt;code&gt;mq-deadline&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; mq-deadline &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /sys/block/sdX/queue/scheduler
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Para uso de escritorio, también merece probar &lt;code&gt;bfq&lt;/code&gt;. No mires solo throughput secuencial. Observa si bajan los bloqueos, si &lt;code&gt;await&lt;/code&gt; mejora y si el sistema se siente más estable.&lt;/p&gt;
&lt;h2 id=&#34;limita-el-background-gc-de-f2fs&#34;&gt;Limita el background GC de F2FS
&lt;/h2&gt;&lt;p&gt;La ruta sysfs de F2FS depende del nombre real del dispositivo. Compruébalo primero:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls /sys/fs/f2fs/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Luego ajusta el intervalo de GC para el dispositivo correspondiente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;60000&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /sys/fs/f2fs/sdX/gc_min_sleep_time
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;120000&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /sys/fs/f2fs/sdX/gc_max_sleep_time
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Aquí &lt;code&gt;sdX&lt;/code&gt; es solo un ejemplo. El nombre real puede ser &lt;code&gt;sda1&lt;/code&gt;, &lt;code&gt;dm-0&lt;/code&gt; u otro. Aumentar GC sleep time reduce la frecuencia con la que background GC compite por I/O, pero la recuperación de espacio será más lenta. Si el disco está casi lleno, puede volver a dispararse foreground GC, así que conviene dejar espacio libre suficiente.&lt;/p&gt;
&lt;h2 id=&#34;mejores-opciones-a-largo-plazo&#34;&gt;Mejores opciones a largo plazo
&lt;/h2&gt;&lt;p&gt;Si el disco guarda datos importantes, la opción más segura a largo plazo es hacer backup y cambiar de filesystem, o usar un disco más adecuado.&lt;/p&gt;
&lt;p&gt;Para discos mecánicos grandes, considera:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XFS: adecuado para archivos grandes, discos de backup, bibliotecas multimedia, archivos y escrituras secuenciales.&lt;/li&gt;
&lt;li&gt;EXT4: compatible, estable y con mucha documentación de diagnóstico.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si el disco es Host-managed SMR, confirma también que kernel, controlador, filesystem y aplicaciones soportan realmente zoned block devices. De lo contrario, usarlo como un disco normal de escrituras aleatorias puede provocar bloqueos largos e impredecibles.&lt;/p&gt;
&lt;h2 id=&#34;consejos-prácticos&#34;&gt;Consejos prácticos
&lt;/h2&gt;&lt;p&gt;Este tipo de disco encaja mejor con datos fríos, archivos, backups, multimedia y escrituras secuenciales. No es buena opción para cachés de descarga, imágenes de contenedores, discos de VM, bases de datos, descompresión frecuente o escrituras aleatorias de archivos pequeños.&lt;/p&gt;
&lt;p&gt;Si debes seguir usando F2FS, al menos haz esto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desactiva discard en tiempo real.&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;active_logs=2&lt;/code&gt; para reducir logs concurrentes.&lt;/li&gt;
&lt;li&gt;Activa &lt;code&gt;gc_merge&lt;/code&gt; y &lt;code&gt;flush_merge&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Mantén bastante espacio libre.&lt;/li&gt;
&lt;li&gt;Evita colocar descargas, bases de datos e imágenes de VM en este disco.&lt;/li&gt;
&lt;li&gt;Observa &lt;code&gt;iostat -x 1&lt;/code&gt;, no solo la velocidad media.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En resumen, los congelamientos de HC620 + F2FS aparecen cuando se combinan las restricciones de escritura de SMR, el GC de F2FS y la tail latency de un disco mecánico. La mitigación a corto plazo es ajustar opciones de montaje, scheduler y background GC. La solución a largo plazo es migrar a XFS/EXT4 o usar el SMR solo para cargas secuenciales de archivo.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.kernel.org/filesystems/f2fs.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Linux Kernel Documentation: F2FS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/data-center-drives/ultrastar-dc-hc600-series/data-sheet-ultrastar-dc-hc620.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Western Digital Ultrastar DC HC620 Data Sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Hoja de ruta de Canonical para Ubuntu AI: inferencia local primero, sin integración forzada</title>
        <link>https://www.knightli.com/es/2026/05/08/ubuntu-ai-roadmap-local-inference-opt-in/</link>
        <pubDate>Fri, 08 May 2026 22:23:46 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/08/ubuntu-ai-roadmap-local-inference-opt-in/</guid>
        <description>&lt;p&gt;La hoja de ruta de Canonical para AI en Ubuntu no destaca por “meter AI en todas partes”, sino por intentar una vía más prudente: funciones por capas, desactivadas por defecto, activadas solo cuando el usuario lo elige explícitamente y con inferencia local como prioridad.&lt;/p&gt;
&lt;p&gt;Esto contrasta con parte de la polémica alrededor de la AI a nivel de sistema en Windows y macOS. Ubuntu no apunta a una capa global de AI imposible de evitar ni a un único interruptor general. La idea es separar las capacidades de AI en herramientas relativamente independientes, para que el usuario decida si las instala, si las activa, qué modelo usa y si los datos salen de la máquina.&lt;/p&gt;
&lt;h2 id=&#34;primero-la-fecha-no-es-ubuntu-2604-lts&#34;&gt;Primero, la fecha: no es Ubuntu 26.04 LTS
&lt;/h2&gt;&lt;p&gt;La hoja de ruta apunta sobre todo a Ubuntu 26.10 “Questing Quokka”, previsto para el 9 de octubre de 2026. Canonical planea introducir algunas herramientas de AI como previews experimentales, no como funciones por defecto dentro de Ubuntu 26.04 LTS.&lt;/p&gt;
&lt;p&gt;Este punto es clave. Las versiones LTS priorizan estabilidad, despliegues empresariales y mantenimiento de seguridad. No sería razonable convertir funciones de AI de escritorio aún exploratorias en experiencia predeterminada de una LTS. Lo más lógico es probarlas primero en una versión regular como 26.10, recibir feedback de desarrolladores y usuarios tempranos, y decidir después qué debe llegar a futuras versiones de soporte prolongado.&lt;/p&gt;
&lt;h2 id=&#34;inferencia-local-primero-la-nube-no-es-la-opción-por-defecto&#34;&gt;Inferencia local primero; la nube no es la opción por defecto
&lt;/h2&gt;&lt;p&gt;Uno de los principios centrales es local inference first: por defecto, la inferencia debe ejecutarse en la máquina del usuario. Las peticiones solo deberían salir del equipo si el usuario configura explícitamente un proveedor cloud, un servidor propio o un servicio empresarial de modelos.&lt;/p&gt;
&lt;p&gt;La razón es práctica. La AI a nivel de sistema puede tocar salidas de comandos, logs, rutas de archivos, errores y configuración del sistema. Enviar esa información automáticamente a la nube, aunque sea para explicar un error, crea riesgos claros de privacidad y cumplimiento.&lt;/p&gt;
&lt;p&gt;Por eso, la dirección de Ubuntu no parece ser una puerta de entrada a AI en la nube, sino una capa de inferencia intercambiable. El usuario puede elegir un modelo local, un servicio interno de la empresa o, si lo necesita, un servicio gestionado por Canonical. Lo importante es no quedar atado a un solo proveedor de modelos.&lt;/p&gt;
&lt;h2 id=&#34;ai-cli-empezar-por-la-terminal&#34;&gt;AI CLI: empezar por la terminal
&lt;/h2&gt;&lt;p&gt;Una de las primeras funciones prácticas podría ser AI Command Line Helper, conocido como &lt;code&gt;ai-cli&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;No pretende reemplazar el shell ni ejecutar comandos peligrosos automáticamente. Su función es ayudar a entender comandos, logs, unidades systemd, salidas de error y estado del sistema. Por ejemplo, puede explicar por qué falló un servicio o aclarar el significado de una opción de línea de comandos.&lt;/p&gt;
&lt;p&gt;Este punto encaja bien con la base de usuarios de Ubuntu. Muchos usuarios de Ubuntu Desktop y Server ya trabajan en la terminal. En vez de empezar con una ventana de chat llamativa, tiene sentido ubicar la AI en diagnóstico de errores, explicación de comandos y ayuda operativa.&lt;/p&gt;
&lt;p&gt;Pero los límites de seguridad deben ser claros. Los logs pueden contener tokens, direcciones internas, nombres de usuario, rutas, fragmentos de claves o información de negocio. Aunque la inferencia local sea el valor por defecto, la herramienta debería animar a redactar datos sensibles. Si el usuario elige un backend cloud, debe quedar claro qué se enviará.&lt;/p&gt;
&lt;h2 id=&#34;settings-agent-configuración-del-sistema-con-lenguaje-natural&#34;&gt;Settings Agent: configuración del sistema con lenguaje natural
&lt;/h2&gt;&lt;p&gt;Otra dirección es Settings Agent, una forma de consultar o cambiar configuración del sistema con lenguaje natural.&lt;/p&gt;
&lt;p&gt;Suena sencillo, pero es fácil hacerlo mal. Un Settings Agent maduro no debería leer la pantalla, adivinar botones y simular clics. Debería usar APIs internas controladas: qué puede leer, qué puede modificar, cuándo requiere confirmación y cómo revierte errores.&lt;/p&gt;
&lt;p&gt;Por eso parece más una línea de trabajo posterior a 26.10 que una función completa inmediata. Si se hace bien, puede reducir mucho la fricción para configurar Linux de escritorio. Si se hace de forma agresiva, puede convertirse en un nuevo riesgo de seguridad.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-no-hace-falta-empezar-por-un-interruptor-total-de-ai&#34;&gt;Por qué no hace falta empezar por un “interruptor total” de AI
&lt;/h2&gt;&lt;p&gt;Muchos usuarios temen que, cuando un sistema operativo incorpora AI, esta aparezca por todas partes y sea difícil desactivarla por completo. Por eso surge una pregunta natural: ¿debería Ubuntu tener un kill switch global para AI?&lt;/p&gt;
&lt;p&gt;La respuesta de Canonical parece ser que, si las funciones de AI son opt-in, están separadas por capas y se pueden instalar y configurar de forma independiente, un interruptor global no es la primera prioridad. Es decir, el diseño intenta evitar el patrón de “activado por defecto, integrado profundamente y luego el usuario debe desactivarlo”.&lt;/p&gt;
&lt;p&gt;Que eso sea suficiente dependerá de la implementación. Si las herramientas de AI no se activan por defecto, no se conectan remotamente por defecto, no recopilan datos automáticamente y cada función tiene controles claros, el usuario no debería tener que buscar opciones ocultas para apagar AI.&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-para-desarrolladores-y-empresas&#34;&gt;Qué significa para desarrolladores y empresas
&lt;/h2&gt;&lt;p&gt;Para desarrolladores, el valor práctico de herramientas como AI CLI es reducir el tiempo dedicado a documentación, lectura de logs y diagnóstico de problemas del sistema. No sustituye el criterio técnico; automatiza muchas tareas de “ayúdame a entender esta salida”.&lt;/p&gt;
&lt;p&gt;Para empresas, la inferencia local y los backends intercambiables son todavía más importantes. Muchas organizaciones no pueden enviar código fuente, logs, datos de clientes o información de infraestructura a servicios públicos de modelos. Si Ubuntu conecta la AI de sistema con modelos locales, servicios privados de inferencia y permisos empresariales, puede ofrecer asistencia controlable en entornos regulados.&lt;/p&gt;
&lt;p&gt;También es una oportunidad para el escritorio y la estación de trabajo Linux. Windows y macOS pueden convertir la AI en parte del ecosistema del proveedor. La ventaja de Ubuntu está en ser abierto, auditable, reemplazable y autohospedable. Si Canonical mantiene esos principios, la AI puede reforzar la experiencia profesional en Linux.&lt;/p&gt;
&lt;h2 id=&#34;no-conviene-sobreinterpretar&#34;&gt;No conviene sobreinterpretar
&lt;/h2&gt;&lt;p&gt;Todavía es pronto para afirmar que Ubuntu vaya a preinstalar un modelo pequeño concreto, que Ubuntu 26.04 incluya un modo de auditoría de AI o que exista un comando fijo llamado &lt;code&gt;ubuntu-ai&lt;/code&gt;. Lo más claro en la información pública es la dirección, no la forma final del producto.&lt;/p&gt;
&lt;p&gt;La lectura más prudente es esta: Canonical está preparando un marco de herramientas AI a nivel de sistema para Ubuntu, empezando por ayuda en la línea de comandos, asistencia de configuración, inferencia local y elección de backend. La postura por defecto es que elija el usuario, no el sistema.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Lo interesante de la hoja de ruta de AI de Ubuntu no es que Ubuntu “se sume a la ola de AI”, sino que intenta definir una forma más contenida de integrar AI en un sistema operativo open source: la inteligencia puede ser infraestructura, pero privacidad, control y elección del usuario deben ir primero.&lt;/p&gt;
&lt;p&gt;Si las funciones experimentales de 26.10 cumplen esos principios, Ubuntu puede seguir un camino distinto al de los sistemas de consumo: AI no como un espacio inevitable dentro del sistema, sino como una capa de productividad seleccionable, reemplazable y auditable.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.tomshardware.com/software/operating-systems/ubuntus-ai-roadmap-revealed-universal-ai-kill-switch-and-forced-ai-integration-are-not-part-of-the-plan-cloud-tracking-local-inference-and-agentic-system-tools-take-center-stage&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tom&amp;rsquo;s Hardware: Ubuntu&amp;rsquo;s AI roadmap revealed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://discourse.ubuntu.com/t/the-future-of-ai-in-ubuntu/81130&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ubuntu Discourse: The future of AI in Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Como elegir una distribucion Linux de escritorio en 2026: comparativa entre Ubuntu, Deepin/UOS, Linux Mint y Fedora</title>
        <link>https://www.knightli.com/es/2026/05/07/linux-desktop-distro-comparison-2026/</link>
        <pubDate>Thu, 07 May 2026 21:17:11 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/07/linux-desktop-distro-comparison-2026/</guid>
        <description>&lt;p&gt;Al elegir una distribucion Linux de escritorio en 2026, lo importante no es cual es la mas &amp;ldquo;pura&amp;rdquo; ni la mas &amp;ldquo;avanzada&amp;rdquo;, sino cual puedes usar todos los dias con comodidad.&lt;/p&gt;
&lt;p&gt;Linux de escritorio es distinto de Linux para servidores. En servidores pesan mas el ciclo de vida, la estabilidad de paquetes y las normas de operacion. En el escritorio tambien importan la interfaz, los controladores, la tienda de aplicaciones, los metodos de entrada, el software de oficina, la tarjeta grafica, Bluetooth, el audio, el panel tactil, los monitores externos y todas esas pequenas molestias del uso diario.&lt;/p&gt;
&lt;p&gt;Si quieres pelearte menos con el sistema, empieza mirando Ubuntu, Linux Mint y Deepin/UOS. Si eres desarrollador y aceptas usar una pila de software mas nueva con un ritmo tecnologico mas rapido, Fedora merece atencion.&lt;/p&gt;
&lt;h2 id=&#34;conclusion-rapida&#34;&gt;Conclusion rapida
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Distribucion&lt;/th&gt;
          &lt;th&gt;Mas adecuada para&lt;/th&gt;
          &lt;th&gt;Fortalezas principales&lt;/th&gt;
          &lt;th&gt;Puntos a tener en cuenta&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Ubuntu 26.04 LTS&lt;/td&gt;
          &lt;td&gt;Principiantes, desarrolladores, equipo principal&lt;/td&gt;
          &lt;td&gt;Mucha documentacion, ecosistema completo, buen soporte de hardware y software&lt;/td&gt;
          &lt;td&gt;GNOME por defecto requiere adaptacion; la estrategia de Snap no gusta a todos&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Deepin / UOS&lt;/td&gt;
          &lt;td&gt;Usuarios chinos, entornos localizados, quienes valoran la experiencia visual&lt;/td&gt;
          &lt;td&gt;Bonita y facil de usar, buena localizacion china, fuerte compatibilidad con software domestico y empresarial&lt;/td&gt;
          &lt;td&gt;La edicion comunitaria y la comercial tienen posiciones distintas; conviene entender su estrategia de actualizaciones&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Linux Mint&lt;/td&gt;
          &lt;td&gt;Migracion de Windows a Linux, usuarios que priorizan estabilidad&lt;/td&gt;
          &lt;td&gt;Interfaz familiar, muy facil de usar, escritorio Cinnamon estable&lt;/td&gt;
          &lt;td&gt;Ritmo mas lento en tecnologias nuevas; la pila por defecto no es agresiva&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Fedora&lt;/td&gt;
          &lt;td&gt;Desarrolladores y usuarios que quieren tecnologia Linux reciente&lt;/td&gt;
          &lt;td&gt;Kernel nuevo, GNOME nuevo, adopcion rapida de nuevas tecnologias&lt;/td&gt;
          &lt;td&gt;Actualizaciones frecuentes; menos comoda que una LTS para usuarios conservadores&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;En una frase:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Principiantes y escritorio principal&lt;/strong&gt;: Ubuntu 26.04 LTS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Experiencia china y localizacion&lt;/strong&gt;: Deepin / UOS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Migracion suave desde Windows&lt;/strong&gt;: Linux Mint.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desarrolladores y exploracion de tecnologias nuevas&lt;/strong&gt;: Fedora.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ubuntu-2604-lts-el-escritorio-todoterreno&#34;&gt;Ubuntu 26.04 LTS: el escritorio todoterreno
&lt;/h2&gt;&lt;p&gt;Ubuntu 26.04 LTS &lt;code&gt;Resolute Raccoon&lt;/code&gt; se publico en abril de 2026. Como version LTS, es adecuada para un escritorio principal de largo plazo.&lt;/p&gt;
&lt;p&gt;La ventaja de Ubuntu es muy directa: tiene mas documentacion, mas tutoriales y es mas facil encontrar respuestas cuando algo falla. Si quieres instalar VS Code, Docker, controladores NVIDIA, Steam, Chrome, Slack, JetBrains, CUDA, Python o Node.js, Ubuntu suele ser uno de los objetivos prioritarios para fabricantes y comunidad.&lt;/p&gt;
&lt;p&gt;Ubuntu 26.04 LTS es adecuada para:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;quienes usan Linux de escritorio en serio por primera vez;&lt;/li&gt;
&lt;li&gt;usuarios que quieren un sistema principal de largo plazo;&lt;/li&gt;
&lt;li&gt;desarrolladores que necesitan un entorno Linux estable;&lt;/li&gt;
&lt;li&gt;usuarios que necesitan muchos tutoriales, controladores y soporte de software comercial;&lt;/li&gt;
&lt;li&gt;quienes quieren conectar el ecosistema de escritorio, servidor y WSL.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sus fortalezas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ciclo de vida LTS largo;&lt;/li&gt;
&lt;li&gt;imagenes oficiales y documentacion maduras;&lt;/li&gt;
&lt;li&gt;escritorio GNOME moderno, con buena experiencia en panel tactil y multiples monitores;&lt;/li&gt;
&lt;li&gt;ecosistema completo de controladores, nube, contenedores y herramientas de desarrollo;&lt;/li&gt;
&lt;li&gt;bajo coste de busqueda cuando aparece un problema.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El punto principal es que Ubuntu usa GNOME por defecto, y su logica no es igual a la de Windows. Los principiantes pueden necesitar acostumbrarse a la vista de actividades, el Dock, los espacios de trabajo y el lanzador de aplicaciones. Ubuntu tambien sigue impulsando Snap, y algunos usuarios no aprecian su velocidad de arranque, su modelo de gestion de paquetes o su estrategia de ecosistema.&lt;/p&gt;
&lt;p&gt;Mi lectura: si no sabes que distribucion de escritorio elegir, Ubuntu 26.04 LTS sigue siendo la respuesta por defecto mas segura. No es la mejor en cada aspecto aislado, pero su puntuacion global es la mas alta.&lt;/p&gt;
&lt;h2 id=&#34;deepin--uos-experiencia-de-escritorio-china-y-compatibilidad-localizada&#34;&gt;Deepin / UOS: experiencia de escritorio china y compatibilidad localizada
&lt;/h2&gt;&lt;p&gt;La fortaleza de Deepin y UOS es que entienden mejor a los usuarios chinos de escritorio.&lt;/p&gt;
&lt;p&gt;Deepin 25 se publico en 2025 y sigue recibiendo actualizaciones en 2026 mediante versiones como deepin 25.1. Las notas oficiales de deepin 25 destacan mejoras del escritorio DDE, UOS AI, el sistema inmutable Solid, la compatibilidad de aplicaciones Linyaps, el subsistema Distrobox y la vista previa del compositor de ventanas Treeland.&lt;/p&gt;
&lt;p&gt;Estas direcciones muestran que Deepin/UOS no se limita a crear una piel bonita para Linux. Intenta resolver dolores historicos del escritorio chino:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;instalacion de aplicaciones y conflictos de dependencias;&lt;/li&gt;
&lt;li&gt;compatibilidad con software domestico;&lt;/li&gt;
&lt;li&gt;calidad visual y facilidad de uso del escritorio;&lt;/li&gt;
&lt;li&gt;rollback cuando fallan las actualizaciones del sistema;&lt;/li&gt;
&lt;li&gt;entrada en chino, trabajo de oficina y ecosistema de software empresarial;&lt;/li&gt;
&lt;li&gt;compatibilidad y transicion desde aplicaciones Windows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Deepin / UOS es adecuado para:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;usuarios que valoran mas la interfaz china, los metodos de entrada, el trabajo de oficina y la localizacion;&lt;/li&gt;
&lt;li&gt;quienes quieren un escritorio Linux bonito y listo para usar;&lt;/li&gt;
&lt;li&gt;personas que trabajan en entornos de hardware y software localizados;&lt;/li&gt;
&lt;li&gt;usuarios que necesitan software de oficina empresarial, software domestico, CPU domesticas o certificaciones de compatibilidad;&lt;/li&gt;
&lt;li&gt;quienes no quieren configurar GNOME/KDE desde cero.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Fortalezas de Deepin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;interfaz DDE unificada y cuidada;&lt;/li&gt;
&lt;li&gt;mejores detalles para usuarios chinos;&lt;/li&gt;
&lt;li&gt;tienda de aplicaciones y configuracion del sistema mas cercanas a los habitos de usuarios comunes;&lt;/li&gt;
&lt;li&gt;Linyaps, Distrobox y enfoques similares ayudan a reducir problemas de compatibilidad de aplicaciones Linux;&lt;/li&gt;
&lt;li&gt;la edicion comercial UOS tiene valor practico en escenarios de localizacion y empresa.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La advertencia clave es que la edicion comunitaria de Deepin y la edicion comercial de UOS no tienen exactamente el mismo posicionamiento. Deepin encaja mejor con la experiencia personal y los usuarios de comunidad. UOS se orienta mas a gobierno, empresa, localizacion, servicios comerciales y entornos certificados. Para entornos de oficina en produccion, hay que revisar hardware, software y requisitos de la organizacion, no solo la interfaz.&lt;/p&gt;
&lt;p&gt;Mi lectura: si eres usuario chino y te importan especialmente la apariencia, el metodo de entrada, el software domestico y la experiencia de oficina, Deepin/UOS resulta atractivo. Pero si eres un desarrollador intensivo y dependes del ecosistema Linux upstream mas estandar, Ubuntu o Fedora pueden sentirse mas fluidos.&lt;/p&gt;
&lt;h2 id=&#34;linux-mint-lo-mas-parecido-a-windows-y-lo-mas-comodo&#34;&gt;Linux Mint: lo mas parecido a Windows y lo mas comodo
&lt;/h2&gt;&lt;p&gt;La posicion de Linux Mint siempre ha sido estable: hacer que Linux sea facil para usuarios normales.&lt;/p&gt;
&lt;p&gt;En 2026, la linea principal de Linux Mint sigue alrededor de la serie 22.x y se basa en Ubuntu 24.04 LTS. Linux Mint 22.3 &lt;code&gt;Zena&lt;/code&gt; se publico a comienzos de 2026. No es una vitrina de la tecnologia mas nueva, sino un sistema de escritorio estable, familiar y con bajo coste de aprendizaje.&lt;/p&gt;
&lt;p&gt;Linux Mint es especialmente adecuado para usuarios de Windows que migran a Linux, sobre todo con el escritorio Cinnamon:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;menu en la esquina inferior izquierda;&lt;/li&gt;
&lt;li&gt;barra de tareas;&lt;/li&gt;
&lt;li&gt;bandeja del sistema;&lt;/li&gt;
&lt;li&gt;logica familiar para minimizar y maximizar ventanas;&lt;/li&gt;
&lt;li&gt;panel de configuracion;&lt;/li&gt;
&lt;li&gt;gestor de archivos;&lt;/li&gt;
&lt;li&gt;gestor de actualizaciones.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos detalles hacen que se parezca mucho a un escritorio Windows tradicional. Para usuarios que no quieren adaptarse al flujo de GNOME, Linux Mint es mas facil de empezar que Ubuntu.&lt;/p&gt;
&lt;p&gt;Linux Mint es adecuado para:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;usuarios que migran de Windows a Linux;&lt;/li&gt;
&lt;li&gt;instalar Linux para padres, familiares o usuarios no tecnicos;&lt;/li&gt;
&lt;li&gt;quienes quieren un escritorio estable sin perseguir tecnologias nuevas;&lt;/li&gt;
&lt;li&gt;uso de navegador, oficina, video, gestion de archivos y desarrollo ligero;&lt;/li&gt;
&lt;li&gt;personas a las que no les gusta GNOME y no quieren ajustar KDE.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sus fortalezas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;escritorio Cinnamon intuitivo;&lt;/li&gt;
&lt;li&gt;gestor de actualizaciones amable;&lt;/li&gt;
&lt;li&gt;sistema conservador y estable;&lt;/li&gt;
&lt;li&gt;mejor trato a equipos antiguos;&lt;/li&gt;
&lt;li&gt;mucha documentacion de comunidad y relativamente pocas sorpresas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El punto clave es que Linux Mint no prioriza tecnologias nuevas. Wayland, PipeWire, los GNOME/KDE mas recientes, los kernels mas nuevos y Mesa de ultima generacion normalmente no llegan primero alli. Su objetivo es &amp;ldquo;trabajar de forma fiable hoy&amp;rdquo;, no &amp;ldquo;usar inmediatamente la tecnologia Linux de escritorio mas nueva&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Mi lectura: si quieres convertir un portatil Windows en Linux sin explicar demasiados conceptos, Linux Mint es una de las opciones mas seguras. No tiene el ecosistema comercial de Ubuntu ni la frescura de Fedora, pero la experiencia diaria es muy solida.&lt;/p&gt;
&lt;h2 id=&#34;fedora-desarrolladores-y-tecnologias-nuevas-primero&#34;&gt;Fedora: desarrolladores y tecnologias nuevas primero
&lt;/h2&gt;&lt;p&gt;Fedora es una de las primeras lineas de la tecnologia Linux de escritorio.&lt;/p&gt;
&lt;p&gt;En mayo de 2026, la version principal actual es Fedora Linux 44. Fedora Workstation lleva mucho tiempo siendo una de las distribuciones donde GNOME, Wayland, PipeWire, Mesa, el kernel, systemd y otras tecnologias aterrizan pronto.&lt;/p&gt;
&lt;p&gt;Fedora es adecuada para:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;desarrolladores Linux;&lt;/li&gt;
&lt;li&gt;usuarios de GNOME;&lt;/li&gt;
&lt;li&gt;quienes quieren kernels, Mesa, compiladores y cadenas de herramientas nuevos antes;&lt;/li&gt;
&lt;li&gt;usuarios que quieren probar pilas modernas de escritorio Linux como Wayland, PipeWire y Flatpak;&lt;/li&gt;
&lt;li&gt;quienes no temen actualizar cada seis meses.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Fortalezas de Fedora:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;adopcion rapida de tecnologias nuevas;&lt;/li&gt;
&lt;li&gt;sistema por defecto relativamente limpio;&lt;/li&gt;
&lt;li&gt;experiencia GNOME cercana a upstream;&lt;/li&gt;
&lt;li&gt;cadena de desarrollo mas reciente;&lt;/li&gt;
&lt;li&gt;integracion estrecha con Flatpak y el ecosistema de escritorio open source;&lt;/li&gt;
&lt;li&gt;soporte generalmente activo para hardware moderno.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sus advertencias tambien son claras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ciclo de vida mas corto y necesidad de actualizar con regularidad;&lt;/li&gt;
&lt;li&gt;no es ideal para personas que no quieren mantener el sistema en absoluto;&lt;/li&gt;
&lt;li&gt;NVIDIA, codecs propietarios y parte del software comercial requieren repositorios adicionales;&lt;/li&gt;
&lt;li&gt;si quieres &amp;ldquo;instalarlo y no tocarlo durante cinco anos&amp;rdquo;, Fedora encaja peor que una distribucion LTS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mi lectura: Fedora es excelente para desarrolladores, entusiastas de Linux y usuarios de tecnologias nuevas. No es el escritorio mas sencillo para usuarios corrientes, pero permite ver antes hacia donde puede ir el futuro de Linux de escritorio.&lt;/p&gt;
&lt;h2 id=&#34;como-elegir&#34;&gt;Como elegir
&lt;/h2&gt;&lt;h3 id=&#34;primera-instalacion-de-linux-para-principiantes&#34;&gt;Primera instalacion de Linux para principiantes
&lt;/h3&gt;&lt;p&gt;Elige primero Ubuntu 26.04 LTS o Linux Mint.&lt;/p&gt;
&lt;p&gt;Ubuntu destaca por documentacion y ecosistema. Linux Mint destaca por parecerse a Windows y por su bajo coste de aprendizaje. Si estas dispuesto a adaptarte a GNOME, elige Ubuntu. Si quieres que se parezca a Windows tanto como sea posible, elige Linux Mint.&lt;/p&gt;
&lt;h3 id=&#34;oficina-china-y-entornos-localizados&#34;&gt;Oficina china y entornos localizados
&lt;/h3&gt;&lt;p&gt;Mira primero Deepin / UOS.&lt;/p&gt;
&lt;p&gt;Si necesitas software de oficina domestico, navegadores domesticos, sistemas gubernamentales o empresariales, CPU domesticas o entornos de compatibilidad exigidos por la organizacion, UOS tiene mas valor practico. Los usuarios personales que quieran un escritorio chino bonito pueden mirar Deepin.&lt;/p&gt;
&lt;h3 id=&#34;equipo-principal-para-desarrolladores&#34;&gt;Equipo principal para desarrolladores
&lt;/h3&gt;&lt;p&gt;Ubuntu 26.04 LTS y Fedora merecen atencion.&lt;/p&gt;
&lt;p&gt;Si valoras estabilidad, tutoriales y soporte de software comercial, elige Ubuntu. Si quieres kernels nuevos, GNOME nuevo, toolchains recientes y la frontera de las tecnologias open source, elige Fedora.&lt;/p&gt;
&lt;h3 id=&#34;equipos-antiguos-o-domesticos&#34;&gt;Equipos antiguos o domesticos
&lt;/h3&gt;&lt;p&gt;Linux Mint es mas adecuado.&lt;/p&gt;
&lt;p&gt;Su interfaz tradicional, uso de recursos relativamente amable y baja presion de mantenimiento lo hacen mejor para equipos antiguos, maquinas domesticas de navegacion y escritorios de oficina ligera que el enfoque de Fedora en tecnologias nuevas.&lt;/p&gt;
&lt;h3 id=&#34;aigpucadenas-de-herramientas-de-desarrollo&#34;&gt;AI/GPU/cadenas de herramientas de desarrollo
&lt;/h3&gt;&lt;p&gt;Elige primero Ubuntu.&lt;/p&gt;
&lt;p&gt;NVIDIA drivers, CUDA, PyTorch, TensorFlow, Docker, VS Code, JetBrains y herramientas similares siguen usando Ubuntu con mucha frecuencia en guias oficiales y tutoriales. Fedora tambien puede funcionar, pero resolver problemas suele requerir mas experiencia con Linux.&lt;/p&gt;
&lt;h2 id=&#34;que-revisar-antes-de-elegir&#34;&gt;Que revisar antes de elegir
&lt;/h2&gt;&lt;p&gt;No juzgues Linux de escritorio solo por capturas de pantalla. La experiencia real depende de estos detalles:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;si los controladores graficos son estables, sobre todo NVIDIA;&lt;/li&gt;
&lt;li&gt;si Wi-Fi, Bluetooth, huella digital y camara funcionan correctamente;&lt;/li&gt;
&lt;li&gt;si monitores externos, escalado y configuracion multimonitor resultan comodos;&lt;/li&gt;
&lt;li&gt;si los metodos de entrada en chino funcionan bien;&lt;/li&gt;
&lt;li&gt;si las aplicaciones comunes tienen paquetes oficiales o versiones Flatpak;&lt;/li&gt;
&lt;li&gt;si las actualizaciones del sistema son faciles de entender;&lt;/li&gt;
&lt;li&gt;si es facil encontrar soluciones cuando aparecen problemas;&lt;/li&gt;
&lt;li&gt;si puedes aceptar el flujo de trabajo del escritorio por defecto.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Mucha gente fracasa al cambiar a Linux no porque el kernel sea debil, sino porque el metodo de entrada, el escalado, WeChat, la banca online, la impresora o los controladores graficos se sienten mal en el uso diario.&lt;/p&gt;
&lt;h2 id=&#34;mis-recomendaciones&#34;&gt;Mis recomendaciones
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Escenario&lt;/th&gt;
          &lt;th&gt;Recomendacion&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Escritorio principal para principiantes&lt;/td&gt;
          &lt;td&gt;Ubuntu 26.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Migracion desde Windows&lt;/td&gt;
          &lt;td&gt;Linux Mint&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Escritorio chino bonito&lt;/td&gt;
          &lt;td&gt;Deepin&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Oficina localizada / entorno gubernamental y empresarial&lt;/td&gt;
          &lt;td&gt;UOS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Entorno estable para desarrolladores&lt;/td&gt;
          &lt;td&gt;Ubuntu 26.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Experiencia con tecnologia Linux reciente&lt;/td&gt;
          &lt;td&gt;Fedora Linux 44&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Equipo antiguo para oficina ligera&lt;/td&gt;
          &lt;td&gt;Linux Mint&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Desarrollo AI/GPU&lt;/td&gt;
          &lt;td&gt;Ubuntu 26.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;conclusion-breve&#34;&gt;Conclusion breve
&lt;/h2&gt;&lt;p&gt;Ubuntu 26.04 LTS es la opcion de escritorio todoterreno mas segura en 2026, adecuada para principiantes, desarrolladores y equipos principales.&lt;/p&gt;
&lt;p&gt;Deepin/UOS es fuerte en experiencia china, diseno visual y compatibilidad localizada, adecuado para usuarios que valoran la experiencia local y los entornos gubernamentales o empresariales.&lt;/p&gt;
&lt;p&gt;Linux Mint es extremadamente facil de usar y estable, especialmente para una migracion suave de Windows a Linux.&lt;/p&gt;
&lt;p&gt;Fedora destaca en tecnologia nueva y experiencia para desarrolladores, y encaja con usuarios dispuestos a seguir la vanguardia del escritorio Linux.&lt;/p&gt;
&lt;p&gt;La calidad de un sistema de escritorio depende al final de si quieres seguir usandolo cada dia despues de encender el ordenador. Una distribucion con la que puedas vivir comodamente importa mas que una que se vea mejor en una tabla de parametros.&lt;/p&gt;
&lt;h2 id=&#34;enlaces-relacionados&#34;&gt;Enlaces relacionados
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Ubuntu 26.04 LTS: &lt;a class=&#34;link&#34; href=&#34;https://releases.ubuntu.com/26.04/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://releases.ubuntu.com/26.04/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;deepin 25 Release Note: &lt;a class=&#34;link&#34; href=&#34;https://www.deepin.org/en/deepin-25-release/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.deepin.org/en/deepin-25-release/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;deepin 25.1.0 Release Note: &lt;a class=&#34;link&#34; href=&#34;https://www.deepin.org/en/deepin-25-1-release/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.deepin.org/en/deepin-25-1-release/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Linux Mint website: &lt;a class=&#34;link&#34; href=&#34;https://linuxmint.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://linuxmint.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fedora Workstation: &lt;a class=&#34;link&#34; href=&#34;https://fedoraproject.org/workstation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://fedoraproject.org/workstation/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fedora Release Notes: &lt;a class=&#34;link&#34; href=&#34;https://docs.fedoraproject.org/en-US/fedora/latest/release-notes/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.fedoraproject.org/en-US/fedora/latest/release-notes/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Como elegir una distribucion Linux para servidores en 2026: comparativa entre Debian, Rocky Linux, AlmaLinux y Ubuntu Server</title>
        <link>https://www.knightli.com/es/2026/05/07/linux-server-distro-comparison-2026/</link>
        <pubDate>Thu, 07 May 2026 21:03:12 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/07/linux-server-distro-comparison-2026/</guid>
        <description>&lt;p&gt;Al elegir una distribucion Linux para servidores en 2026, la pregunta clave no es &amp;ldquo;cual es la mejor&amp;rdquo;, sino &amp;ldquo;cual encaja con tu modelo de operaciones&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Si necesitas la distribucion comunitaria mas estable, Debian sigue siendo una de las mejores opciones. Si necesitas el ecosistema compatible con RHEL pero no quieres comprar RHEL directamente, Rocky Linux y AlmaLinux son los sucesores mas naturales de CentOS. Si lo que mas te importa son las imagenes cloud, la documentacion, el despliegue rapido y paquetes mas recientes, Ubuntu Server sigue siendo el camino mas sencillo.&lt;/p&gt;
&lt;p&gt;A continuacion va una comparativa practica desde la perspectiva de servidor.&lt;/p&gt;
&lt;h2 id=&#34;conclusion-rapida&#34;&gt;Conclusion rapida
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Distribucion&lt;/th&gt;
          &lt;th&gt;Mas adecuada para&lt;/th&gt;
          &lt;th&gt;Fortalezas principales&lt;/th&gt;
          &lt;th&gt;Puntos a tener en cuenta&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Debian&lt;/td&gt;
          &lt;td&gt;Estabilidad a largo plazo, self-hosting, servicios basicos&lt;/td&gt;
          &lt;td&gt;Estable, limpia, comunidad fuerte, profunda tradicion de software libre&lt;/td&gt;
          &lt;td&gt;Los paquetes por defecto son conservadores; el soporte comercial empresarial es menos explicito que en RHEL/Ubuntu&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Rocky Linux&lt;/td&gt;
          &lt;td&gt;Entornos de produccion compatibles con RHEL&lt;/td&gt;
          &lt;td&gt;Cerca de los habitos de RHEL, adecuada para migraciones empresariales desde CentOS&lt;/td&gt;
          &lt;td&gt;Cadencia de paquetes conservadora; el escritorio y la experiencia con tecnologias nuevas no son el foco&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AlmaLinux&lt;/td&gt;
          &lt;td&gt;Produccion compatible con RHEL, cloud, reemplazo empresarial&lt;/td&gt;
          &lt;td&gt;Compatible con RHEL, comunidad activa, ciclo de vida claro&lt;/td&gt;
          &lt;td&gt;Aun tiene algunas diferencias frente a RHEL; conviene leer las notas de version&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Ubuntu Server&lt;/td&gt;
          &lt;td&gt;Servidores cloud, contenedores, despliegue de desarrollo&lt;/td&gt;
          &lt;td&gt;Buen soporte cloud, mucha documentacion, despliegue rapido, largo ciclo LTS&lt;/td&gt;
          &lt;td&gt;Snap, kernels HWE y PPAs necesitan reglas de equipo&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;En una frase:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Eleccion general mas segura&lt;/strong&gt;: Debian.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reemplazo del ecosistema RHEL empresarial&lt;/strong&gt;: Rocky Linux / AlmaLinux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud y eficiencia de desarrollo primero&lt;/strong&gt;: Ubuntu Server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;debian-estabilidad-a-prueba-de-anos&#34;&gt;Debian: estabilidad a prueba de anos
&lt;/h2&gt;&lt;p&gt;En mayo de 2026, la version estable actual de Debian es Debian 13 &lt;code&gt;trixie&lt;/code&gt;. Debian 12 &lt;code&gt;bookworm&lt;/code&gt; paso a oldstable y sigue recibiendo seguridad y soporte LTS, pero los despliegues nuevos de servidor normalmente deberian partir de Debian 13.&lt;/p&gt;
&lt;p&gt;Las caracteristicas de Debian siempre han sido claras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;seleccion conservadora de paquetes por defecto;&lt;/li&gt;
&lt;li&gt;estructura de sistema limpia;&lt;/li&gt;
&lt;li&gt;sin una fuerte dependencia de un proveedor comercial;&lt;/li&gt;
&lt;li&gt;gobernanza comunitaria madura;&lt;/li&gt;
&lt;li&gt;muy adecuada para servicios basicos de larga duracion.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Debian se siente comoda si tus servidores ejecutan principalmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nginx / Apache;&lt;/li&gt;
&lt;li&gt;PostgreSQL / MariaDB / Redis;&lt;/li&gt;
&lt;li&gt;Docker / Podman;&lt;/li&gt;
&lt;li&gt;WireGuard / Tailscale;&lt;/li&gt;
&lt;li&gt;servicios de archivos, copias de seguridad y monitorizacion;&lt;/li&gt;
&lt;li&gt;pequenas aplicaciones self-hosted.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La ventaja de Debian no es ser &amp;ldquo;la mas nueva&amp;rdquo;, sino exigir menos pelea. Muchos servidores pueden funcionar durante anos con actualizaciones normales de seguridad y mantenimiento menor.&lt;/p&gt;
&lt;p&gt;Debian es adecuada cuando:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;quieres que el sistema siga siendo simple y no quede demasiado condicionado por la estrategia de un proveedor;&lt;/li&gt;
&lt;li&gt;conoces &lt;code&gt;apt&lt;/code&gt;, systemd y la disposicion de archivos de Debian;&lt;/li&gt;
&lt;li&gt;aceptas que las versiones de software no sean las mas recientes;&lt;/li&gt;
&lt;li&gt;valoras mas estabilidad, actualizaciones de seguridad y upgrades predecibles.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Debian es menos adecuada cuando:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;un proveedor solo certifica RHEL o Ubuntu;&lt;/li&gt;
&lt;li&gt;necesitas soporte comercial empresarial con SLA;&lt;/li&gt;
&lt;li&gt;dependes del kernel mas nuevo, una pila GPU reciente o soporte para hardware muy nuevo;&lt;/li&gt;
&lt;li&gt;tu equipo ya construyo sus estandares de operacion alrededor del ecosistema RHEL.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Mi lectura: para servidores personales, self-hosting, SaaS ligero e infraestructura de equipos pequenos, Debian sigue siendo una excelente primera opcion.&lt;/p&gt;
&lt;h2 id=&#34;rocky-linux-un-sucesor-estable-de-centos&#34;&gt;Rocky Linux: un sucesor estable de CentOS
&lt;/h2&gt;&lt;p&gt;Rocky Linux tiene una posicion clara: sirve a usuarios que necesitan el ecosistema compatible con RHEL y continua el papel que CentOS Linux tuvo en entornos empresariales de produccion.&lt;/p&gt;
&lt;p&gt;En 2026, tanto Rocky Linux 9 como Rocky Linux 10 estan dentro de sus periodos de soporte. Rocky Linux 9 encaja mejor en entornos de produccion mas conservadores, mientras que Rocky Linux 10 es mas adecuado para proyectos nuevos, hardware mas reciente y una pista de futuro mas larga.&lt;/p&gt;
&lt;p&gt;Rocky Linux encaja en escenarios como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;entornos empresariales que antes usaban CentOS 7 / CentOS 8;&lt;/li&gt;
&lt;li&gt;estructura de directorios, nombres de paquetes y habitos de operacion estilo RHEL;&lt;/li&gt;
&lt;li&gt;dependencia de &lt;code&gt;dnf&lt;/code&gt;, RPM, SELinux y firewalld;&lt;/li&gt;
&lt;li&gt;proveedores de software que soportan explicitamente distribuciones compatibles con RHEL;&lt;/li&gt;
&lt;li&gt;scripts internos de automatizacion escritos alrededor de Enterprise Linux.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Su ventaja es la baja friccion de migracion. Muchos equipos tienen anos de playbooks Ansible, reglas de monitorizacion, scripts de auditoria y lineas base de seguridad basadas en CentOS. Migrar a Rocky Linux resulta mentalmente mucho mas sencillo que migrar a Debian o Ubuntu.&lt;/p&gt;
&lt;p&gt;Cosas a tener en cuenta sobre Rocky Linux:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;los paquetes son conservadores por diseno; es una caracteristica de Enterprise Linux, no un defecto;&lt;/li&gt;
&lt;li&gt;componentes de espacio de usuario muy nuevos pueden requerir EPEL, repositorios de terceros o contenedores;&lt;/li&gt;
&lt;li&gt;compatibilidad con RHEL no significa que todo proveedor comercial ofrezca automaticamente soporte formal, asi que revisa las listas de certificacion;&lt;/li&gt;
&lt;li&gt;Rocky Linux 10 tiene nuevas bases de hardware y requisitos de ecosistema, por lo que conviene validarlo antes de produccion.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mi lectura: si tu entorno de servidores ya se basa en CentOS / RHEL, Rocky Linux es un reemplazo muy natural, especialmente para entornos de produccion estables y servicios empresariales internos.&lt;/p&gt;
&lt;h2 id=&#34;almalinux-una-ruta-compatible-con-rhel-mas-proactiva&#34;&gt;AlmaLinux: una ruta compatible con RHEL mas proactiva
&lt;/h2&gt;&lt;p&gt;AlmaLinux es otro sucesor importante de CentOS. Tambien es de grado empresarial, con soporte a largo plazo y compatible con RHEL.&lt;/p&gt;
&lt;p&gt;Comparte muchos rasgos con Rocky Linux:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ambas apuntan al ecosistema compatible con RHEL;&lt;/li&gt;
&lt;li&gt;ambas encajan en entornos de produccion de servidores;&lt;/li&gt;
&lt;li&gt;ambas tienen lineas 8, 9 y 10 con soporte a largo plazo;&lt;/li&gt;
&lt;li&gt;ambas son adecuadas para migrar desde CentOS;&lt;/li&gt;
&lt;li&gt;ambas pueden usar gran parte de las herramientas del ecosistema Enterprise Linux.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La diferencia es que AlmaLinux es mas proactiva documentando y gestionando diferencias upstream mientras mantiene compatibilidad con RHEL. Por ejemplo, AlmaLinux 10 ofrece una opcion de arquitectura &lt;code&gt;x86-64-v2&lt;/code&gt; para hardware mas antiguo y documenta claramente sus diferencias frente a RHEL en las notas de version.&lt;/p&gt;
&lt;p&gt;Esto resulta util para algunos usuarios: quieren permanecer en el ecosistema RHEL, pero tambien desean una distribucion comunitaria con mas flexibilidad alrededor de soporte de hardware, builds de paquetes y compatibilidad con EPEL.&lt;/p&gt;
&lt;p&gt;AlmaLinux es adecuada cuando:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;necesitas compatibilidad con RHEL pero no quieres quedar completamente limitado por la estrategia de lanzamientos de RHEL;&lt;/li&gt;
&lt;li&gt;valoras la gobernanza comunitaria y notas de version transparentes;&lt;/li&gt;
&lt;li&gt;necesitas una base estable para plataformas cloud, imagenes de contenedor y cargas empresariales;&lt;/li&gt;
&lt;li&gt;quieres una migracion suave desde CentOS o Enterprise Linux antiguo.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;La advertencia clave: AlmaLinux no es &amp;ldquo;identica a RHEL con los ojos cerrados&amp;rdquo;. En escenarios de cumplimiento estricto, certificacion de proveedor, certificacion de bases de datos o certificacion de hardware, confirma si el proveedor soporta AlmaLinux explicitamente.&lt;/p&gt;
&lt;p&gt;Mi lectura: Rocky Linux y AlmaLinux pueden reemplazar CentOS. Si prefieres una historia mas conservadora y tradicional al estilo CentOS, mira Rocky. Si valoras transparencia comunitaria y una ruta de compatibilidad mas flexible, mira AlmaLinux.&lt;/p&gt;
&lt;h2 id=&#34;ubuntu-server-el-mejor-soporte-cloud-y-eficiencia-de-despliegue&#34;&gt;Ubuntu Server: el mejor soporte cloud y eficiencia de despliegue
&lt;/h2&gt;&lt;p&gt;La ventaja de Ubuntu Server es practica: plataformas cloud, documentacion, tutoriales de comunidad, imagenes, herramientas de automatizacion y ecosistema de desarrollo son todos fuertes.&lt;/p&gt;
&lt;p&gt;Para despliegues nuevos de servidor en 2026, la opcion principal sigue siendo Ubuntu 24.04 LTS. Ubuntu LTS suele tener 5 anos de soporte estandar y puede extenderse mediante ESM. Para servidores cloud, hosts de contenedores, entornos de desarrollo y nodos CI/CD, Ubuntu Server suele ser la forma mas rapida de ponerse en marcha.&lt;/p&gt;
&lt;p&gt;Ubuntu Server encaja con:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AWS, Azure, Google Cloud, Oracle Cloud, Alibaba Cloud, Tencent Cloud y otros servidores cloud;&lt;/li&gt;
&lt;li&gt;Docker, Kubernetes, GitLab Runner, CI/CD;&lt;/li&gt;
&lt;li&gt;entornos de desarrollo AI / GPU / CUDA;&lt;/li&gt;
&lt;li&gt;equipos que necesitan muchos tutoriales y recetas de comunidad;&lt;/li&gt;
&lt;li&gt;entornos donde desarrollo y produccion deberian mantenerse parecidos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fortalezas de Ubuntu:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;imagenes cloud de alta calidad;&lt;/li&gt;
&lt;li&gt;mucha documentacion oficial y de terceros;&lt;/li&gt;
&lt;li&gt;soporte para hardware nuevo a menudo mas activo;&lt;/li&gt;
&lt;li&gt;cadencia LTS clara;&lt;/li&gt;
&lt;li&gt;actualizaciones comodas de toolchains para desarrolladores;&lt;/li&gt;
&lt;li&gt;muchos proveedores comerciales publican primero instrucciones de instalacion para Ubuntu.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cosas a vigilar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;no a todos los equipos les gusta Snap en servidores, asi que conviene decidir la politica por adelantado;&lt;/li&gt;
&lt;li&gt;los PPAs son comodos, pero abusar de ellos en produccion aumenta el riesgo de mantenimiento;&lt;/li&gt;
&lt;li&gt;elige claramente entre kernel HWE, kernel cloud y kernel estandar;&lt;/li&gt;
&lt;li&gt;para puristas de estabilidad minima, el sistema por defecto de Ubuntu se siente mas cargado que Debian.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mi lectura: si ejecutas sobre todo servidores cloud, contenedores, despliegues de desarrollo o toolchains de AI, Ubuntu Server suele ser la opcion mas eficiente. No es la distribucion mas &amp;ldquo;pura&amp;rdquo;, pero reduce mucho el tiempo de busqueda y la friccion en muchas tareas.&lt;/p&gt;
&lt;h2 id=&#34;como-elegir-entre-las-cuatro&#34;&gt;Como elegir entre las cuatro
&lt;/h2&gt;&lt;h3 id=&#34;vps-personal--self-hosting&#34;&gt;VPS personal / self-hosting
&lt;/h3&gt;&lt;p&gt;Debian o Ubuntu Server primero.&lt;/p&gt;
&lt;p&gt;Si quieres estabilidad, bajo mantenimiento y menos complicaciones, elige Debian. Si sigues tutoriales a menudo para desplegar proyectos nuevos o necesitas una pila de software mas reciente, elige Ubuntu Server.&lt;/p&gt;
&lt;h3 id=&#34;produccion-empresarial&#34;&gt;Produccion empresarial
&lt;/h3&gt;&lt;p&gt;Rocky Linux, AlmaLinux o RHEL primero.&lt;/p&gt;
&lt;p&gt;Si la empresa usaba CentOS antes, migrar a Rocky / Alma es el camino mas barato. Si hay bases de datos comerciales, certificacion de hardware, cumplimiento de seguridad o soporte de proveedor, revisa primero las listas de certificacion.&lt;/p&gt;
&lt;h3 id=&#34;cloud-native-y-hosts-de-contenedores&#34;&gt;Cloud native y hosts de contenedores
&lt;/h3&gt;&lt;p&gt;Ubuntu Server, Debian y Rocky / Alma pueden funcionar.&lt;/p&gt;
&lt;p&gt;Si el equipo valora eficiencia de desarrollo, elige Ubuntu Server. Si quieres estabilidad minima, elige Debian. Si el estandar empresarial se basa en RHEL, elige Rocky / Alma.&lt;/p&gt;
&lt;h3 id=&#34;servidores-ai--gpu&#34;&gt;Servidores AI / GPU
&lt;/h3&gt;&lt;p&gt;Mira primero Ubuntu Server, luego Rocky / Alma.&lt;/p&gt;
&lt;p&gt;La razon es simple: NVIDIA, CUDA, PyTorch, TensorFlow, tutoriales de instalacion de drivers y experiencia de comunidad suelen ser mas abundantes en Ubuntu. Los clusters GPU empresariales construidos alrededor del ecosistema RHEL pueden elegir Rocky / Alma, pero drivers, CUDA, runtime de contenedores y herramientas de monitorizacion deberian validarse por adelantado.&lt;/p&gt;
&lt;h3 id=&#34;sistemas-de-negocio-tradicionales&#34;&gt;Sistemas de negocio tradicionales
&lt;/h3&gt;&lt;p&gt;Rocky Linux / AlmaLinux primero.&lt;/p&gt;
&lt;p&gt;Java tradicional, bases de datos, middleware, software comercial, auditoria y estandares de operacion suelen inclinarse hacia el ecosistema RHEL. En ese caso, Rocky / Alma encaja con sistemas existentes mas facilmente que Debian / Ubuntu.&lt;/p&gt;
&lt;h2 id=&#34;que-revisar-antes-de-elegir&#34;&gt;Que revisar antes de elegir
&lt;/h2&gt;&lt;p&gt;No elijas solo por el nombre de la distribucion. Para seleccionar un servidor, juzga con estas preguntas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ciclo de vida&lt;/strong&gt;: hasta que ano se mantiene esta version?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ruta de upgrade&lt;/strong&gt;: el upgrade de version mayor esta maduro? Hay migracion fluida?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fuentes de software&lt;/strong&gt;: dependes de repositorios de terceros? Quien los mantiene?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actualizaciones de seguridad&lt;/strong&gt;: estan claros los avisos de seguridad, la cadencia de parches y el manejo de CVE?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Soporte de hardware&lt;/strong&gt;: se validaron CPU, NIC, RAID, GPU y controladoras de almacenamiento?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Experiencia del equipo&lt;/strong&gt;: el equipo conoce mejor &lt;code&gt;apt&lt;/code&gt; o &lt;code&gt;dnf&lt;/code&gt;? Sistemas estilo Debian o estilo RHEL?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Certificacion de proveedores&lt;/strong&gt;: el software de negocio soporta explicitamente esta distribucion?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Activos de automatizacion&lt;/strong&gt;: se pueden reutilizar scripts existentes de Ansible, Terraform y construccion de imagenes?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El coste real no suele ser la ISO de instalacion. Son los upgrades, auditorias, diagnosticos y traspasos durante los proximos cinco anos.&lt;/p&gt;
&lt;h2 id=&#34;mis-recomendaciones-por-defecto&#34;&gt;Mis recomendaciones por defecto
&lt;/h2&gt;&lt;p&gt;Si tuviera que dar una guia de seleccion de servidores para 2026:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Escenario&lt;/th&gt;
          &lt;th&gt;Recomendacion&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;VPS personal, self-hosting&lt;/td&gt;
          &lt;td&gt;Debian 13&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Servidor cloud, despliegue rapido&lt;/td&gt;
          &lt;td&gt;Ubuntu Server 24.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Migracion desde CentOS&lt;/td&gt;
          &lt;td&gt;Rocky Linux 9 / AlmaLinux 9&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Proyecto empresarial nuevo&lt;/td&gt;
          &lt;td&gt;Rocky Linux 10 / AlmaLinux 10, tras validar el ecosistema&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Desarrollo AI / GPU&lt;/td&gt;
          &lt;td&gt;Ubuntu Server 24.04 LTS&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Produccion comercial con cumplimiento estricto&lt;/td&gt;
          &lt;td&gt;RHEL, o Rocky / Alma tras confirmar soporte de proveedor&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;conclusion-breve&#34;&gt;Conclusion breve
&lt;/h2&gt;&lt;p&gt;Las palabras clave de Debian son estabilidad, simplicidad, comunidad y tradicion de software libre. Es adecuada para servidores base de larga duracion.&lt;/p&gt;
&lt;p&gt;Rocky Linux y AlmaLinux tratan sobre compatibilidad con RHEL, produccion empresarial y reemplazo de CentOS. Encajan con equipos que ya tienen sistemas de operacion basados en Enterprise Linux.&lt;/p&gt;
&lt;p&gt;Ubuntu Server trata sobre cloud, documentacion, eficiencia de desarrollo y ecosistema completo. Encaja con despliegue rapido, contenedores, AI/GPU y servidores cloud.&lt;/p&gt;
&lt;p&gt;No existe una distribucion correcta para siempre. Solo existe la distribucion que mejor encaja con tu equipo, negocio, hardware y ciclo de vida. La mejor eleccion de servidor no suele ser la mas popular, sino la que seguiras dispuesto a mantener dentro de cinco anos.&lt;/p&gt;
&lt;h2 id=&#34;enlaces-relacionados&#34;&gt;Enlaces relacionados
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Debian Releases: &lt;a class=&#34;link&#34; href=&#34;https://www.debian.org/releases/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.debian.org/releases/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ubuntu Releases: &lt;a class=&#34;link&#34; href=&#34;https://releases.ubuntu.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://releases.ubuntu.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rocky Linux Release and Version Guide: &lt;a class=&#34;link&#34; href=&#34;https://wiki.rockylinux.org/rocky/version/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://wiki.rockylinux.org/rocky/version/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AlmaLinux Release Notes: &lt;a class=&#34;link&#34; href=&#34;https://wiki.almalinux.org/release-notes/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://wiki.almalinux.org/release-notes/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Cómo controlar el orden de borrado en fdupes: conservar duplicados por prioridad de directorio</title>
        <link>https://www.knightli.com/es/2026/05/06/fdupes-delete-duplicates-by-directory-priority/</link>
        <pubDate>Wed, 06 May 2026 09:23:09 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/06/fdupes-delete-duplicates-by-directory-priority/</guid>
        <description>&lt;p&gt;Al usar &lt;code&gt;fdupes&lt;/code&gt; para eliminar archivos duplicados entre tres directorios, como &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt; y &lt;code&gt;c&lt;/code&gt;, si quieres conservar primero &lt;code&gt;a&lt;/code&gt;, luego &lt;code&gt;b&lt;/code&gt;, y eliminar primero los duplicados de &lt;code&gt;c&lt;/code&gt;, la clave no es una regla compleja. Es el orden de los argumentos de directorio.&lt;/p&gt;
&lt;p&gt;En modo de borrado no interactivo, &lt;code&gt;fdupes&lt;/code&gt; conserva el primer archivo que ve en cada grupo de duplicados y elimina los duplicados posteriores. Por tanto, los argumentos de directorio deben ordenarse de mayor prioridad de conservación a menor.&lt;/p&gt;
&lt;p&gt;En otras palabras, para lograr &amp;ldquo;eliminar primero de c, luego de b, y conservar a tanto como sea posible&amp;rdquo;, escribe el comando así:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El orden de escaneo es &lt;code&gt;a -&amp;gt; b -&amp;gt; c&lt;/code&gt;. Cuando el mismo archivo existe en los tres directorios, el archivo de &lt;code&gt;a&lt;/code&gt; se encuentra primero y se conserva, mientras que los duplicados de &lt;code&gt;b&lt;/code&gt; y &lt;code&gt;c&lt;/code&gt; se eliminan. Si solo &lt;code&gt;b&lt;/code&gt; y &lt;code&gt;c&lt;/code&gt; contienen duplicados, se conserva &lt;code&gt;b&lt;/code&gt; y se elimina &lt;code&gt;c&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;significado-de-los-parámetros&#34;&gt;Significado de los parámetros
&lt;/h2&gt;&lt;p&gt;Los parámetros comunes son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-r&lt;/code&gt;: escanear subdirectorios de forma recursiva.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-d&lt;/code&gt;: eliminar archivos duplicados.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-N&lt;/code&gt;: cuando se usa con &lt;code&gt;-d&lt;/code&gt;, omitir la confirmación interactiva, conservar el primer archivo de cada grupo de duplicados y eliminar el resto.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por tanto, el formato básico para eliminación automática de duplicados es:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN 目录A 目录B 目录C
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Cuanto antes aparece un directorio, mayor es su prioridad de conservación. Cuanto más tarde aparece, más probable es que sus archivos duplicados sean eliminados.&lt;/p&gt;
&lt;h2 id=&#34;previsualizar-antes-de-eliminar&#34;&gt;Previsualizar antes de eliminar
&lt;/h2&gt;&lt;p&gt;Usar &lt;code&gt;-dN&lt;/code&gt; elimina archivos directamente, así que es mejor previsualizar primero los grupos de duplicados:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -r a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La salida se agrupa por archivos duplicados. En cada grupo, el archivo mostrado antes es el que más probablemente se conservará en modo de borrado no interactivo.&lt;/p&gt;
&lt;p&gt;También puedes ver información de resumen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rm a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si los datos son importantes, guarda el resultado e inspecciónalo manualmente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -r a b c &amp;gt; duplicates.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Después de confirmar que el orden dentro de cada grupo de duplicados coincide con lo esperado, ejecuta:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;cómo-se-manejan-los-subdirectorios&#34;&gt;Cómo se manejan los subdirectorios
&lt;/h2&gt;&lt;p&gt;Mientras &lt;code&gt;-r&lt;/code&gt; esté activado, &lt;code&gt;fdupes&lt;/code&gt; escanea recursivamente todos los archivos bajo los directorios que pasas. La prioridad de conservación sigue determinada por el orden en que las rutas aparecen en el comando.&lt;/p&gt;
&lt;p&gt;Por ejemplo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN dir_a dir_b dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dir_a&lt;/code&gt; tiene la prioridad más alta.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dir_b&lt;/code&gt; viene después.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dir_c&lt;/code&gt; tiene la prioridad más baja.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si &lt;code&gt;dir_a/sub1/file.txt&lt;/code&gt; y &lt;code&gt;dir_c/sub1/file.txt&lt;/code&gt; tienen contenido idéntico, se conserva el archivo bajo &lt;code&gt;dir_a&lt;/code&gt;. Si &lt;code&gt;dir_a/x/y/file.txt&lt;/code&gt; y &lt;code&gt;dir_c/file.txt&lt;/code&gt; tienen contenido idéntico, el archivo bajo &lt;code&gt;dir_a&lt;/code&gt; también se conserva primero. &lt;code&gt;fdupes&lt;/code&gt; compara contenido de archivos; los nombres y la profundidad de directorio no tienen que coincidir.&lt;/p&gt;
&lt;h2 id=&#34;controlar-con-precisión-la-prioridad-de-subdirectorios&#34;&gt;Controlar con precisión la prioridad de subdirectorios
&lt;/h2&gt;&lt;p&gt;Si solo pasas directorios padre, el orden de escaneo dentro de subdirectorios depende del comportamiento de recorrido de &lt;code&gt;fdupes&lt;/code&gt;. Esto basta en la mayoría de casos. Pero si quieres que un subdirectorio específico tenga más prioridad, escríbelo explícitamente antes de su directorio padre.&lt;/p&gt;
&lt;p&gt;Por ejemplo, supón que quieres conservar primero &lt;code&gt;dir_a&lt;/code&gt;, luego &lt;code&gt;dir_b/special&lt;/code&gt;, después procesar el resto de &lt;code&gt;dir_b&lt;/code&gt;, y finalmente procesar &lt;code&gt;dir_c&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN dir_a dir_b/special dir_b dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto hace que &lt;code&gt;dir_b/special&lt;/code&gt; se escanee antes que &lt;code&gt;dir_b&lt;/code&gt;. Cuando &lt;code&gt;dir_b&lt;/code&gt; se escanea después, los archivos bajo &lt;code&gt;special&lt;/code&gt; ya han sido registrados, así que ese subdirectorio tiene efectivamente mayor prioridad que el resto de &lt;code&gt;dir_b&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Este patrón es útil cuando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;a&lt;/code&gt; es el directorio base más importante.&lt;/li&gt;
&lt;li&gt;Un subdirectorio dentro de &lt;code&gt;b&lt;/code&gt; es más importante que el resto de &lt;code&gt;b&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;c&lt;/code&gt; es principalmente un directorio de respaldo de baja prioridad.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El orden de rutas puede extenderse más:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b/important b c/keep-first c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La regla sigue siendo la misma: cuanto antes aparece, más probable es que se conserve.&lt;/p&gt;
&lt;h2 id=&#34;usar-una-lista-para-muchos-directorios&#34;&gt;Usar una lista para muchos directorios
&lt;/h2&gt;&lt;p&gt;Si hay muchos directorios y subdirectorios, escribir manualmente un comando largo es propenso a errores. Puedes escribir las rutas en un archivo de texto como &lt;code&gt;folders.txt&lt;/code&gt;, ordenadas por prioridad:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_b/sub_important
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_b
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_c/sub_1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/path/to/dir_c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Luego pásalas a &lt;code&gt;fdupes&lt;/code&gt; con &lt;code&gt;xargs&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat folders.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs fdupes -rdN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si las rutas pueden contener espacios, usa entrada separada por nulos para mayor seguridad:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tr &lt;span class=&#34;s1&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;\0&amp;#39;&lt;/span&gt; &amp;lt; folders.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs -0 fdupes -rdN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;límites-importantes&#34;&gt;Límites importantes
&lt;/h2&gt;&lt;p&gt;Primero, &lt;code&gt;fdupes&lt;/code&gt; compara contenido de archivos, no nombres. Dos archivos con nombres completamente distintos pueden tratarse como duplicados si su contenido es idéntico.&lt;/p&gt;
&lt;p&gt;Segundo, si el directorio &lt;code&gt;a&lt;/code&gt; contiene duplicados internamente, &lt;code&gt;fdupes -rdN a b c&lt;/code&gt; también puede eliminar duplicados posteriores dentro de &lt;code&gt;a&lt;/code&gt;. Este comando significa &amp;ldquo;conservar el primer archivo según el orden global de escaneo&amp;rdquo;, no &amp;ldquo;no eliminar nunca nada bajo a&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Tercero, por defecto, &lt;code&gt;fdupes&lt;/code&gt; no sigue enlaces simbólicos. Si necesitas manejar archivos detrás de symlinks, confirma si necesitas &lt;code&gt;-s&lt;/code&gt; y si eso coincide con tus expectativas de seguridad de datos.&lt;/p&gt;
&lt;p&gt;Cuarto, &lt;code&gt;fdupes&lt;/code&gt; solo elimina archivos duplicados. No limpia directorios vacíos. Después de eliminar, si &lt;code&gt;b&lt;/code&gt; y &lt;code&gt;c&lt;/code&gt; contienen carpetas vacías, puedes ejecutar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find b c -type d -empty -delete
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;hábito-de-operación-más-seguro&#34;&gt;Hábito de operación más seguro
&lt;/h2&gt;&lt;p&gt;Si los directorios contienen datos importantes, no empieces con &lt;code&gt;-rdN&lt;/code&gt;. Un flujo más seguro es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ejecutar primero &lt;code&gt;fdupes -r a b c&lt;/code&gt; para ver grupos de duplicados.&lt;/li&gt;
&lt;li&gt;Confirmar que el primer archivo de cada grupo es el que quieres conservar.&lt;/li&gt;
&lt;li&gt;Luego ejecutar &lt;code&gt;fdupes -rdN a b c&lt;/code&gt; para eliminación automática.&lt;/li&gt;
&lt;li&gt;Después de eliminar, revisar si hay que limpiar directorios vacíos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si te preocupa mucho eliminar archivos bajo &lt;code&gt;a&lt;/code&gt; por accidente, primero limpia un rango más pequeño de directorios de baja prioridad, o exporta los resultados y fíltralos manualmente. El orden de directorios en &lt;code&gt;fdupes&lt;/code&gt; es útil, pero no es una regla de control de acceso. Una vez que una ruta entra en el escaneo, los archivos duplicados dentro de ella pueden participar en decisiones de eliminación.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Para eliminar archivos duplicados con &lt;code&gt;fdupes&lt;/code&gt; por prioridad, coloca antes los directorios que quieres conservar y después los directorios de los que quieres eliminar.&lt;/p&gt;
&lt;p&gt;Para conservar &lt;code&gt;a&lt;/code&gt;, luego &lt;code&gt;b&lt;/code&gt;, y eliminar primero de &lt;code&gt;c&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Para dar mayor prioridad a un subdirectorio, escríbelo antes de su directorio padre:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdupes -rdN a b/important b c
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La frase clave es simple: &lt;code&gt;fdupes -dN&lt;/code&gt; conserva los archivos duplicados que aparecen primero y elimina los duplicados que aparecen después. El orden de directorios es tu prioridad de conservación.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Actualizaciones de hardware y GPU Ubuntu 26.04 LTS: CUDA, ROCm, DPC&#43;&#43; y más cambios de plataforma</title>
        <link>https://www.knightli.com/es/2026/04/26/ubuntu-26-04-lts-gpu-hardware-ai-updates/</link>
        <pubDate>Sun, 26 Apr 2026 19:35:57 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/04/26/ubuntu-26-04-lts-gpu-hardware-ai-updates/</guid>
        <description>&lt;p&gt;Si el artículo anterior funcionó como una descripción general centrada en el escritorio de &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt;, es mejor leer este como su seguimiento del hardware y la computación. En este ciclo &lt;code&gt;26.04&lt;/code&gt;, Ubuntu impulsó una serie de cambios en IA, computación GPU y compatibilidad de plataforma en el archivo principal o alcance de soporte formal.&lt;/p&gt;
&lt;p&gt;La versión corta es esta: la parte más importante de esta ronda no son solo las actualizaciones de escritorio y kernel, sino que &lt;strong&gt;Ubuntu está incorporando pilas de computación de GPU Intel, NVIDIA y AMD a la distribución de una manera más sistemática&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;1-intel-dpc-y-componentes-relacionados-ahora-están-en-ubuntu-archive&#34;&gt;1. Intel DPC++ y componentes relacionados ahora están en Ubuntu Archive
&lt;/h2&gt;&lt;p&gt;A partir de &lt;code&gt;26.04&lt;/code&gt;, el compilador de código abierto &lt;code&gt;oneAPI DPC++&lt;/code&gt; de Intel está disponible directamente desde Ubuntu Archive para crear código &lt;code&gt;SYCL&lt;/code&gt;. Su tiempo de ejecución también incluye adaptadores para GPU Intel.&lt;/p&gt;
&lt;p&gt;Ahora también están disponibles dos componentes relacionados en los repositorios de Ubuntu:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;oneDPL&lt;/code&gt;, la biblioteca DPC++, que proporciona API de desarrollador de mayor productividad&lt;/li&gt;
&lt;li&gt;&lt;code&gt;oneDNN&lt;/code&gt;, creado con &lt;code&gt;dpclang-6&lt;/code&gt;, que puede ejecutarse en GPU Intel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso significa que si ya está trabajando con &lt;code&gt;SYCL&lt;/code&gt;, computación heterogénea o cargas de trabajo de IA en GPU Intel, Ubuntu ahora ofrece una ruta más directa en lugar de obligarlo a mantener una pila externa separada para todo.&lt;/p&gt;
&lt;p&gt;Ubuntu también señala un requisito práctico: los usuarios deben estar en el grupo &amp;ldquo;renderizar&amp;rdquo; para utilizar realmente estas capacidades relacionadas con la GPU Intel.&lt;/p&gt;
&lt;h2 id=&#34;2-el-kit-de-herramientas-nvidia-cuda-ahora-se-puede-instalar-directamente-con-apt&#34;&gt;2. El kit de herramientas NVIDIA CUDA ahora se puede instalar directamente con &lt;code&gt;apt&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;Para muchos desarrolladores y operadores, este puede ser uno de los cambios más útiles de inmediato en las notas.&lt;/p&gt;
&lt;p&gt;A partir de &lt;code&gt;26.04&lt;/code&gt;, el &lt;code&gt;kit de herramientas NVIDIA CUDA&lt;/code&gt; ahora se puede instalar directamente desde Ubuntu Archive:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install cuda-toolkit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El valor aquí es mayor que simplemente guardar algunos pasos de configuración.&lt;/p&gt;
&lt;p&gt;Para los desarrolladores que envían software en Ubuntu, este nuevo modelo significa que pueden simplemente declarar una dependencia del &amp;ldquo;tiempo de ejecución CUDA&amp;rdquo;, mientras que Ubuntu gestiona la instalación y la compatibilidad a nivel de distribución. Eso hace que CUDA se sienta más como una capacidad nativa del sistema en Ubuntu, en lugar de una capa de software adicional que siempre debe mantenerse por separado.&lt;/p&gt;
&lt;h2 id=&#34;3-amd-rocm-710-ya-está-en-universe&#34;&gt;3. AMD ROCm 7.1.0 ya está en Universe
&lt;/h2&gt;&lt;p&gt;Por el lado de AMD, Ubuntu Universe ahora incluye &lt;code&gt;ROCm 7.1.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Estas bibliotecas proporcionan principalmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;infraestructura backend para entrenamiento e inferencia de IA en GPU AMD&lt;/li&gt;
&lt;li&gt;fundamentos de software para el aprendizaje automático y la informática de alto rendimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Canonical también señala que los componentes relacionados con ROCm se prueban continuamente en su canal de CI/CD. Más allá de &amp;ldquo;autopkgtests&amp;rdquo;, eso incluye varias aplicaciones de espacio de usuario como:&lt;/p&gt;
&lt;p&gt;-&lt;code&gt;llama.cpp&lt;/code&gt;
-&lt;code&gt;pytorch&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;licuadora&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Servidor de limonada&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ese detalle es importante, porque muestra que Ubuntu no se limita a colocar paquetes en el archivo. Está validando ROCm como una pila de software mantenible.&lt;/p&gt;
&lt;h2 id=&#34;4-la-historia-más-importante-es-que-los-tres-ecosistemas-de-gpu-están-aterrizando&#34;&gt;4. La historia más importante es que los tres ecosistemas de GPU están aterrizando
&lt;/h2&gt;&lt;p&gt;Es más fácil ver la dirección de &lt;code&gt;26.04&lt;/code&gt; cuando &lt;code&gt;DPC++&lt;/code&gt;, &lt;code&gt;CUDA&lt;/code&gt; y &lt;code&gt;ROCm&lt;/code&gt; se ven juntos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intel: incorporando componentes &lt;code&gt;SYCL&lt;/code&gt;/&lt;code&gt;oneAPI&lt;/code&gt; a repositorios oficiales&lt;/li&gt;
&lt;li&gt;NVIDIA: dando al &lt;code&gt;kit de herramientas CUDA&lt;/code&gt; una ruta de instalación administrada por distribución&lt;/li&gt;
&lt;li&gt;AMD: lanzando &lt;code&gt;ROCm 7.1.0&lt;/code&gt; en Universe con pruebas en curso&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si trabaja con este tipo de cargas de trabajo en Ubuntu, esta versión probablemente le resultará más relevante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;inferencia local LLM&lt;/li&gt;
&lt;li&gt;Entrenamiento o ajuste acelerado por GPU&lt;/li&gt;
&lt;li&gt;Blender, informática científica y HPC.&lt;/li&gt;
&lt;li&gt;entornos de desarrollo que necesitan moverse a través de diferentes plataformas GPU&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En otras palabras, Ubuntu ya no es sólo &amp;ldquo;un sistema donde puedes instalar un controlador de GPU&amp;rdquo;. Está comenzando a tener una &lt;strong&gt;pila de software de espacio de usuario más completa para computación con IA y GPU&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;5-nvidia-dynamic-boost-está-habilitado-de-forma-predeterminada&#34;&gt;5. NVIDIA Dynamic Boost está habilitado de forma predeterminada
&lt;/h2&gt;&lt;p&gt;Desde el &amp;ldquo;25.04&amp;rdquo;, &amp;ldquo;Dynamic Boost&amp;rdquo; se ha habilitado de forma predeterminada en las computadoras portátiles NVIDIA compatibles.&lt;/p&gt;
&lt;p&gt;La idea es sencilla: dependiendo de la carga del sistema, la energía se puede cambiar dinámicamente entre la CPU y la GPU. En escenarios de juegos, eso generalmente significa darle más potencia a la GPU cuando sea necesario para extraer más rendimiento.&lt;/p&gt;
&lt;p&gt;Sólo se aplica bajo dos condiciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la computadora portátil está conectada a la alimentación de CA&lt;/li&gt;
&lt;li&gt;la carga de la GPU es lo suficientemente alta&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No se activa mientras el sistema está funcionando con batería.&lt;/p&gt;
&lt;h2 id=&#34;6-la-compatibilidad-con-las-nuevas-gpu-intel-integradas-y-discretas-sigue-avanzando&#34;&gt;6. La compatibilidad con las nuevas GPU Intel integradas y discretas sigue avanzando
&lt;/h2&gt;&lt;p&gt;Ubuntu también continúa ampliando el soporte para nuevas GPU Intel, que incluyen:&lt;/p&gt;
&lt;p&gt;Integrado:&lt;/p&gt;
&lt;p&gt;-&lt;code&gt;Intel Core Ultra Xe2&lt;/code&gt;
-&lt;code&gt;Intel Core Ultra Xe3&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Discreto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Intel Arco 5 B570&lt;/code&gt;
-&lt;code&gt;Intel Arc 5 B580&lt;/code&gt;
-&lt;code&gt;Intel Arc Pro B50&lt;/code&gt;
-&lt;code&gt;Intel Arc Pro B60&lt;/code&gt;
-&lt;code&gt;Intel Arc Pro B65&lt;/code&gt;
-&lt;code&gt;Intel Arc Pro B70&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ubuntu también destaca varias características que ya están disponibles en estos dispositivos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rendimiento mejorado del trazado de rayos de GPU y CPU a través de Intel Embree, beneficiando aplicaciones como &lt;code&gt;Blender 4.2+&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;codificación de vídeo por hardware para &lt;code&gt;AVC&lt;/code&gt;, &lt;code&gt;JPEG&lt;/code&gt;, &lt;code&gt;HEVC&lt;/code&gt; y &lt;code&gt;AV1&lt;/code&gt; en dispositivos &amp;ldquo;Battlemage&amp;rdquo;&lt;/li&gt;
&lt;li&gt;una nueva optimización &lt;code&gt;CCS&lt;/code&gt; en Intel Compute Runtime&lt;/li&gt;
&lt;li&gt;soporte de depuración habilitado para GPU Intel Xe&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si está viendo las versiones de seguimiento, &amp;ldquo;25.10&amp;rdquo; también continúa incorporando más capacidades, que incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;soporte inicial para la plataforma de cliente de próxima generación de Intel con nombre en código &lt;code&gt;Panther Lake&lt;/code&gt; hasta &lt;code&gt;Linux kernel 6.17&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;IOMMU mejorado, subsistema PCIe y compatibilidad con múltiples GPU&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Mesa 25.2.3&lt;/code&gt; habilitando &lt;code&gt;VK_KHR_shader_bfloat16&lt;/code&gt; para Battlemage y Panther Lake&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intel-media-driver 25.3.0&lt;/code&gt; agrega soporte de decodificación Panther Lake y codificación &lt;code&gt;VP9&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intel-compute-runtime 25.31&lt;/code&gt; ajusta el comportamiento de asignación de eventos de memoria del dispositivo local y del grupo &lt;code&gt;USM&lt;/code&gt; de nivel cero&lt;/li&gt;
&lt;li&gt;&lt;code&gt;level-zero 1.24&lt;/code&gt; y &lt;code&gt;level-zero-raytracing 1.1.0&lt;/code&gt; brindan compatibilidad con especificaciones más amplias y extensión RTAS&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-suspender-y-reanudar-también-es-más-estable-en-las-computadoras-de-escritorio-nvidia&#34;&gt;7. Suspender y reanudar también es más estable en las computadoras de escritorio Nvidia
&lt;/h2&gt;&lt;p&gt;A partir de &lt;code&gt;25.10&lt;/code&gt;, Ubuntu habilita el soporte de suspensión y reanudación en el controlador propietario &lt;code&gt;Nvidia&lt;/code&gt; para reducir la corrupción y la congelación al activar un sistema de escritorio.&lt;/p&gt;
&lt;p&gt;Este no es el tipo de cambio más visible, pero es muy importante en el uso diario, especialmente en computadoras de escritorio que permanecen encendidas durante períodos prolongados y que se suspenden y reanudan con frecuencia.&lt;/p&gt;
&lt;h2 id=&#34;8-arm-raspberry-pi-risc-v-e-ibm-z-también-reciben-cambios-más-difíciles-a-nivel-de-plataforma&#34;&gt;8. ARM, Raspberry Pi, RISC-V e IBM Z también reciben cambios más difíciles a nivel de plataforma
&lt;/h2&gt;&lt;p&gt;Más allá de la pila de software de GPU, las notas de la versión también incluyen varios cambios a nivel de plataforma que vale la pena mencionar por separado.&lt;/p&gt;
&lt;h3 id=&#34;plataformas-de-escritorio-arm64&#34;&gt;Plataformas de escritorio ARM64
&lt;/h3&gt;&lt;p&gt;A partir de &lt;code&gt;25.10&lt;/code&gt;, el kernel &lt;code&gt;linux-generic&lt;/code&gt; &lt;code&gt;ARM64&lt;/code&gt; proporciona una compatibilidad de escritorio más amplia para las plataformas de escritorio ARM64 que arrancan a través de &lt;code&gt;UEFI&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;un-nuevo-diseño-de-arranque-de-raspberry-pi&#34;&gt;Un nuevo diseño de arranque de Raspberry Pi
&lt;/h3&gt;&lt;p&gt;Un cambio introducido en &lt;code&gt;25.10&lt;/code&gt; y refinado en &lt;code&gt;26.04&lt;/code&gt; es un nuevo diseño de partición de arranque para sistemas Raspberry Pi.
Su objetivo es mejorar la confiabilidad del arranque: los recursos de arranque recién escritos primero se &amp;ldquo;prueban&amp;rdquo; antes de confirmarlos como el nuevo conjunto &amp;ldquo;bueno conocido&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Los requisitos de fecha del firmware son la parte que la mayoría de los usuarios querrán recordar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Pi 3 / 3+ / CM3+ / Zero 2W&lt;/code&gt;: no se requiere ninguna acción adicional, el firmware de arranque está en la propia imagen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Pi 4/400/CM4&lt;/code&gt;: el firmware de arranque no debe tener una fecha anterior a &lt;code&gt;2022-11-25&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Pi 5/500/CM5&lt;/code&gt;: el firmware de arranque no debe tener una fecha anterior a &lt;code&gt;2025-02-11&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Puedes comprobarlo con:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rpi-eeprom-update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si el firmware es demasiado antiguo y está utilizando &amp;ldquo;Ubuntu 24.04 LTS&amp;rdquo; o más reciente, puede actualizarlo de esta manera:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rpi-eeprom-update -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;las-imágenes-de-escritorio-de-raspberry-pi-ahora-usan-escritorio-mínimo&#34;&gt;Las imágenes de escritorio de Raspberry Pi ahora usan escritorio mínimo
&lt;/h3&gt;&lt;p&gt;Desde &amp;ldquo;25.10&amp;rdquo;, las imágenes de escritorio de Ubuntu para Raspberry Pi se basan en &amp;ldquo;desktop-minimal&amp;rdquo; en lugar de en la semilla de &amp;ldquo;escritorio&amp;rdquo; completa.&lt;/p&gt;
&lt;p&gt;Ubuntu ofrece aquí un beneficio muy concreto: el conjunto de aplicaciones predeterminado es más pequeño, lo que ahorra alrededor de &amp;ldquo;777 MB&amp;rdquo; en la imagen sin comprimir y en los sistemas instalados.&lt;/p&gt;
&lt;p&gt;Si desea eliminar esa aplicación predeterminada configurada de forma masiva después de la actualización, puede usar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt purge ubuntu-desktop --autoremove
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si desea conservar algunas de esas aplicaciones, primero márquelas como instaladas manualmente con &amp;ldquo;apt&amp;rdquo;.&lt;/p&gt;
&lt;h3 id=&#34;el-intercambio-en-raspberry-pi-ahora-lo-maneja-cloud-init&#34;&gt;El intercambio en Raspberry Pi ahora lo maneja cloud-init
&lt;/h3&gt;&lt;p&gt;Desde &amp;ldquo;25.10&amp;rdquo;, la creación de archivos de intercambio en imágenes de escritorio de Raspberry Pi se maneja mediante &amp;ldquo;cloud-init&amp;rdquo;.&lt;br&gt;
Si desea personalizar el tamaño del intercambio antes del primer inicio, puede editar los &amp;ldquo;datos de usuario&amp;rdquo; directamente en la partición de inicio.&lt;/p&gt;
&lt;h3 id=&#34;los-requisitos-de-risc-v-han-aumentado&#34;&gt;Los requisitos de RISC-V han aumentado
&lt;/h3&gt;&lt;p&gt;A partir de &lt;code&gt;25.10&lt;/code&gt;, la compilación &lt;code&gt;RISC-V&lt;/code&gt; de &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; requiere hardware que implemente el &lt;code&gt;perfil ISA RVA23S64&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Los sistemas que no cumplan con ese requisito ya no podrán ejecutar &amp;ldquo;Ubuntu 26.04 LTS&amp;rdquo;. Si todavía tiene placas basadas en núcleos de procesador &amp;ldquo;RVA20&amp;rdquo; anteriores, debe permanecer en la línea de soporte proporcionada por &amp;ldquo;Ubuntu 24.04 LTS&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Según Ubuntu, a partir de &amp;ldquo;abril de 2026&amp;rdquo;, todavía no hay hardware &amp;ldquo;RVA23S64&amp;rdquo; real disponible. Por lo tanto, la única plataforma actualmente compatible es efectivamente un entorno virtualizado &amp;ldquo;QEMU&amp;rdquo; configurado con &amp;ldquo;-cpu rva23s64&amp;rdquo;.&lt;/p&gt;
&lt;h3 id=&#34;ibm-z-ahora-requiere-z15-como-mínimo&#34;&gt;IBM Z ahora requiere z15 como mínimo
&lt;/h3&gt;&lt;p&gt;A partir de &lt;code&gt;26.04&lt;/code&gt;, el requisito mínimo para la arquitectura &lt;code&gt;s390x&lt;/code&gt; pasó a &lt;code&gt;z15&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Eso significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;z14&lt;/code&gt; / &lt;code&gt;LinuxONE II&lt;/code&gt; y sistemas más antiguos ya no pueden instalar &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;z15&lt;/code&gt; / &lt;code&gt;LinuxONE III&lt;/code&gt; y los sistemas más nuevos deberían tener un mejor rendimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;9-quién-debería-leer-esto-primero&#34;&gt;9. ¿Quién debería leer esto primero?
&lt;/h2&gt;&lt;p&gt;Este artículo es más útil que la descripción general del escritorio si se encuentra en alguno de estos casos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;usas Ubuntu para &lt;code&gt;CUDA&lt;/code&gt;, &lt;code&gt;ROCm&lt;/code&gt;, &lt;code&gt;SYCL&lt;/code&gt; o inferencia de IA local&lt;/li&gt;
&lt;li&gt;realiza trabajos de desarrollo o computación en GPU Intel, NVIDIA o AMD&lt;/li&gt;
&lt;li&gt;mantiene Raspberry Pi, ARM64, RISC-V, IBM Z u otras plataformas x86 no estándar&lt;/li&gt;
&lt;li&gt;eres especialmente sensible a la disponibilidad del repositorio, el comportamiento del controlador, los tiempos de ejecución y los requisitos de la plataforma después de una actualización&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;10-comida-para-llevar-de-una-línea&#34;&gt;10. Comida para llevar de una línea
&lt;/h2&gt;&lt;p&gt;El punto clave de &amp;ldquo;Ubuntu 26.04 LTS&amp;rdquo; en el lado del hardware y la pila de IA no es que un proveedor de GPU haya obtenido una actualización destacada. Es que &lt;strong&gt;DPC++ de Intel, CUDA de NVIDIA y ROCm de AMD están ingresando al ecosistema Ubuntu de una manera más oficial, en repositorio y mantenible&lt;/strong&gt;.
Si solía pensar en Ubuntu como &amp;ldquo;primero el sistema, luego yo mismo ensamblo el entorno de GPU&amp;rdquo;, &lt;code&gt;26.04&lt;/code&gt; comienza a parecerse más a una distribución que está dispuesta a transportar activamente IA y cargas de trabajo informáticas heterogéneas.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Lanzamiento de Ubuntu 26.04 LTS: importantes actualizaciones de escritorio con GNOME 50 y Linux 7.0</title>
        <link>https://www.knightli.com/es/2026/04/26/ubuntu-26-04-lts-release-notes/</link>
        <pubDate>Sun, 26 Apr 2026 16:10:25 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/04/26/ubuntu-26-04-lts-release-notes/</guid>
        <description>&lt;p&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; se lanzó el &lt;strong&gt;23 de abril de 2026&lt;/strong&gt;, con el nombre en clave &lt;code&gt;Resolute Raccoon&lt;/code&gt;. Esta es la nueva versión de soporte a largo plazo, con soporte estándar hasta &lt;strong&gt;abril de 2031&lt;/strong&gt;. Si utiliza &lt;code&gt;Ubuntu Pro&lt;/code&gt;, el mantenimiento de la seguridad se puede extender a &lt;strong&gt;10 años&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Si está actualizando desde &lt;code&gt;Ubuntu 24.04 LTS&lt;/code&gt;, esto es más que una versión de rutina. También incluye los principales cambios introducidos en &lt;code&gt;24.10&lt;/code&gt;, &lt;code&gt;25.04&lt;/code&gt; y &lt;code&gt;25.10&lt;/code&gt;. Por lo tanto, este artículo funciona mejor como guía rápida sobre lo que vale la pena comprobar antes de actualizar.&lt;/p&gt;
&lt;p&gt;Si solo desea obtener las conclusiones más importantes de este lanzamiento, recuerde primero estos cuatro puntos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GNOME 50&lt;/code&gt; ha llegado a una versión LTS, aportando mejoras más claras a la experiencia de escritorio y soporte de pantalla&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Linux kernel 7.0&lt;/code&gt; se convierte en la nueva base, actualizando tanto el soporte de hardware como la base de mantenimiento a largo plazo.&lt;/li&gt;
&lt;li&gt;Ubuntu Desktop ahora se ha trasladado completamente a &lt;code&gt;Wayland&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;El conjunto de aplicaciones predeterminado se ha actualizado en todos los ámbitos, con actualizaciones importantes para &lt;code&gt;Firefox&lt;/code&gt;, &lt;code&gt;LibreOffice&lt;/code&gt;, &lt;code&gt;Thunderbird&lt;/code&gt; y &lt;code&gt;GIMP&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-comience-con-las-actualizaciones-clave&#34;&gt;1. Comience con las actualizaciones clave
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; es una versión de soporte a largo plazo con soporte estándar hasta &lt;code&gt;2031-04&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;El entorno de escritorio se ha actualizado a &lt;code&gt;GNOME 50&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;El kernel genérico se ha movido a &lt;code&gt;Linux kernel 7.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ubuntu Desktop ahora proporciona sólo una sesión &lt;code&gt;Wayland&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Las versiones anteriores no pueden saltar directamente a &lt;code&gt;26.04&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si todavía está en &lt;code&gt;Ubuntu 22.04 LTS&lt;/code&gt; o &lt;code&gt;25.04&lt;/code&gt;, la recomendación oficial es actualizar primero a &lt;code&gt;Ubuntu 24.04 LTS&lt;/code&gt; o &lt;code&gt;25.10&lt;/code&gt; y luego continuar a &lt;code&gt;26.04 LTS&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;2-mayor-cambio-1-gnome-50-ahora-está-en-lts&#34;&gt;2. Mayor cambio #1: GNOME 50 ahora está en LTS
&lt;/h2&gt;&lt;p&gt;El cambio más visible en el lado del escritorio esta vez es que &lt;code&gt;GNOME 50&lt;/code&gt; finalmente entró en una versión LTS. Para la mayoría de los usuarios, el valor no es una característica llamativa e independiente, sino una experiencia de escritorio más fluida en general:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mejor usabilidad en pantallas pequeñas y ventanas estrechas&lt;/li&gt;
&lt;li&gt;Las notificaciones se pueden agrupar por aplicación.&lt;/li&gt;
&lt;li&gt;Mejoras continuas en HDR, VRR y escalado fraccional&lt;/li&gt;
&lt;li&gt;Mejor fluidez y estabilidad en escenarios relacionados con escritorio remoto, Wayland y NVIDIA&lt;/li&gt;
&lt;li&gt;Mayor soporte de accesibilidad, incluidas actualizaciones claras del lector de pantalla &amp;ldquo;Orca&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ubuntu también ha agregado algunos cambios prácticos propios:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La búsqueda global de GNOME Shell puede encontrar directamente aplicaciones &lt;code&gt;snap&lt;/code&gt; disponibles&lt;/li&gt;
&lt;li&gt;Las búsquedas web también se pueden activar directamente desde la búsqueda.&lt;/li&gt;
&lt;li&gt;El tema &lt;code&gt;Yaru&lt;/code&gt; continúa acercándose al estilo original de GNOME.&lt;/li&gt;
&lt;li&gt;Los permisos, el acceso a archivos y el comportamiento de arrastrar y soltar para aplicaciones &amp;ldquo;snap&amp;rdquo; se sienten más naturales en el escritorio&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si utiliza principalmente la edición de escritorio, el verdadero objetivo de este LTS no es una revisión visual dramática. Es que muchas pequeñas fricciones del pasado se han eliminado juntas.&lt;/p&gt;
&lt;h2 id=&#34;3-mayor-cambio-nº-2-las-aplicaciones-predeterminadas-obtuvieron-una-amplia-actualización&#34;&gt;3. Mayor cambio n.º 2: las aplicaciones predeterminadas obtuvieron una amplia actualización
&lt;/h2&gt;&lt;p&gt;En comparación con &lt;code&gt;24.04 LTS&lt;/code&gt;, la aplicación integrada configurada en &lt;code&gt;26.04 LTS&lt;/code&gt; se ha actualizado en gran medida:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Firefox&lt;/code&gt; pasa a &lt;code&gt;150&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LibreOffice&lt;/code&gt; pasa de &lt;code&gt;24.2&lt;/code&gt; a &lt;code&gt;25.8&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Thunderbird&lt;/code&gt; pasa a &lt;code&gt;140&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GIMP&lt;/code&gt; salta de &lt;code&gt;2.10&lt;/code&gt; a &lt;code&gt;3.2&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;También existen varios reemplazos que son importantes en el uso diario:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El visor de PDF ahora es &amp;ldquo;Papers&amp;rdquo;, reemplazando a &amp;ldquo;Evince&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;El visor de imágenes ahora es &amp;ldquo;Lupa&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;La terminal ahora es &lt;code&gt;Ptyxis&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;El monitor del sistema ahora es &amp;ldquo;Recursos&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;El reproductor de vídeo predeterminado ahora es &amp;ldquo;Showtime&amp;rdquo;.
La dirección detrás de estos cambios es clara: Ubuntu se está inclinando más hacia una nueva generación de aplicaciones GNOME construidas sobre &lt;code&gt;GTK4&lt;/code&gt;, &lt;code&gt;libadwaita&lt;/code&gt; y, en algunos casos, reescrituras basadas en Rust.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;4-mayor-cambio-n-3-wayland-ahora-es-la-única-sesión-de-escritorio&#34;&gt;4. Mayor cambio n.° 3: Wayland ahora es la única sesión de escritorio
&lt;/h2&gt;&lt;p&gt;Este es el cambio más importante para muchos usuarios veteranos.&lt;/p&gt;
&lt;p&gt;El cambio que comenzó en &lt;code&gt;25.10&lt;/code&gt; ahora está completamente establecido en &lt;code&gt;26.04 LTS&lt;/code&gt;: Ubuntu Desktop se ejecuta solo en el backend &lt;code&gt;Wayland&lt;/code&gt;, porque &lt;code&gt;GNOME Shell&lt;/code&gt; ya no puede ejecutarse como una sesión &lt;code&gt;X.org&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Eso no significa que las aplicaciones antiguas dejen de funcionar repentinamente. Las notas oficiales dejan claro que las aplicaciones &amp;ldquo;X.org&amp;rdquo; aún pueden ejecutarse a través de la capa de compatibilidad &amp;ldquo;XWayland&amp;rdquo;. Pero si su flujo de trabajo aún depende de controladores de gráficos más antiguos, ciertos métodos de escritorio remoto, herramientas de grabación de pantalla o detalles del método de entrada, esto es algo que aún debe verificar antes de actualizar.&lt;/p&gt;
&lt;h2 id=&#34;5-mayor-cambio-nº-4-el-kernel-de-linux-70-y-la-pila-inferior-avanzan-juntos&#34;&gt;5. Mayor cambio n.º 4: el kernel de Linux 7.0 y la pila inferior avanzan juntos
&lt;/h2&gt;&lt;p&gt;La pila genérica GA en &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; pasa de &lt;code&gt;Linux 6.8&lt;/code&gt; a &lt;code&gt;Linux 7.0&lt;/code&gt;, y la pila HWE también se unifica en &lt;code&gt;7.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Entre los cambios de nivel inferior destacados por Ubuntu, los más relevantes para usuarios y operadores en general son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El volcado por caída está habilitado de forma predeterminada tanto en el escritorio como en el servidor.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sched_ext&lt;/code&gt; introduce un nuevo modelo de extensión de programación que permite a los desarrolladores implementar políticas de programación con eBPF&lt;/li&gt;
&lt;li&gt;El paquete binario &lt;code&gt;linux-lowlatency&lt;/code&gt; está siendo retirado y reemplazado por &lt;code&gt;linux-generic&lt;/code&gt; más el paquete de espacio de usuario &lt;code&gt;lowlatency-kernel&lt;/code&gt; para ajuste de baja latencia.&lt;/li&gt;
&lt;li&gt;La variante de arquitectura &lt;code&gt;amd64v3&lt;/code&gt; está disponible como opción, pero aún está habilitada de forma predeterminada.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si su máquina es relativamente nueva, vale la pena vigilar &amp;ldquo;amd64v3&amp;rdquo;. Las notas oficiales dan este método de habilitación:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;APT::Architecture-Variants &amp;#34;amd64v3&amp;#34;;&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee /etc/apt/apt.conf.d/99enable-amd64v3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Dicho esto, no se habilita automáticamente. Ubuntu todavía prioriza la compatibilidad primero.&lt;/p&gt;
&lt;h2 id=&#34;6-requisitos-de-hardware-y-línea-base-de-instalación&#34;&gt;6. Requisitos de hardware y línea base de instalación
&lt;/h2&gt;&lt;p&gt;La base de referencia oficial recomendada para Ubuntu Desktop 26.04 LTS es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un procesador de doble núcleo de &lt;code&gt;2 GHz&lt;/code&gt; o mejor&lt;/li&gt;
&lt;li&gt;Al menos &lt;code&gt;6 GB de RAM&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Al menos &amp;ldquo;25 GB&amp;rdquo; de almacenamiento disponible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si su máquina es más ligera, la recomendación oficial es considerar versiones de Ubuntu como &lt;code&gt;Xubuntu&lt;/code&gt; o &lt;code&gt;Lubuntu&lt;/code&gt;.&lt;br&gt;
La edición de servidor tiene un piso inferior. La documentación señala que puede comenzar desde &amp;ldquo;1,5 GB de RAM&amp;rdquo; y &amp;ldquo;4 GB&amp;rdquo; de almacenamiento, aunque el requisito real aún depende de su carga de trabajo.&lt;/p&gt;
&lt;h2 id=&#34;7-quién-debería-priorizar-la-actualización&#34;&gt;7. ¿Quién debería priorizar la actualización?
&lt;/h2&gt;&lt;p&gt;Si ya está en &lt;code&gt;24.04 LTS&lt;/code&gt; y desea lo siguiente, vale la pena echarle un vistazo a &lt;code&gt;26.04 LTS&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una actualización de la pila de escritorio de generación completa en lugar de parches menores&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Wayland&lt;/code&gt; más maduro y soporte de visualización&lt;/li&gt;
&lt;li&gt;Un conjunto de aplicaciones predeterminado más actualizado&lt;/li&gt;
&lt;li&gt;Un kernel más nuevo con una pista de soporte más larga.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero si todavía depende en gran medida de flujos de trabajo &lt;code&gt;X11&lt;/code&gt; antiguos, controladores especiales o extensiones de escritorio personalizadas, o si su entorno de producción es extremadamente conservador con respecto a los cambios, es mejor realizar una prueba de compatibilidad antes de actualizar.&lt;/p&gt;
&lt;h2 id=&#34;8-resumen-de-una-línea&#34;&gt;8. Resumen de una línea
&lt;/h2&gt;&lt;p&gt;El valor de &amp;ldquo;Ubuntu 26.04 LTS&amp;rdquo; no es una característica especialmente llamativa. Es que Ubuntu ha incorporado dos años de progreso de escritorio, kernel, aplicaciones y compatibilidad a una nueva línea base LTS, todo a la vez.
Si desea el juicio más breve posible, es este: &lt;strong&gt;esta es una versión LTS de Ubuntu que se siente más nueva y más estable en su conjunto, en lugar de una basada en una única característica destacada.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;enlaces-relacionados&#34;&gt;Enlaces relacionados
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Notas de la versión oficial: &lt;code&gt;https://documentation.ubuntu.com/release-notes/26.04/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resumen para usuarios de LTS: &lt;code&gt;https://documentation.ubuntu.com/release-notes/26.04/summary-for-lts-users/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Comprensión del marco de trabajo de nftables: tablas, cadenas, reglas y conjuntos</title>
        <link>https://www.knightli.com/es/2026/04/18/nftables-framework-concepts/</link>
        <pubDate>Sat, 18 Apr 2026 10:31:12 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/04/18/nftables-framework-concepts/</guid>
        <description>&lt;p&gt;Al aprender &lt;code&gt;nftables&lt;/code&gt;, es fácil comenzar con los detalles del comando: cómo agregar una regla, cómo eliminar un identificador o cómo escribir una coincidencia de puerto. Los comandos son importantes, pero si primero comprende el marco, leer reglas, solucionar problemas y diseñar conjuntos de reglas será mucho más fácil.&lt;/p&gt;
&lt;p&gt;Puedes pensar en nftables como una estructura en capas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;table&lt;/code&gt; aísla los espacios de nombres de reglas.&lt;/li&gt;
&lt;li&gt;La &amp;ldquo;familia&amp;rdquo; decide a qué protocolos de red se aplican las reglas.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;cadena&amp;rdquo; decide en qué etapa se ejecutan las reglas.&lt;/li&gt;
&lt;li&gt;La &lt;code&gt;regla&lt;/code&gt; define el partido y la acción reales.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;set&lt;/code&gt;, &lt;code&gt;map&lt;/code&gt; y &lt;code&gt;verdict map&lt;/code&gt; reducen las reglas repetidas y facilitan el mantenimiento de los conjuntos de reglas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las siguientes secciones explican estos conceptos capa por capa.&lt;/p&gt;
&lt;h2 id=&#34;tabla-espacio-de-nombres-de-reglas&#34;&gt;tabla: espacio de nombres de reglas
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;table&lt;/code&gt; es el contenedor de reglas más externo en nftables. Las diferentes tablas están aisladas entre sí, por lo que una práctica común es colocar reglas relacionadas en la misma tabla.&lt;/p&gt;
&lt;p&gt;Por ejemplo, puede separar reglas de filtrado, reglas NAT o reglas de prueba personalizadas. Esto mantiene los límites claros: al depurar, sabes qué grupo de reglas estás cambiando; Al limpiar, es menos probable que elimines por error contenido no relacionado.&lt;/p&gt;
&lt;p&gt;Una tabla en sí misma no procesa paquetes directamente. Los objetos de cadena y regla dentro de la tabla son los que realmente participan en el procesamiento de paquetes.&lt;/p&gt;
&lt;h2 id=&#34;familia-a-qué-protocolos-se-aplican-las-reglas&#34;&gt;familia: a qué protocolos se aplican las reglas
&lt;/h2&gt;&lt;p&gt;Al crear una tabla, debe elegir una &amp;ldquo;familia&amp;rdquo;. Determina a qué tipo de paquetes se aplican las reglas de la tabla.&lt;/p&gt;
&lt;p&gt;Las familias comunes se pueden entender de esta manera:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ip&lt;/code&gt;: solo maneja IPv4.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ip6&lt;/code&gt;: solo maneja IPv6.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;inet&lt;/code&gt;: maneja tanto IPv4 como IPv6.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;arp&lt;/code&gt;: maneja ARP.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bridge&lt;/code&gt;: maneja el tráfico de la capa de puente.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;netdev&lt;/code&gt;: más cercano a la ruta de ingreso del dispositivo de red, adecuado para manejar el tráfico en una etapa anterior.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para las reglas de firewall ordinarias, se utiliza comúnmente &amp;ldquo;inet&amp;rdquo;. Le permite mantener las reglas de IPv4 e IPv6 en la misma tabla y evita mantener dos estructuras de reglas similares.&lt;/p&gt;
&lt;h2 id=&#34;cadena-dónde-se-ejecutan-las-reglas&#34;&gt;cadena: Dónde se ejecutan las reglas
&lt;/h2&gt;&lt;p&gt;&amp;ldquo;cadena&amp;rdquo; es una lista de reglas. Después de que un paquete ingresa a un gancho, pasa por las reglas de la cadena en orden.&lt;/p&gt;
&lt;p&gt;Las cadenas se pueden dividir a grandes rasgos en dos tipos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Cadena base: adjunta a un gancho en la ruta de la red del kernel y llamada activamente por el flujo de paquetes.&lt;/li&gt;
&lt;li&gt;Cadena normal: no unida directamente a un gancho; debe ser llamado mediante saltos de otras reglas.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Una cadena base suele especificar varias propiedades clave:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tipo&lt;/code&gt;: el propósito de la cadena, como &lt;code&gt;filtro&lt;/code&gt;, &lt;code&gt;nat&lt;/code&gt; o &lt;code&gt;ruta&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hook&lt;/code&gt;: la etapa de procesamiento, como &lt;code&gt;prerouting&lt;/code&gt;, &lt;code&gt;input&lt;/code&gt;, &lt;code&gt;forward&lt;/code&gt;, &lt;code&gt;output&lt;/code&gt; o &lt;code&gt;postrouting&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prioridad&lt;/code&gt;: cuando existen varias cadenas en el mismo gancho, esto decide cuál se ejecuta primero.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;política&lt;/code&gt;: la acción predeterminada cuando no coincide ninguna regla, comúnmente &lt;code&gt;aceptar&lt;/code&gt; o &lt;code&gt;eliminar&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El punto clave es que las reglas no entran en vigor en cualquier lugar. La misma regla tiene un significado completamente diferente cuando se coloca en &amp;ldquo;entrada&amp;rdquo;, &amp;ldquo;adelante&amp;rdquo; o &amp;ldquo;salida&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;regla-coincidir-condiciones-más-acciones&#34;&gt;regla: Coincidir condiciones más acciones
&lt;/h2&gt;&lt;p&gt;La &amp;ldquo;regla&amp;rdquo; es donde nftables realmente toma decisiones. Suele constar de dos partes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Condiciones de coincidencia: IP de origen, IP de destino, protocolo, puerto, interfaz, estado de conexión, etc.&lt;/li&gt;
&lt;li&gt;Acciones: &lt;code&gt;aceptar&lt;/code&gt;, &lt;code&gt;soltar&lt;/code&gt;, &lt;code&gt;rechazar&lt;/code&gt;, &lt;code&gt;contrarrestar&lt;/code&gt;, &lt;code&gt;saltar&lt;/code&gt;, &lt;code&gt;regresar&lt;/code&gt;, etc.
Las reglas se evalúan en orden. Después de que un paquete coincide con una acción que finaliza el procesamiento, las reglas posteriores ya no se evalúan. Si nada coincide, la evaluación continúa hasta que finaliza la cadena o se activa la política predeterminada.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta es la razón por la que el orden de las reglas es importante: las reglas más específicas generalmente deben aparecer antes que las reglas más amplias; de lo contrario, es posible que nunca tengan la oportunidad de ejecutarse.&lt;/p&gt;
&lt;h2 id=&#34;set-agrupar-valores&#34;&gt;set: Agrupar valores
&lt;/h2&gt;&lt;p&gt;Si necesita hacer coincidir muchas direcciones IP, puertos o interfaces, escribir muchas reglas separadas resulta difícil de mantener. &lt;code&gt;set&lt;/code&gt; te permite administrar un grupo de valores del mismo tipo en un solo lugar.&lt;/p&gt;
&lt;p&gt;Por ejemplo, un grupo de IP confiables, un grupo de puertos bloqueados o un grupo de direcciones que necesitan limitación de velocidad se pueden almacenar en un conjunto. La regla sólo necesita comprobar si un valor pertenece a ese conjunto.&lt;/p&gt;
&lt;p&gt;Los beneficios del conjunto son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menos reglas.&lt;/li&gt;
&lt;li&gt;Mejor legibilidad.&lt;/li&gt;
&lt;li&gt;Adiciones y eliminaciones de elementos más sencillas posteriormente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cuando un conjunto de reglas contiene muchas condiciones repetidas, generalmente es el momento de considerar el conjunto.&lt;/p&gt;
&lt;h2 id=&#34;map-asignar-un-valor-coincidente-a-un-resultado&#34;&gt;map: asignar un valor coincidente a un resultado
&lt;/h2&gt;&lt;p&gt;&amp;ldquo;mapa&amp;rdquo; puede entenderse como una tabla de búsqueda. Devuelve un resultado basado en un valor de entrada.&lt;/p&gt;
&lt;p&gt;Por ejemplo, diferentes puertos pueden asignarse a diferentes marcas, o diferentes direcciones pueden asignarse a diferentes parámetros de procesamiento. En comparación con escribir muchas reglas de estilo if/else, el mapa está más centralizado y es más fácil de mantener.&lt;/p&gt;
&lt;p&gt;establecer respuestas &amp;ldquo;¿está este valor en la colección?&amp;rdquo;; el mapa responde &amp;ldquo;qué resultado corresponde a este valor&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;mapa-de-veredicto-asignar-un-valor-coincidente-a-una-acción&#34;&gt;mapa de veredicto: asignar un valor coincidente a una acción
&lt;/h2&gt;&lt;p&gt;El &amp;ldquo;mapa de veredicto&amp;rdquo; es un uso importante del mapa: asigna un valor coincidente a un veredicto, lo que significa una acción de regla.&lt;/p&gt;
&lt;p&gt;Por ejemplo, diferentes rangos de IP pueden corresponder a &amp;ldquo;aceptar&amp;rdquo;, &amp;ldquo;eliminar&amp;rdquo; o saltos a diferentes cadenas. Esto puede comprimir muchas ramas en una sola estructura.&lt;/p&gt;
&lt;p&gt;Cuando un conjunto de reglas se vuelve más complejo, el mapa de veredictos es muy útil. Reduce las reglas repetidas y expresa la política más como una tabla que como una larga lista de declaraciones condicionales.&lt;/p&gt;
&lt;h2 id=&#34;diseñar-reglas-a-partir-de-los-conceptos&#34;&gt;Diseñar reglas a partir de los conceptos
&lt;/h2&gt;&lt;p&gt;Al diseñar reglas de nftables, puedes pensar en este orden:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Primero decida a qué &amp;ldquo;familia&amp;rdquo; pertenecen las reglas.&lt;/li&gt;
&lt;li&gt;Luego decida en qué &amp;ldquo;tabla&amp;rdquo; deberían entrar.&lt;/li&gt;
&lt;li&gt;Elija el &amp;ldquo;gancho&amp;rdquo; y la &amp;ldquo;cadena&amp;rdquo; adecuados.&lt;/li&gt;
&lt;li&gt;Escribe la &amp;ldquo;regla&amp;rdquo; concreta.&lt;/li&gt;
&lt;li&gt;Si hay muchas condiciones repetidas, introduzca &amp;ldquo;conjunto&amp;rdquo;, &amp;ldquo;mapa&amp;rdquo; o &amp;ldquo;mapa de veredicto&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Las reglas escritas de esta manera son más fáciles de mantener y de solucionar problemas.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Los conceptos de nftables no son complicados, pero la jerarquía importa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la tabla define los límites de las reglas.&lt;/li&gt;
&lt;li&gt;la familia define el alcance del protocolo.&lt;/li&gt;
&lt;li&gt;la cadena define la posición de ejecución.&lt;/li&gt;
&lt;li&gt;la regla define la coincidencia y la acción.&lt;/li&gt;
&lt;li&gt;establecer, mapear y veredicto gestionar la complejidad.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Primero comprenda estos conceptos y luego observe los comandos concretos. Esto es más confiable que memorizar comandos directamente. Especialmente después de que un conjunto de reglas crece, los conceptos claros lo ayudan a determinar si un problema está en el alcance del protocolo, la etapa de ejecución, el orden de las reglas o la condición de coincidencia en sí.&lt;/p&gt;
&lt;h2 id=&#34;referencias&#34;&gt;Referencias
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/10/html/configuring_firewalls_and_packet_filters/concepts-in-the-nftables-framework&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/10/html/configuring_firewalls_and_packet_filters/concepts-in-the-nftables-framework&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Inicio rápido de nftables: tablas, cadenas, reglas y operaciones comunes</title>
        <link>https://www.knightli.com/es/2026/04/18/nftables-quick-start/</link>
        <pubDate>Sat, 18 Apr 2026 10:22:07 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/04/18/nftables-quick-start/</guid>
        <description>&lt;p&gt;&lt;code&gt;nftables&lt;/code&gt; es una herramienta común de administración de reglas de firewall y filtrado de paquetes en Linux. Si solo necesita control de acceso al dispositivo, contadores de tráfico, coincidencia de puertos o limitación de velocidad básica, no necesita aprender todo el sistema de reglas de una vez. Comience con tres conceptos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;table&lt;/code&gt;: un contenedor de reglas.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cadena&lt;/code&gt;: donde se evalúan las reglas, generalmente unidas a un gancho.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;regla&lt;/code&gt;: la condición y acción coincidentes reales.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este artículo describe un flujo de trabajo mínimo que es adecuado para realizar pruebas primero en un entorno seguro.&lt;/p&gt;
&lt;h2 id=&#34;estructura-básica&#34;&gt;Estructura básica
&lt;/h2&gt;&lt;p&gt;Prepare algunas variables primero. Los siguientes comandos los reutilizan:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;table&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;customtable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;chain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;custom_control
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;target&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;drop
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;192.168.18.251
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;mac&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;00:00:01:02:03:04
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Cree una tabla &lt;code&gt;inet&lt;/code&gt; que admita IPv4 e IPv6:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add table inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Luego cree una cadena adjunta a la etapa &amp;ldquo;adelante&amp;rdquo;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; filter hook forward priority 0&lt;span class=&#34;se&#34;&gt;\;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Aquí, &amp;ldquo;tipo filtro&amp;rdquo; significa que se trata de una cadena de reglas de filtrado y &amp;ldquo;enganche hacia adelante&amp;rdquo; significa que procesa paquetes reenviados.&lt;/p&gt;
&lt;h2 id=&#34;métodos-de-coincidencia-comunes&#34;&gt;Métodos de coincidencia comunes
&lt;/h2&gt;&lt;p&gt;Coincidencia por IP de origen. Esto suele ser útil para la dirección de carga:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip saddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Coincidencia por IP de destino. Esto suele ser útil para la dirección de descarga:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip daddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Cuando se hace coincidir por dirección MAC, se puede usar &lt;code&gt;ether saddr&lt;/code&gt; para controlar el tráfico ascendente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ether saddr &lt;span class=&#34;nv&#34;&gt;$mac&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Tenga en cuenta que en redes que implican puenteo, reenvío o traducción de direcciones, es posible que los paquetes descendentes no siempre se filtren de manera confiable por MAC de destino. Para el control de acceso al dispositivo, comience validando primero &lt;code&gt;ether saddr&lt;/code&gt; o las reglas basadas en IP.&lt;/p&gt;
&lt;p&gt;Para hacer coincidir los puertos, puede cubrir tanto TCP como UDP:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; tcp, udp &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; dport &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Para hacer coincidir un rango de puertos, utilice una expresión de comparación:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; tcp dport &lt;span class=&#34;se&#34;&gt;\&amp;gt;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1024&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;contar-el-tráfico-para-un-dispositivo&#34;&gt;Contar el tráfico para un dispositivo
&lt;/h2&gt;&lt;p&gt;Si solo desea contar el tráfico de carga y descarga para una dirección IP, utilice &amp;ldquo;contrarretorno&amp;rdquo;. Después de una coincidencia, registra el contador y regresa, lo que puede reducir aún más los gastos generales de coincidencia cuando existan más reglas estadísticas más adelante.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip saddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; counter &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ip daddr &lt;span class=&#34;nv&#34;&gt;$ip&lt;/span&gt; counter &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ver las estadísticas:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft list chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si necesita ver el &amp;ldquo;identificador&amp;rdquo; de cada regla, agregue &amp;ldquo;-a&amp;rdquo;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft -a list chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;handle&lt;/code&gt; es importante porque nftables generalmente depende de él para eliminar una sola regla.&lt;/p&gt;
&lt;h2 id=&#34;limitación-de-tasa-básica&#34;&gt;Limitación de tasa básica
&lt;/h2&gt;&lt;p&gt;La limitación de la tasa se puede realizar con &amp;ldquo;tasa límite superior&amp;rdquo;. Por ejemplo, limite el tráfico a una velocidad específica por dirección MAC:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;rate&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;mbytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; ether saddr &lt;span class=&#34;nv&#34;&gt;$mac&lt;/span&gt; limit rate over &lt;span class=&#34;nv&#34;&gt;$rate&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$unit&lt;/span&gt;/second drop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Aquí, &amp;ldquo;mbytes&amp;rdquo; y &amp;ldquo;kbytes&amp;rdquo; pueden entenderse como las unidades habituales M y K. No es necesario multiplicar manualmente por 8. En la práctica, comience con un valor más relajado, confirme la dirección y el efecto correspondientes y luego apriételo si es necesario.&lt;/p&gt;
&lt;h2 id=&#34;eliminar-y-limpiar-reglas&#34;&gt;Eliminar y limpiar reglas
&lt;/h2&gt;&lt;p&gt;Primera lista de reglas con valores de &lt;code&gt;control&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft -a list chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Luego elimine una regla por identificador:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete rule inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt; handle &amp;lt;handle&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Lavar una cadena:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft flush chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Eliminar una cadena:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete chain inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$chain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Eliminar toda la tabla:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete table inet &lt;span class=&#34;nv&#34;&gt;$table&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Durante la depuración diaria, limpie únicamente la tabla que creó usted mismo. Evite cambiar directamente las tablas generadas automáticamente por el sistema u otros servicios. Esto facilita la reversión incluso si una regla está escrita incorrectamente.&lt;/p&gt;
&lt;h2 id=&#34;notas-de-uso&#34;&gt;Notas de uso
&lt;/h2&gt;&lt;p&gt;Cuando se utilizan nftables, suele ser más seguro crear primero su propia tabla y cadena independientes. Esto tiene dos beneficios:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Es menos probable que sus reglas se mezclen con las reglas del sistema existente.&lt;/li&gt;
&lt;li&gt;La depuración, el vaciado y la eliminación son más seguros.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Después de escribir reglas, utilice siempre &lt;code&gt;nft list chain&lt;/code&gt; para verificar el comportamiento de coincidencia real. Las reglas de MAC, interfaz, puerto y límite de velocidad pueden comportarse de manera diferente entre dispositivos, configuraciones de puente y versiones del sistema. Las pruebas de pequeño alcance son más seguras que escribir reglas complejas todas a la vez.&lt;/p&gt;
&lt;h2 id=&#34;referencias&#34;&gt;Referencias
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.right.com.cn/forum/thread-8369750-1-1.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://www.right.com.cn/forum/thread-8369750-1-1.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Ubicación predeterminada de modelos de Ollama y método de migración (para evitar llenar la unidad C)</title>
        <link>https://www.knightli.com/es/2026/04/06/ollama-model-storage-path-and-migration/</link>
        <pubDate>Mon, 06 Apr 2026 09:38:00 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/04/06/ollama-model-storage-path-and-migration/</guid>
        <description>&lt;p&gt;Cuando ejecutas modelos grandes localmente, lo primero que suele quedarse sin espacio es la unidad del sistema. Ollama descarga los modelos de forma predeterminada en el directorio del usuario o en un directorio del sistema. Si no planificas la ruta con antelación, la unidad C puede llenarse muy rápido.&lt;/p&gt;
&lt;h2 id=&#34;directorios-predeterminados-habituales-de-modelos-de-ollama&#34;&gt;Directorios predeterminados habituales de modelos de Ollama
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Windows: &lt;code&gt;C:\Users\&amp;lt;用户名&amp;gt;\.ollama\models&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;macOS: &lt;code&gt;~/.ollama/models&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Linux: &lt;code&gt;/usr/share/ollama/.ollama/models&lt;/code&gt; (puede variar según el método de instalación)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;windows-migrar-el-directorio-de-modelos-a-una-unidad-que-no-sea-del-sistema&#34;&gt;Windows: migrar el directorio de modelos a una unidad que no sea del sistema
&lt;/h2&gt;&lt;p&gt;Se recomienda mover el directorio de modelos, por ejemplo, a &lt;code&gt;D:\OllamaModels&lt;/code&gt;. El método clave es configurar la variable de entorno del sistema &lt;code&gt;OLLAMA_MODELS&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;1-crear-el-directorio-de-destino&#34;&gt;1. Crear el directorio de destino
&lt;/h2&gt;&lt;p&gt;Por ejemplo, crea primero: &lt;code&gt;D:\OllamaModels&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;2-configurar-la-variable-de-entorno-del-sistema&#34;&gt;2. Configurar la variable de entorno del sistema
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Nombre de variable: &lt;code&gt;OLLAMA_MODELS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Valor de variable: &lt;code&gt;D:\OllamaModels&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Puedes añadirla desde &amp;ldquo;Propiedades del sistema -&amp;gt; Opciones avanzadas -&amp;gt; Variables de entorno&amp;rdquo;, o configurarla con la línea de comandos (PowerShell como administrador):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;System.Environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]::&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SetEnvironmentVariable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;OLLAMA_MODELS&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;D:\OllamaModels&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Machine&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-reiniciar-ollama-o-reiniciar-el-sistema&#34;&gt;3. Reiniciar Ollama (o reiniciar el sistema)
&lt;/h2&gt;&lt;p&gt;Después de que la variable de entorno entre en vigor, reinicia el servicio o la aplicación de Ollama. Si no estás seguro de si ya se aplicó, reiniciar el equipo es la opción más estable.&lt;/p&gt;
&lt;h2 id=&#34;4-verificar-que-el-nuevo-directorio-esté-activo&#34;&gt;4. Verificar que el nuevo directorio esté activo
&lt;/h2&gt;&lt;p&gt;Después de descargar o hacer pull de cualquier modelo, comprueba si aparecen archivos nuevos bajo &lt;code&gt;D:\OllamaModels&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;5-limpiar-el-directorio-antiguo-después-de-confirmar&#34;&gt;5. Limpiar el directorio antiguo (después de confirmar)
&lt;/h2&gt;&lt;p&gt;Cuando confirmes que los modelos funcionan correctamente en el nuevo directorio, elimina el contenido del directorio antiguo para recuperar espacio en la unidad C.&lt;/p&gt;
&lt;h2 id=&#34;preguntas-frecuentes&#34;&gt;Preguntas frecuentes
&lt;/h2&gt;&lt;h3 id=&#34;qué-hacer-si-después-de-configurarlo-sigue-escribiendo-en-la-unidad-c&#34;&gt;Qué hacer si después de configurarlo sigue escribiendo en la unidad C
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Confirma que la variable de entorno sea una &amp;ldquo;variable del sistema&amp;rdquo;, no una variable temporal de la sesión actual.&lt;/li&gt;
&lt;li&gt;Confirma que el proceso de Ollama se haya reiniciado.&lt;/li&gt;
&lt;li&gt;Comprueba que el nombre de la variable sea exacto: debe ser &lt;code&gt;OLLAMA_MODELS&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;hay-que-migrar-los-archivos-de-modelos-antiguos&#34;&gt;Hay que migrar los archivos de modelos antiguos
&lt;/h3&gt;&lt;p&gt;Si no quieres volver a descargarlos, puedes detener Ollama, copiar manualmente los modelos antiguos al nuevo directorio y después iniciar Ollama para verificar.&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>Desinstalar Ollama por completo en Linux (incluida la limpieza de residuos)</title>
        <link>https://www.knightli.com/es/2026/04/06/uninstall-ollama-on-linux/</link>
        <pubDate>Mon, 06 Apr 2026 09:16:29 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/04/06/uninstall-ollama-on-linux/</guid>
        <description>&lt;p&gt;Si necesitas eliminar Ollama por completo en Linux, puedes seguir el orden siguiente. Este artículo limpia el servicio, el ejecutable, el directorio de modelos y también el usuario y grupo &lt;code&gt;ollama&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;avisos-antes-de-desinstalar&#34;&gt;Avisos antes de desinstalar
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Los comandos siguientes eliminarán los archivos de modelos locales de Ollama (normalmente en &lt;code&gt;/usr/share/ollama&lt;/code&gt;). Confirma antes si necesitas hacer una copia de seguridad.&lt;/li&gt;
&lt;li&gt;Los comandos usan &lt;code&gt;sudo&lt;/code&gt; por defecto. Asegúrate de que la cuenta actual tenga permisos de administrador.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-detener-y-eliminar-el-servicio-systemd&#34;&gt;1. Detener y eliminar el servicio systemd
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl stop ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl disable ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm -f /etc/systemd/system/ollama.service
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;2-eliminar-el-ejecutable-de-ollama&#34;&gt;2. Eliminar el ejecutable de Ollama
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v ollama&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  sudo rm -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$OLLAMA_BIN&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;3-eliminar-directorios-de-bibliotecas-relacionados-con-ollama-si-existen&#34;&gt;3. Eliminar directorios de bibliotecas relacionados con Ollama (si existen)
&lt;/h2&gt;&lt;p&gt;Si tu método de instalación escribió archivos de Ollama en directorios &lt;code&gt;lib&lt;/code&gt;, puedes limpiarlos así:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; d in /usr/local/lib/ollama /usr/lib/ollama /lib/ollama&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -d &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$d&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo rm -rf &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$d&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;4-eliminar-el-directorio-de-modelos-y-datos&#34;&gt;4. Eliminar el directorio de modelos y datos
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rm -rf /usr/share/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;5-eliminar-el-usuario-y-grupo-del-sistema-si-existen&#34;&gt;5. Eliminar el usuario y grupo del sistema (si existen)
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;id -u ollama &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo userdel ollama
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;getent group ollama &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo groupdel ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;6-verificar-si-la-desinstalación-terminó&#34;&gt;6. Verificar si la desinstalación terminó
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v ollama &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ollama binary not found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl status ollama &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si las comprobaciones anteriores ya no encuentran &lt;code&gt;ollama&lt;/code&gt;, la desinstalación se ha completado.&lt;/p&gt;
&lt;!-- ollama-related-links:start --&gt;
</description>
        </item>
        <item>
        <title>rsync --delete Limpieza de directorios explicada y práctica</title>
        <link>https://www.knightli.com/es/2026/03/29/rsync-delete-explained/</link>
        <pubDate>Sun, 29 Mar 2026 11:00:00 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/03/29/rsync-delete-explained/</guid>
        <description>&lt;p&gt;El propósito principal de &lt;code&gt;rsync --delete&lt;/code&gt; es eliminar archivos en el directorio de destino que no existen en el directorio de origen, para que ambos lados permanezcan consistentes.&lt;/p&gt;
&lt;p&gt;Los casos de uso típicos incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Limpieza de archivos obsoletos en el lado de destino durante la sincronización&lt;/li&gt;
&lt;li&gt;Vaciar rápidamente un directorio de destino sincronizando desde un directorio de origen vacío&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;sintaxis-básica&#34;&gt;Sintaxis básica
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync -a --delete source_dir/ target_dir/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-a&lt;/code&gt;: modo de archivo, conserva permisos, marcas de tiempo y otros atributos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--delete&lt;/code&gt;: elimina archivos adicionales en el lado de destino&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nota importante: si &lt;code&gt;source_dir&lt;/code&gt; termina con &lt;code&gt;/&lt;/code&gt; cambia el comportamiento. Con &lt;code&gt;/&lt;/code&gt;, rsync sincroniza el contenido del directorio; sin &lt;code&gt;/&lt;/code&gt;, sincroniza el directorio mismo.&lt;/p&gt;
&lt;h2 id=&#34;vaciar-rápidamente-un-directorio-de-destino-con-un-origen-vacío&#34;&gt;Vaciar rápidamente un directorio de destino con un origen vacío
&lt;/h2&gt;&lt;p&gt;Si su objetivo es mantener la ruta del directorio pero borrar todo el contenido, use un directorio vacío como fuente:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1) Create an empty directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p /tmp/empty_dir
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2) Sync and delete target-side content&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync -a --delete /tmp/empty_dir/ /path/to/target_dir/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;En escenarios de directorios grandes, esto suele ser más eficiente que eliminar archivos uno por uno y es más fácil de automatizar en scripts.&lt;/p&gt;
&lt;h2 id=&#34;opciones-extendidas-comunes&#34;&gt;Opciones extendidas comunes
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--delete-before&lt;/code&gt;: eliminar antes de la transferencia, lo que puede ser más rápido en algunos casos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--progress&lt;/code&gt;: muestra el progreso de la transferencia y el procesamiento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ejemplo (limpieza de un directorio de registro de Nginx):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync -a --delete --progress /tmp/empty_dir/ /var/log/nginx/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;recomendaciones&#34;&gt;Recomendaciones
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Ejecute primero con &lt;code&gt;--dry-run&lt;/code&gt; para verificar el alcance de la eliminación.&lt;/li&gt;
&lt;li&gt;Haga una copia de seguridad del directorio de destino antes de ejecutarlo en producción.&lt;/li&gt;
&lt;li&gt;Para rutas críticas, programe la ejecución durante las horas de menor actividad.&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Cómo Git rastrea el permiso ejecutable de archivos (&#43;x)</title>
        <link>https://www.knightli.com/es/2026/03/29/git-executable-permission-x/</link>
        <pubDate>Sun, 29 Mar 2026 10:00:00 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/03/29/git-executable-permission-x/</guid>
        <description>&lt;p&gt;En un entorno Linux, Git rastrea el bit ejecutable de un archivo (&lt;code&gt;+x&lt;/code&gt;).
Si desea que un script se conserve como un archivo ejecutable en el repositorio, debe registrar explícitamente ese cambio de permiso en Git.&lt;/p&gt;
&lt;h2 id=&#34;agregar-permiso-ejecutable-a-un-archivo&#34;&gt;Agregar permiso ejecutable a un archivo
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git update-index --chmod&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;+x script.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;chore: mark script.sh as executable&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Este comando realiza el cambio de bit ejecutable para &lt;code&gt;script.sh&lt;/code&gt;. Después de confirmar y enviar, otros usuarios mantendrán el mismo estado de permiso cuando extraigan o clonen el repositorio.&lt;/p&gt;
&lt;h2 id=&#34;eliminar-el-permiso-ejecutable-de-un-archivo&#34;&gt;Eliminar el permiso ejecutable de un archivo
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git update-index --chmod&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-x script.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;chore: remove executable bit from script.sh&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;verificar-el-resultado&#34;&gt;Verificar el resultado
&lt;/h2&gt;&lt;p&gt;Utilice los siguientes comandos para verificar los permisos de archivos en su árbol de trabajo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone xxxxxxxxxxxxxxx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -l script.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si ve algo como &lt;code&gt;-rwxr-xr-x&lt;/code&gt;, el archivo es ejecutable. Si ve &lt;code&gt;-rw-r--r--&lt;/code&gt;, no es ejecutable.&lt;/p&gt;
&lt;h2 id=&#34;notas&#34;&gt;Notas
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;git update-index --chmod=+x/-x&lt;/code&gt; solo actualiza el modo de archivo registrado por Git; no reemplaza los cambios en el contenido del archivo.&lt;/li&gt;
&lt;li&gt;En los flujos de trabajo de equipo, es mejor realizar cambios de solo permiso por separado para facilitar la revisión y el seguimiento.&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
