Registrando extensões no kernel com o binfmt_misc

Você alguma vez já pensou que maravilha seria se quando fizesse uma chamada a um programa feito para a plataforma Windows, ele automaticamente fazendo uso do wine, se instalasse? Ou se arquivos compilados em Java se executassem sem necessariamente termos que escrever aquela enorme expressão antes do arquivo que deve ser executado? Pois essa é a função do binfmt_misc, recurso do kernel que será explicado nesse artigo.

[ Hits: 19.043 ]

Por: Roberson Carlos em 10/12/2004 | Blog: http://carlrobers.wordpress.com


Introdução



Você alguma vez já pensou que maravilha seria se quando fizesse uma chamada a um programa feito para a plataforma Windows, ele automaticamente fazendo uso do wine, se instala-se, ou se arquivos compilados em Java se executassem sem necessariamente termos que escrever aquela enorme expressão antes do arquivo que deve ser executado?

Mas não parar-mos-ia por aí, poder-mos-ia executar aplicações Perl, Python ou até mesmo Emacs fazendo uso do binfmt_misc. Ele reconhece um arquivo binário lendo alguns bytes no cabeçalho do arquivo caso usemos uma opção denominada magic ou pode até mesmo assimilar a extensão (.exe, .com, .class) usada no arquivo e associá-la ao programa que interpreta o arquivo binário.

Quando queremos executar um programa em Java e temos que escrever:

$ /usr/bin/jdk1.5/java g3Horas

Onde: g3Horas é o arquivo com extensão class que foi compilado com a ferramenta javac da Sun. Se fosse feito o uso do binfmt_misc, aqui bastaria escrever:

$ ./g3Horas.class

Isto já ajudaria bastante o trabalho de muitos programadores. Caso seu sistema não esteja com a extensão class registrada, o kernel retornará um erro dizendo que não pode executar o arquivo binário, isto acontece porque ele ainda não sabe qual o programa que é o interpretador do arquivo, o que nós fazemos é registrar a extensão ou o cabeçalho do arquivo em um arquivo chamado register e informamos ao kernel o endereço do programa que interpreta o arquivo binário.

O register irá criar um arquivo novo para cada extensão ou cabeçalho que você quiser registrar.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Configurando o binfmt_misc
   3. Associando tipos de arquivos ao binfmt_misc
   4. Ativando/Desativando o binfmt_misc
Outros artigos deste autor

Gravação de CDs com o K3B

Modem 3G no Ubuntu Linux 8.04 - Qualquer operadora

Avast antivírus para GNU/Linux

Gerando arquivos JAR com o Eclipse

Evosign - Adicionar assinatura automática ao Evolution

Leitura recomendada

Recompilando o Kernel

Slackware 10.2 com dois kernels na mesma instalação

Kernel-BALA

Como acelerar o GNU-Linux

NPTL, Exec-Shield e outros palavrões que fazem seus programas crasharem

  
Comentários
[1] Comentário enviado por vodooo em 11/12/2004 - 07:39h

Cara, perfeito!!! Bom artigo!

É o linux sempre simplificando nossas vidas!!!

Abraços

[2] Comentário enviado por luiscarlos em 11/12/2004 - 11:14h

Ótimo artigo, muito bem explicado e de grande utilidade, facilita a vida dos programadores e aumenta o conhecimento dos gamados por fuçar no kernel o que eh muito prazeroso, mas soh uma perguntinha, qual foi sua fonte de pesquisa, falo por que tem um artigo muito parecido escrito pelo Morimoto em http://www.guiadohardware.net/artigos/293/ ,se foi de lah sua fonte eu acharia bastante ético vc citar a fonte, sem críticas negativas, apenas um comentário, estah de parabéns pelo artigo!!

[3] Comentário enviado por robersonfox em 13/12/2004 - 15:22h

luis0101, nao sei se você já leu algum outro artigo meu pela rede afora, mas uma vez publiquei que estava traduzindo os arquivos do linux, incluindo o diretório /etc e tambem o kernel, eu os traduzi completamente usando um português ´xulo´, pois eu estava cansado do dialeto mecanico que os computadores nos retornam, nesta epoca eu traduzindo o kernel encontrei um arquivo explicativo, e a partir dele criei este, entendeu?
Valeu.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts