Blink-emulador-x86

Hace poco se dio a conocer la noticia del lanzamiento de la primera versión importante del proyecto Blink, el cual es emulador de procesador x86-64 que permite ejecutar aplicaciones Linux creadas estática y dinámicamente en una máquina virtual con un procesador emulado.

Cabe mencionar que el proyecto es desarrollado por el autor de desarrollos tales como la biblioteca Cosmopolitan C, un port del mecanismo de aislamiento de compromiso para Linux y el sistema de archivos ejecutable universal Redbean.

En términos de funcionalidad, Blink se parece al comando qemu-x86_64, pero se diferencia de QEMU en un diseño más compacto y un aumento significativo del rendimiento. Por ejemplo, el archivo ejecutable de Blink ocupa solo 220 KB en lugar de 4 MB para qemu-x86_64, y en términos de rendimiento en la prueba de ejecución en el emulador GCC, Blink supera a QEMU dos veces.

Con Blink, los programas de Linux compilados para la arquitectura x86-64 se pueden ejecutar en otros sistemas operativos compatibles con POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) y en hardware con otras arquitecturas de hardware (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Principales novedades de Blink

El lanzamiento de la versión 1.0 se destaca por ser básicamente un binario estático libre de dependencias de 220 kb que implementa alrededor de 600 instrucciones x86 y 180 llamadas al sistema Linux, lo que hace que Blink sea bastante bueno para ejecutar programas simples de línea de comandos.

Para garantizar un alto rendimiento, se utiliza un compilador JIT, que convierte las instrucciones de origen en código de máquina para la plataforma de destino sobre la marcha. Se admite el lanzamiento directo en el emulador de archivos ejecutables en formato ELF, PE (Portable Executables) y bin (Flat ejecutable), compilados con las bibliotecas C estándar Cosmopolitan, Glibc y Musl.

Blink tiene un JIT rápido que, en algunos casos, es 2 veces más rápido que Qemu para casos de uso Esto se debe a que Blink tiene un JIT básico que genera código rápidamente usando un DSL de estilo printf. Eso significa que Blink tiene una base de código accesible ya que solo tenemos 63 500 líneas de código ANSI C11. Actualmente, Blink ni siquiera intenta realizar optimizaciones, lo que convierte a este proyecto en un campo completamente nuevo para los algoritmos.

Se menciona que Blink funciona mejor para programas de línea de comandos, aunque Blink también tiene cierto soporte para emular aplicaciones GUI. A diferencia de qemu-user (que solo se ejecuta en Linux), Blink puede ejecutarse en otros sistemas operativos, ya que se cuenta con la capacidad de poder compilar Blink en Cygwin (Windows) y luego ejecutar Bash dentro de un chroot de Alpine Linux.

Blink emula el espacio de usuario de Linux lo suficientemente bien como para engañar a neofetch , a pesar de que Blink es solo un ejecutable libre de dependencias de 250 kb.

Cabe mencionar que Blink también funciona muy bien en Apple Silicon, ya que por ejemplo puede engañar a neofetch para que piense que MacOS M1 es Alpine x86_64.

Adicionalmente, con base en Blink, se está desarrollando la utilidad blinkenlights, que brinda una interfaz para visualizar la ejecución del programa y analizar el contenido de la memoria. La utilidad se puede utilizar como un depurador que admite el modo de depuración inversa (Depuración inversa) y permite retroceder en el historial de ejecución y volver a un punto ejecutado anteriormente.

La mejor característica que ofrece Blinkenlights TUI es la depuración inversa. En el anuncio del lanzamiento, se menciona que solo se necesita desplazar con la rueda sobre la pantalla de compilación. Blink también perfila las funciones de su programa en tiempo real si presiona la tecla p. También puede controlar la rueda de los paneles de memoria para alejar la memoria usando un kernel.

Finalmente si quieres conocer más al respecto sobre el funcionamiento de Blink, puedes hacerlo desde el siguiente enlace.

Obtener Blink

Para quienes estén interesados en poder probar blink deben saber que su compilación es sumante sencilla, solo deben obtener el código fuente de este pueden hacerlo desde el siguiente enlace o bien desde una terminal tecleando el siguiente comando:

wget https://github.com/jart/blink/releases/download/1.0.0/blink-1.0.0.tar.gz
tar xvzf blink-1.0.0.tar.gz
cd blink-1.0.0
./configure MODE=tiny
make -j8 MODE=tiny o/tiny/x86_64/blink/blink
o/third_party/gcc/x86_64/bin/x86_64-linux-musl-strip o/tiny/x86_64/blink/blink
o/tiny/x86_64/blink/blink -v

 

Fuente: desdelinux

 

¿Quién está en línea?

Hay 882 invitados y ningún miembro en línea