Comunidade OSDevBrasil.net
Maio 20, 2012, 03:21:31 *
Bem-vindo, Visitante. Por favor faça o Login ou Registro.

Login com nome de usuário, senha e duração da sessão
Notícias: Anuncie a nossa comunidade a amigos, fóruns...
 
   Home   Ajuda Pesquisa Login Registrar  
Páginas: [1]
  Imprimir  
Autor Tópico: Load - elf64  (Lida 253 vezes)
Windowstec
OS Jr. Member
**

Karma: 1
Mensagens: 65


Estudante

gilmendes_999@hotmail.com
Ver Perfil WWW Email
« : Julho 13, 2011, 07:31:44 »

Boas,
Alguem sabe como carregar um ficheiro elf64??
Eu aposto que o Mounter sabe  Sorriso forçado

Estou a escrever um kernel de novo, mas em x86_64, e o grub não consegue carrega-lo pois não suporta o formato do ficheiro.
Ajuda?

Cumprimentos,
Gil Mendes (Windowstec)
Registrado

Windowstec OS - O link no google Code foi cancelado brevemente em domínio próprio.
Windowstec - www.windowstec.netne.net
Mounter
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 432


mrjostz@hotmail.com
Ver Perfil WWW Email
« Responder #1 : Julho 13, 2011, 08:30:36 »

Bom dia Gil.

Sim eu sei, a estrutura dos arquivos ELF64 é um pouco diferente dos ELF32, a principio o formato é muito antigo, se você ver os documentos do link abaixo eles datam de 1997-98, mas funcionam! O carregamento não diferente dos arquivos ELF convencionais, o que eu mais pude perceber, é que alguns campos das estruturas trocam de lugar com outros, e o tamanho dos mesmos aumenta.

O GRUB não carrega arquivos ELF de 64-bit, só a versão 2 que o faz, sugiro para manter a retro-compatibilidade com outros bootloaders, você fazer um carregador, você faz ele como se fosse o kernel que o GRUB deve carregar e você especifica no menu.lst o seu kernel de 64-bit, o carregador deverá ver a lista de arquivos carregados pelo GRUB e então carregar o kernel, fazer os passos iniciais de inicialização para que o processador entre em modo compatível (poderá então usar instruções 64-bit), saltar para a entrada do kernel, e ai então o seu kernel deverá entrar em modo longo (totalmente 64-bit).

Eu posso te mandar o loader que eu fiz para entrar em modo longo, você terá que antes de carregar o seu kernel, no momento de ir para modo compatível, atribuir a paginação com nível 4 (pml4).

ELF64:

http://www.openwatcom.com/ftp/devel/docs/elf-64-gen.pdf
http://ftp.parisc-linux.org/docs/arch/elf-64-hp.pdf 

Paging:

http://www.sandpile.org/aa64/paging.htm

Criando um kernel 64-bit e sobre o long mode:

http://wiki.osdev.org/Creating_a_64-bit_kernel
http://wiki.osdev.org/Entering_Long_Mode_Directly
http://wiki.osdev.org/User:Stephanvanschaik/Setting_Up_Long_Mode

Estas foram minhas maiores referencias, pelo menos as que mais usei para gerar o kernel! Ainda não repassei tudo certinho, então pro SOmBRA X86-64 sair vai demorar um pouco.

Abraços,
 Mounter
Registrado

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

Windowstec
OS Jr. Member
**

Karma: 1
Mensagens: 65


Estudante

gilmendes_999@hotmail.com
Ver Perfil WWW Email
« Responder #2 : Julho 29, 2011, 08:21:51 »

Mounter, envia-me o teu loader, por favor.
Registrado

Windowstec OS - O link no google Code foi cancelado brevemente em domínio próprio.
Windowstec - www.windowstec.netne.net
Páginas: [1]
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines XHTML 1.0 Válido! CSS Válido!