Category: LinuxBIOS

Memórias de 4MiB e 8MiB

A Winbond possui memória flash SPI de 4MiB (W25P32VSSIG) e irá liberar em breve uma memória de 8MiB, isto significa que placas mães que utilizam BIOS SPI, como um modelo da Gigabyte M57SLI, poderão ser embarcadas com um Linux mais completo que aquele que eu coloquei em 2MiB de flash (http://www.youtube.com/watch?v=nuzRsXKm_NQ).

Em 4MiB é possível colocar o navegador Dillo e mais alguns utilitários importantes. Em 8MiB pode-se colocar muito mais aplicativos, mas ainda sim ficaria complicado colocar o Firefox. Quem sabe daqui há alguns meses não tenhamos uma memória de 16MiB e assim poderemos colocar o Firefox direto na BIOS?

Vou ficar de olho, já estou de saco cheio na lentidão para o Ubuntu/Gnome iniciarem.

Advertisements

Novas excessões

Compilando a uClibc com o gcc 3.4 no Debian eu recebo esta mensagem de erro:

setjmp.S: Assembler messages:
setjmp.S:54: Internal error!
Assertion failure in operand at ../../gas/expr.c line 1310.
Please report this bug.

Após várias perguntas em lista de discussão e nenhuma solução descubro que o buildroot tem uma opção pra eliminar a excessão do setjmp.
Porém a solução é compilar o gcc com –enable-sjlj-exceptions como parametro, o que é inviável no meu caso, pois preciso usar o gcc default do host.

Don’t panic – estou frito, rs

undefined reference to `__stack_chk_fail’

Compilando o FILO no Ubuntu recebi esta msg de erro:

main/builtin.o: In function `number’:
printf.c:(.text+0x924): undefined reference to `__stack_chk_fail’
main/builtin.o: In function `elf_load’:
(.text+0x18c6): undefined reference to `__stack_chk_fail’
main/builtin.o: In function `grub_menulst’:
(.text+0x2060): undefined reference to `__stack_chk_fail’
main/grub/builtin.o: In function `run_menu’:
stage2.c:(.text+0xe76): undefined reference to `__stack_chk_fail’
main/grub/builtin.o: In function `terminfo_func’:
builtins.c:(.text+0x1510): undefined reference to `__stack_chk_fail’
main/grub/builtin.o:builtins.c:(.text+0x1c7d): more undefined references to `__stack_chk_fail’ follow
make: *** [filo] Error 1

Após pesquisar na Internet descubro que o problema é causado porque o Ubuntu é compilado por padrão com o “Stack Smashing Protection” (-fstack-protector) ativado por padrão.

Para resolver o problema apenas editei o arquivo “makerules” e acrescentei -fno-stack-protector ao CFLAGS.

Criando um branch no SVN

Esta dica pode ser encontra em:

http://svnbook.red-bean.com/en/1.1/ch04s02.html

Primeiro baixe a cópia do diretório pai:

svn co https://lbdistro.svn.sourceforge.net/svnroot/lbdistro

Entre no diretório pai:

cd lbditro

Copia o desenvolvimento atual para o branch desejado:

svn copy trunk branches/LBdistro-old

Veifica se está ok:

svn status
A  +   branches/LBdistro-old

O sinal de + indica que a cópia foi criada

Agora é só dar o commit:

svn commit -m "Creating a branch of old LBdistro."

LBdistro

Aos poucos o LBdistro vai tomando forma, realmente havia um erro na compilação da uClibc, problema resolvido, novos problemas encontrados.

Resumo: quase tudo funcionando.

A idéia é criar uma BIOS de até 2MB que rode no QEMU, pois ainda não tenho resposta da Gigabyte para doação da placa-mãe. Claro o ideal seria já compilar para a Gigabyte M57SLI-S4, pois esta é a primeira placa-mãe para desktop suportada.

Enquanto isso quem quiser testar a compilação pra verificar problemas basta executar:

svn co https://lbdistro.svn.sourceforge.net/svnroot/lbdistro/trunk LBdistro

Nota: é preciso ter bison, flex e ncurses instalado, além é claro do compilador e do automake.