Criando um boot para o nosso kernel

Iremos criar um sistema de kernel multiboot, com apenas alguns passos. Primeiro precisamos copiar os arquivos boot.S, kernel.c, and multiboot.h dos fontes do GRUB.

http://cvs.savannah.gnu.org/viewcvs/grub/grub/docs/#dirlist

Ou podemos baixar diretamente da página da disciplina:

http://tsi.rtsystems.org/arquivos

Salve os arquivos em alguma pasta. No nosso caso pode ser a própria pasta tmp do raiz do sistema. Abra kernel.c e no final do arquivo adicione alguns printf’s:

void
cmain (unsigned long magic, unsigned long addr)
{
...
printf (" size = 0x%x, base_addr = 0x%x%x,"
" length = 0x%x%x, type = 0x%x\n",
(unsigned) mmap->size,
(unsigned) mmap->base_addr_high,
(unsigned) mmap->base_addr_low,
(unsigned) mmap->length_high,
(unsigned) mmap->length_low,
(unsigned) mmap->type);
}
cls();

printf("\nBem vindo a main do meu proprio SO!\n");
}

Compile tudo usando o seguinte comando:

cd tmp
gcc boot.S kernel.c -o MeuOsKernel -ffreestanding -nostdlib -nostartfiles -fno-stack-protector

Em que:

  • -o: indica um nome para a saída de arquivo
  • -ffreestanding: que o programa resultado da compilação não terá dependências
  • -nostdlib: informa ao linker não retornar as bibliotecas padrões de C, pois não irão funcionar no kernel
  • -nostartfiles: informa a linker não retornar nenhum código de inicialização de C
  • -fno-stack-protector: é um ajuste para o erro “undefined reference to ‘__stack_chk_fail'”

O arquivo com nome MeuOsKernel será gerado. É bom notar que caso algum erro de compilação ocorra, é porque o arquivo de cabeçalho multiboot.h não está no caminho de bibliotecas do sistema. Para corrigir abra os fontes e mude as entradas < > para aspas ” “.

Volta a página inicial

  1. Evanuel Aug 31st, 2013 @ 15:31 | #-49

    Voce poderia me ajudar eu achar um linker(ld 2.13.90.0.10). me envia um link dessa ferramentea.
    Evanuel.7@gmail.com

  2. anderson Sep 4th, 2013 @ 11:37 | #-48

    Não entendi bem o que vocÊ precisa. Explica novamente.

Submitting Comment, Give me a second...

Leave a comment

 

Allowed tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. No trackbacks yet.