Accueil Astuces et Informations Blink, un émulateur x86-64 pour exécuter des applications Linux compilées sur d’autres...

Blink, un émulateur x86-64 pour exécuter des applications Linux compilées sur d’autres architectures

5
0
Blink

blink est une machine virtuelle qui exécute des programmes x86-64-linux sur différents systèmes d’exploitation

Récemment, les nouvelles de la sortie de la première version majeure du projet Blinkqui est un émulateur de processeur x86-64 qui vous permet d’exécuter des applications Linux créées de manière statique et dynamique dans une machine virtuelle avec un processeur émulé.

Il convient de mentionner que le projet est développé par l’auteur de développements tels que la bibliothèque Cosmopolitan C, un port du mécanisme d’isolation d’engagement pour Linux et le système de fichiers exécutables universel Redbean.

En termes de fonctionnalité, Blink ressemble à la commande qemu-x86_64mais diffère de QEMU par une conception plus compacte et une augmentation significative des performances. Par exemple, le fichier exécutable Blink ne fait que 220 Ko au lieu de 4 Mo pour qemu-x86_64, et en termes de performances dans le test exécuté sur l’émulateur GCC, Blink bat QEMU deux fois.

Avec Blink, les programmes Linux compilés pour l’architecture x86-64 peuvent fonctionner sur d’autres systèmes d’exploitation compatibles POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) et sur du matériel avec d’autres architectures matérielles (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

La sortie de la version 1.0 se distingue pour être essentiellement un binaire sans dépendance statique de 220 Ko qui implémente environ 600 instructions x86 et 180 appels système Linux, ce qui rend Blink assez bon pour exécuter des programmes simples en ligne de commande.

Pour garantir des performances élevées, un compilateur JIT est utilisé, qui convertit les instructions source en code machine pour la plate-forme cible à la volée. Le lancement direct sur l’émulateur de fichiers exécutables aux formats ELF, PE (Portable Executables) et bin (Flat Executable), compilés avec les bibliothèques C standard Cosmopolitan, Glibc et Musl est pris en charge.

Blink a un JIT rapide qui, dans certains cas, est 2 fois plus rapide que Qemu pour les cas d’utilisation. En effet, Blink a un JIT de base qui génère rapidement du code à l’aide d’un DSL de style printf. Cela signifie que Blink a une base de code accessible puisque nous n’avons que 63 500 lignes de code ANSI C11. Actuellement, Blink ne tente même pas d’optimisations, ce qui fait de ce projet un tout nouveau domaine pour les algorithmes.

Il est mentionné que Blink fonctionne mieux pour les programmes en ligne de commande, bien que Blink prenne également en charge l’émulation d’applications GUI. Contrairement à qemu-user (qui ne fonctionne que sur Linux), Blink peut être exécuté sur d’autres systèmes d’exploitation, car il est possible de compiler Blink sur Cygwin (Windows) puis d’exécuter Bash dans un chroot Alpine Linux. .

Blink émule assez bien l’espace utilisateur Linux pour tromper neofetch , même si Blink n’est qu’un exécutable sans dépendance de 250 Ko.

Il convient de mentionner que Blink fonctionne également très bien sur Apple Silicon, car il peut par exemple faire croire à neofetch que MacOS M1 est Alpine x86_64.

De plus, basé sur Blink, l’utilitaire Blinkenlights est en cours de développement, qui fournit une interface pour visualiser l’exécution du programme et analyser le contenu de la mémoire. L’utilitaire peut être utilisé comme un débogueur qui prend en charge le mode de débogage inverse (Reverse Debugging) et vous permet de revenir en arrière dans l’historique d’exécution et de revenir à un point précédemment exécuté.

La meilleure fonctionnalité offerte par Blinkenlights TUI est le débogage inversé. Dans l’annonce de sortie, il est mentionné qu’il vous suffit de faire défiler la molette sur l’écran de construction. Blink décrit également les fonctionnalités de votre programme en temps réel si vous appuyez sur la touche p. Vous pouvez également contrôler la molette de panoramique de la mémoire pour effectuer un zoom arrière sur la mémoire à l’aide d’un noyau.

Finalement Si vous voulez en savoir plus sur le fonctionnement de Blink, Vous pouvez le faire à partir du lien suivant.

se faire cligner des yeux

Pour ceux qui sont intéressés à pouvoir essayer blink, ils doivent savoir que sa compilation est extrêmement simple, ils n’ont qu’à en obtenir le code source, ils peuvent le faire depuis le lien suivant ou depuis un terminal en tapant la commande suivante :

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