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.047 ]

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

Desmistificando o Linux Loader (LILO)

Rodando jogos a partir de uma imagem ISO

Gerando arquivos JAR com o Eclipse

Configurando o Samba

Como atribuir notícias RSS ao seu site usando ATOM e PHP

Leitura recomendada

Compilando o kernel no Slackware com pacotes pré-compilados

Kernel 2.6.7 compilado e configurado para nVIDIA

Compilação do kernel passo-a-passo

Layer7 e compilação do kernel mole-mole com Conectiva 10

IPCMSG: Comunicação inter-processos sem magia negra

  
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