Linux en acción: Ejecutándose en una Nintendo NES de 8 bits


Nintendo NES Linux
<div id="mvp-content-main"><br />
    <h2>La emulación y sus posibilidades: Linux en una NES</h2><br />
    <p>La <strong>emulación</strong> nos ha permitido conseguir cosas que parecían imposibles, y NES86 es sin duda uno de los proyectos más sorprendentes que hemos podido ver recientemente. Se trata de una versión muy reducida del <strong>kernel de Linux</strong> que <strong>funciona sobre una consola NES de Nintendo</strong>, y que como habréis podido imaginar ha sido posible gracias a la emulación.</p><br />
    <br />
    <h3>El Creador detrás del Proyecto</h3><br />
    <p>El responsable de este proyecto es «decrazyo», un <b>programador</b> que ha compartido todas sus claves en un vídeo muy interesante que hará las delicias de los más «geeks». Para entender lo complicado que era este proyecto debemos tener en cuenta que la NES tiene <strong>unas especificaciones mucho más modestas</strong> que las de cualquier PC de la época capaz de mover Linux.</p><br />
    <br />
    <h3>Especificaciones Técnicas</h3><br />
    <p>Su CPU es una <strong>Ricoh 2A03 de 8 bits</strong> a <strong>1,79 MHz</strong>, un chip que es muy inferior al que utilizaba un PC como el IBM 5150, que era de <strong>16 bits</strong>, trabajaba a <strong>4,77 MHz</strong> y podía manejar casi el doble de instrucciones. No obstante, ambos tienen ciertas similitudes que hicieron posible sacar adelante este proyecto recurriendo a la emulación.</p><br />
    <br />
    <img decoding="async" class="aligncenter size-full wp-image-375795" src="https://www.muycomputer.com/wp-content/uploads/2025/02/nes-linux.jpg" alt="nes linux" width="1280" height="720" srcset="https://www.muycomputer.com/wp-content/uploads/2025/02/nes-linux.jpg 1280w, https://www.muycomputer.com/wp-content/uploads/2025/02/nes-linux-500x281.jpg 500w, https://www.muycomputer.com/wp-content/uploads/2025/02/nes-linux-630x354.jpg 630w, https://www.muycomputer.com/wp-content/uploads/2025/02/nes-linux-768x432.jpg 768w" sizes="(max-width: 1280px) 100vw, 1280px"/><br />
    <br />
    <h3>El Desafío de Implementar Linux</h3><br />
    <p>En esencia, lo que ha creado «decrazyo» es un <strong>emulador</strong> de un PC IBM 5150 que funciona en una Nintendo NES, <strong>con todas las complicaciones que ello implica,</strong> ya que se trata de emular un sistema mucho más potente en un sistema que es claramente inferior. Es un proyecto interesante, aunque distinto de NES-OS.</p><br />
    <br />
    <p>El procesador fue uno de los principales problemas, pero la <strong>memoria</strong> tampoco se queda atrás. La base de este proyecto gira alrededor de <strong>ELKS</strong>, siglas en inglés de Embeddable Linux Kernel Subset, que por decirlo de una manera simple es la base más sencilla posible de Linux, y la que menos recursos consume. Tanto es así que <strong>solo necesita 128 KB de RAM,</strong> una cifra que es ridícula para los estándares actuales, pero que resulta muy elevada si hablamos de la NES de Nintendo, que solo tiene 2 KB.</p><br />
    <br />
    <h3>Cómo fue posible mover Linux en una NES con solo 2 KB de RAM</h3><br />
    <p>Para resolver este problema se ha utilizado <strong>un chip de mapeado,</strong> que hace que solo resulte visible una pequeña parte de la memoria de un cartucho en cada momento concreto, y permite a la CPU seleccionar qué parte de la memoria quiere que sea visible, una técnica que se conoce como <strong>conmutación de bancos de memoria</strong>. La NES incorpora una solución <strong>capaz de gestionar hasta 1 MB de ROM en un cartucho</strong>, más de lo necesario para este proyecto.</p><br />
    <br />
    <p>Esa cantidad es suficiente para almacenar el emulador, la <strong>BIOS del PC</strong>, el kernel Linux, el archivo del sistema y dejar algo de espacio libre, pero lo complicado viene a continuación, porque es necesario hacer que Linux entienda cómo funciona este sistema de memoria, y <strong>presentar la RAM y la ROM como un espacio único de memoria contigua de 20 bits.</strong></p><br />
    <br />
    <h3>Fases del Proceso de Emulación</h3><br />
    <p>El siguiente paso fue preparar la emulación a nivel de CPU, que se dividió en cuatro grandes fases: <strong>búsqueda, descodificación, ejecución y escritura.</strong> Cada una de esas fases juega un papel fundamental. En la fase de búsqueda se calcula la dirección de la próxima instrucción de la CPU, y se copia en la caché de instrucciones del procesador.</p><br />
    <br />
    <img loading="lazy" decoding="async" class="aligncenter size-full wp-image-375793" src="https://www.muycomputer.com/wp-content/uploads/2025/02/linux-nes.jpg" alt="linux nes" width="1482" height="1008" srcset="https://www.muycomputer.com/wp-content/uploads/2025/02/linux-nes.jpg 1482w, https://www.muycomputer.com/wp-content/uploads/2025/02/linux-nes-500x340.jpg 500w, https://www.muycomputer.com/wp-content/uploads/2025/02/linux-nes-630x429.jpg 630w, https://www.muycomputer.com/wp-content/uploads/2025/02/linux-nes-768x522.jpg 768w" sizes="auto, (max-width: 1482px) 100vw, 1482px"/><br />
    <br />
    <p>La fase de descodificación analiza la instrucción para <strong>determinar qué hace y con qué valores trabaja.</strong> Esos valores se copian a ubicaciones temporales que serán utilizados más adelante. En la fase de ejecución realizan las tareas de computación de instrucciones, y se almacena el resultado en otra ubicación temporal. Finalmente en la fase de escritura se copia el resultado a su ubicación definitiva, para luego volver a empezar el proceso desde la fase de búsqueda.</p><br />
    <br />
    <h3>El Truco Final</h3><br />
    <p>Todo parecía avanzar, pero al final el proyecto se complicó tanto que no pudo utilizar un cartucho normal de Nintendo NES, y no tuvo más remedio que recurrir a un «truco» bastante curioso, <strong>hackear el emulador de NES que está integrado en Animal Crossing</strong>. Fue un proceso complicado, sobre todo por las limitaciones de memoria que impone ese emulador, pero al final fue posible superar dichas limitaciones, y el proyecto pudo salir adelante.</p><br />
    <br />
    <p>El resultado podemos verlo al final del vídeo, NES86 con <strong>base Linux</strong> funcionando sin problema en un emulador dentro de otro emulador de Nintendo NES. Como cabía esperar el rendimiento no es nada del otro mundo, y como prueba de ello tenemos la demo de <strong>Tetris</strong>, un juego que en su versión más simple, limitado a blanco y negro, funciona a un fotograma cada treinta segundos. <strong>Sí, habéis leído bien, cada treinta segundos genera un fotograma.</strong></p><br />
    <br />
    <center><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span></iframe></center><br />
</div><br />

artículo original de: https://www.muycomputer.com/2025/02/21/asi-es-linux-funcionando-sobre-una-nintendo-nes-de-8-bits/

Deja una respuesta