Compilação do GRUB 1.99~rc1 retorna erro

1. Compilação do GRUB 1.99~rc1 retorna erro

Raniere Santos
raniashura

(usa Conectiva)

Enviado em 07/03/2011 - 12:32h

Olá.
Estou tentando compilar o grub-1.99~rc1 e estou recebendo uma mensagem de erro.

A história desde o começo:
Compilei o kernel linux-2.6.36.2; configurei o arquivo /boot/grub/menu.lst da seguinte forma:

=======PARTE QUE SE REFERE AO NOVO KERNEL=======
title = CB_Conectiva Linux - 2.6.36.2_0CBhighmem
kernel = (hd0,5)/vmlinuz-2.6.36.2_0CBhighmem root=/dev/hda5 vga=0x314
initrd = (hd0,5)/vmlinuz-2.6.36.2_0CBhighmem
=========================================

Criei o arquivo /boot/initrd-2.6.36.2_0CBhighmem com o seguinte comando:
mkinitrd /boot/initrd-2.6.36.2_0CBhighmem 2.6.36.2_0CBhighmem

Mas quando reinicio e tento dar boot pelo novo kernel, recebo a seguinte mensagem: No setup segnature found...

Pesquisando na Internet descobri que essa mensagem parece estar relacionada com a versão do grub que está instalada em meu sistema (muito antiga), que é a 0.92. Então resolvi compilar e atualizar.
Tentei compilar todas estas versões:
grub-0.96
grub-1.90
grub-1.94
grub-1.96
grub-1.97
grub-1.97.2
grub-1.98
E todas elas retornam uma mensagem de erro como esta (quando uso ./configure):
checking for objcopy... objcopy
checking whether objcopy works for absolute addresses... configure: error: gcc cannot link at address 7C00

Eu não consegui resolver isso e parti para a compilação da versão 1.99~rc1, que passa pelo processo de configuração sem problemas. Mas quando dou "make" para efetivamente compilar, surge a seguinte mensagem no final:

gcc -DHAVE_CONFIG_H -I. -I.. -Wall -W -I../include -I../include -DGRUB_MACHINE_PCBIOS=1 -DGRUB_MACHINE=I386_PC -DGRUB_FILE=\"video/fb/video_fb.c\" -I. -I. -I.. -I.. -I../include -I../include -Os -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -falign-jumps=1 -falign-loops=1 -falign-functions=1 -mno-mmx -mno-sse -mno-sse2 -mno-3dnow -m32 -fno-stack-protector -mno-stack-arg-probe -Werror -mrtd -mregparm=3 -ffreestanding -MT video/fb/video_fb_module-video_fb.o -MD -MP -MF video/fb/.deps-core/video_fb_module-video_fb.Tpo -c -o video/fb/video_fb_module-video_fb.o `test -f 'video/fb/video_fb.c' || echo './'`video/fb/video_fb.c
cc1: warnings being treated as errors
video/fb/video_fb.c: In function 'grub_video_fb_setup':
video/fb/video_fb.c:1451: warning: passing argument 4 of 'grub_video_fb_doublebuf_blit_init' discards qualifiers from pointer target type
make[3]: ** [video/fb/video_fb_module-video_fb.o] Erro 1
make[3]: Saindo do diretório `/home/raniere/tmp/compilacao/GRUB/grub-1.99~rc1/grub-core'
make[2]: ** [all] Erro 2
make[2]: Saindo do diretório `/home/raniere/tmp/compilacao/GRUB/grub-1.99~rc1/grub-core'
make[1]: ** [all-recursive] Erro 1
make[1]: Saindo do diretório `/home/raniere/tmp/compilacao/GRUB/grub-1.99~rc1'
make: ** [all] Erro 2

Se eu usar "make -d" para ver mais detalhes obtenho o seguinte:

gcc -DHAVE_CONFIG_H -I. -I.. -Wall -W -I../include -I../include -DGRUB_MACHINE_PCBIOS=1 -DGRUB_MACHINE=I386_PC -DGRUB_FILE=\"video/fb/video_fb.c\" -I. -I. -I.. -I.. -I../include -I../include -Os -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g -falign-jumps=1 -falign-loops=1 -falign-functions=1 -mno-mmx -mno-sse -mno-sse2 -mno-3dnow -m32 -fno-stack-protector -mno-stack-arg-probe -Werror -mrtd -mregparm=3 -ffreestanding -MT video/fb/video_fb_module-video_fb.o -MD -MP -MF video/fb/.deps-core/video_fb_module-video_fb.Tpo -c -o video/fb/video_fb_module-video_fb.o `test -f 'video/fb/video_fb.c' || echo './'`video/fb/video_fb.c
Putting child 0x40a43c00 (video/fb/video_fb_module-video_fb.o) PID 4940 on the chain.
Live child 0x40a43c00 (video/fb/video_fb_module-video_fb.o) PID 4940
cc1: warnings being treated as errors
video/fb/video_fb.c: In function 'grub_video_fb_setup':
video/fb/video_fb.c:1451: warning: passing argument 4 of 'grub_video_fb_doublebuf_blit_init' discards qualifiers from pointer target type
Reaping losing child 0x40a43c00 PID 4940
make[3]: ** [video/fb/video_fb_module-video_fb.o] Erro 1
Removing child 0x40a43c00 PID 4940 from chain.
make[3]: Saindo do diretório `/home/raniere/tmp/compilacao/GRUB/grub-1.99~rc1/grub-core'
Reaping losing child 0x40949ac0 PID 4934
make[2]: ** [all] Erro 2
Removing child 0x40949ac0 PID 4934 from chain.
make[2]: Saindo do diretório `/home/raniere/tmp/compilacao/GRUB/grub-1.99~rc1/grub-core'
Reaping losing child 0x404a3400 PID 4904
make[1]: ** [all-recursive] Erro 1
Removing child 0x404a3400 PID 4904 from chain.
make[1]: Saindo do diretório `/home/raniere/tmp/compilacao/GRUB/grub-1.99~rc1'
Reaping losing child 0x40665d80 PID 4898
make: ** [all] Erro 2
Removing child 0x40665d80 PID 4898 from chain.
bash-2.05b#
bash-2.05b#

Olhando a mensagem de erro, parece que o problema está no fato do compilador não conseguir alguma informação sobre um tal modo de vídeo ou buffer de vídeo.
E parece que o arquivo "video/fb/video_fb.c", na arvore de diretórios do código fonte do grub, é o principal participante do erro, em especial na linha 1451, do arquivo.
Eu não entendi nada ao olhar o arquivo, e também não tenho certeza de que o problema é nele. talvez eu esteja com alguma dependência faltando, apesar de achar que não falta nem uma.
E por aí, na internet, todos parecem mostrar o processo de compilação como algo simples, mas aqui não está dando muito certo.

Alguém tem alguma dica?
Se não souberem de algo que possa ajudar, mas puderem me indicar um local onde um possa levar minha dúvida, já será muito bom! :)

Versão do GCC usado: 4.2.2

Obrigado.




  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts