Configurar o núcleo para o GRUB
Como muitos de nós gostaríamos de configurar nosso núcleo para funcionar com o GRUB, irei aqui dar uma breve explicação de como isso pode ser feito.
Para nosso núcleo ser executado pelo GRUB, precisamos ter um cabeçalho nos primeiros 8KB e deve ter a seguinte forma:
/***************************************************************************** ** Cabeçalho Multiboot, com "aout kludge" ** GRUB não irá iniciar o núcleo a menos que ** - está estrutura esteja presente nos primeiros 8192 bytes do arquivo do núcleo ** - está estrutura estiver alinhada em um endereço divisivel por 4-byte ** - o valor mágico Multiboot está presente na estrutura ** - o número de checagem (checksum) esteja correto *****************************************************************************/ MBOOT_PAGE_ALIGN EQU 1<<0 MBOOT_MEMORY_INFO EQU 1<<1 MBOOT_AOUT_KLUDGE EQU 1<<16 MBOOT_HEADER_MAGIC EQU 0x1BADB002 MBOOT_HEADER_FLAGS EQU MBOOT_PAGE_ALIGN | MBOOT_MEMORY_INFO | MBOOT_AOUT_KLUDGE MBOOT_CHECKSUM EQU -(MBOOT_HEADER_MAGIC + MBOOT_HEADER_FLAGS) ALIGN 4 mboot: dd MBOOT_HEADER_MAGIC dd MBOOT_HEADER_FLAGS dd MBOOT_CHECKSUM // aout kludge dd mboot // Endereço do cabeçalho multiboot dd _d_code // Endereço da área de código dd _d_bss // Endereço da área de dados não inicializado dd _end // Fim do núcleo dd ncl_inicio // Endereço inicial do núcleo
E terá de configurar também o arquivo menu.lst que se encontra em /boot/grub/ e deverá ter o seguinte código:
title SOmBRA root (fd0) kernel /nucleo.cof
O title é o título que irá aparece na inicialização, o root diz qual o driver será o diretório raiz e o kernel diz onde se encontra nosso núcleo que será carregado. O grub suporta vários tipos de arquivos executáveis, tais como COFF, DJCOFF e ELF, e com ele ainda podemos acrescentar módulos, que poderão depois ser usados pelo núcleo, mas isso será matéria do próximo artigo.
Até mais.





