Conheça, baixe, instale e execute apps do Linux em outras arquiteturas com o Blink, um emulador x86-64 que promete muito.
blink é uma máquina virtual que executa programas x86-64-linux em diferentes sistemas operacionais. Vale ressaltar que o projeto é desenvolvido pelo autor de desenvolvimentos como a biblioteca Cosmopolitan C, um porte do mecanismo de isolamento de compromisso para Linux e o sistema de arquivos executáveis universal Redbean.
Em termos de funcionalidade, o Blink se assemelha ao comando qemu-x86_64, mas difere do QEMU em um design mais compacto e desempenho significativamente aumentado.
Por exemplo, o arquivo executável do Blink tem apenas 220 KB em vez de 4 MB para qemu-x86_64 e, em termos de desempenho no teste executado no emulador GCC, o Blink supera o QEMU duas vezes.
Com o Blink, os programas Linux compilados para a arquitetura x86-64 podem ser executados em outros sistemas operacionais compatíveis com POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) e em hardware com outras arquiteturas de hardware (x86, ARM, RISC-V, MIPS, PowerPC, s390x).
Recentemente, surgiram notícias do lançamento da primeira versão principal do projeto Blink, que é um emulador de processador x86-64 que permite executar aplicativos Linux criados estática e dinamicamente em uma máquina virtual com um processador emulado.
Execute apps do Linux em outras arquiteturas com o Blink
A versão 1.0 se destaca por ser basicamente um binário livre de dependência estático de 220kb que implementa cerca de 600 instruções x86 e 180 chamadas de sistema Linux, tornando o Blink muito bom para executar programas simples de linha de comando.
Para garantir alto desempenho, é usado um compilador JIT, que converte as instruções de origem em código de máquina para a plataforma de destino em tempo real.
Lançamento direto no emulador de arquivos executáveis nos formatos ELF, PE (Executáveis Portáteis) e bin (Executáveis Planos), compilados com as bibliotecas C padrão Cosmopolitan, Glibc e Musl são suportados.
O Blink tem um JIT rápido que, em alguns casos, é 2x mais rápido que o Qemu para casos de uso.
Isso ocorre porque o Blink tem um JIT básico que gera código rapidamente usando um DSL estilo printf. Isso significa que o Blink tem uma base de código acessível, pois temos apenas 63.500 linhas de código ANSI C11.
Atualmente, o Blink nem tenta otimizações, o que torna este projeto um campo totalmente novo para algoritmos.
É mencionado que o Blink funciona melhor para programas de linha de comando, embora o Blink também tenha algum suporte para emular aplicativos GUI.
Ao contrário do qemu-user (que só roda no Linux), o Blink pode ser rodado em outros sistemas operacionais, pois existe a possibilidade de compilar o Blink no Cygwin (Windows) e depois rodar o Bash dentro de um chroot Alpine Linux.
O Blink emula o usuário do Linux bem o suficiente para enganar o neofetch , embora o Blink seja um executável livre de dependência de apenas 250kb.
Vale ressaltar que o Blink também funciona muito bem no Apple Silicon, pois, por exemplo, pode induzir o neofetch a pensar que o MacOS M1 é Alpine x86_64.
Adicionalmente, com base no Blink, está sendo desenvolvido o utilitário blinkenlights, que fornece uma interface para visualizar a execução do programa e analisar o conteúdo da memória.
O utilitário pode ser usado como um depurador que suporta o modo de depuração reversa (Reverse Debugging) e permite que você volte no histórico de execução e retorne a um ponto executado anteriormente.
O melhor recurso que Blinkenlights TUI oferece é a depuração reversa. No anúncio de lançamento, é mencionado que você só precisa rolar a roda na tela de construção.
O Blink também descreve os recursos do seu programa em tempo real se você pressionar a tecla p. Você também pode controlar a roda de panorâmicas de memória para diminuir o zoom da memória usando um kernel.
Para saber mais sobre essa versão do Blink, acesse a nota de lançamento.
Como instalar ou atualizar o Blink
Para aqueles que estão interessados em experimentar o blink, devem saber que a sua compilação é extremamente simples, apenas têm de obter o código fonte do mesmo, podem fazê-lo a partir do seguinte link ou a partir de um terminal digitando o seguinte 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