Executando o binário Debian i386 no Debian armel via qemu

8

Estou tentando seguir este guia para configurar um servidor Ventrilo no meu SheevaPlug, usando o Debian armel. Esta página afirma que eu posso usar o QEMU para executar o binário que foi feito para o i386 no meu sistema de braço.

A configuração do qemu diz que eu preciso instalar qemu, qemu -user e qemu-libc-i386. Eu encontrei os dois primeiros em apt-get , mas qemu-libc-i386 não é um pacote. Então eu tentei executar o qemu para rodar o servidor ventrilo assim:

# qemu-i386 ./ventrilo_srv
/lib/ld-linux.so.2: No such file or directory

Parece que ld-linux.so.2 é a versão i386 do que tenho em armel como ld-linux.so.3 .

Então eu sei que o how-to é para uma distribuição diferente do Linux, mas parece que eu deveria ser capaz de fazer isso funcionar no Debian se eles pudessem em sua distro louca. Existe um pacote que eu possa obter que irá instalar o libc-i386 para que eu possa fazer isso funcionar (semelhante a ia32-libs para um sistema x64?) Eu tentei também copiando o so.2 de outro sistema i386 e isso não me levou a lugar algum.

    
por muncherelli 02.03.2012 / 19:40

1 resposta

3

Sim, você pode executar binários x86 no QEmu com o QEmu sendo executado em um processador ARM. Será muito lento, porque o QEmu faz emulação de software do processador x86, e você pode ficar sem memória RAM, mas pode funcionar.

O pacote qemu-user contém a própria máquina virtual, ou seja, um emulador de um processador x86 e alguns dispositivos de hardware e um kernel Linux em execução nesse harwdare. (O pacote qemu-system contém um emulador apenas do hardware no qual você pode instalar o sistema operacional de sua escolha.) Ainda é necessário preencher a máquina virtual com um ambiente de tempo de execução, incluindo /lib/ld-linux.so.2 (o carregador dinâmico, necessário executar qualquer executável vinculado dinamicamente) e um monte de bibliotecas. Isso é o que o pacote qemu-libc-i386 no Optware fornece. É um pouco semelhante a ia32-libs em sistemas amd64, mas isso é muito mais simples porque um processador amd64 pode executar binários i386 nativamente; aqui você precisa ter as bibliotecas dentro da VM x86.

Você pode tentar pegar o qemu-libc-i386 do pacote Optware. O formato do pacote Optware é muito parecido com o do Debian, então você pode converter o ipk para um deb manualmente:

mkdir tmp
wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/qemu-libc-i386_2.3.6-1_arm.ipk
tar xzf qemu-libc-i386_2.3.6-1_arm.ipk
ar rc qemu-libc-i386_2.3.6-1_arm.deb debian-binary control.tar.gz data.tar.gz 

Eu não garanto que isso funcionará. Você pode precisar garantir que as versões do QEmu coincidam.

Se a instalação do ipk modificado não funcionar, tente reproduzir seu conteúdo em seu sistema. Descompacte data.tar.gz em algum lugar (ou obtenha os mesmos arquivos de algum outro sistema x86), veja o que o script postinst em control.tar.gz faz e forneça os caminhos corretos para qemu-i386 .

    
por 05.03.2012 / 20:02