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.
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.
[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.