Month: February 2007

Criando um ELF para usar no LinuxBIOS

A criação de sistema com o Linux BIOS passa por 4 processos:

Criação da Imagem do Kernel
Criação do rootfs como Initramfs
Criação do ELF contendo kernel+Initramfs
Criação da Imagem LinuxBIOS contendo o ELF como payload.

O kernel deve ser o menor possível contendo apenas recursos vitais para o funcionamento do Linux.

A criação do Initramfs (valeu Marcelo), pode ser encontrada aqui:
http://lldn.timesys.com/docs/initramfs
http://www.timesys.com/timesource/initramfs.htm

O comando para criar o ELF é listado abaixo:

mkelfImage --append="console=ttyS0" --initrd=initrd vmlinuz linux.elf

Pronto, já temos o payload, agora é só compilar o LinuxBIOS com ele.

Procurando um Instalador Multiplataforma?

No mundo open source quase sempre temos a vantagem de muitas opções, porém as vezes muitas opções acabam por dificultar uma boa escolha, ou a melhor escolha.
Instaladores para Linux, por exemplo, é o que não falta, é até difícil escolher.
Mas e se precisarmos de um instalador multiplataforma, instaladores que funcionam em Linux e Windows já não são tão comuns, a lista começa a reduzir, mas mesmo assim ainda podemos encontrar algumas dezenas deles.

Se a lista de recursos for aumentando: suporte a instalação via modo texto e modo gráfico, suporte a instalação incremental (patch mode), ambiente de desenvolvimento fácil de utilizar, suporte a vários idiomas. Provavelmente agora você conseguirá reduzir seu conjunto de opções a 2 ou 3 instaladores.
Mesmo assim, perderá um bom tempo procurando por eles.
Felizmente alguém já fez isso e resolveu compartilhar a descoberta com você.

O instalador Multiplataforma (Linux, Windows, BSD’s, MacOSX, AIX, Solaris, HP-UX, etc…) que você está procurando se chama InstallJammer.
O InstallJammer tem todos os recursos listados acima, e muito mais, possui um ambiente de desenvolvimento integrado (IDE) parecido com o do InstallShield, com a vantagem de ser software livre.
A versão atual é a 1.1, e já possui suporte ao Português do Brasil, minha pequena contribuição ao projeto. Espero que este instalador possa ser útil para vocês, e caso o Instalador lhe seja útil, contribua para o projeto codificando, traduzindo ou doando.

O site do projeto é:

www.installjammer.com

Descubra onde você está

Você está navegando tranquilamente na Internet quando abre algum site com propaganda de acompanhantes ou mulheres procurando homens na sua cidade.
Mas como é que eles sabem que eu estou em tal cidade, e como sabem meu sexo, etc. Não é por magia negra.
O IP determina o país onde a pessoa está, mas não diz mais nada em relação ao estado ou cidade. Porém existem empresas que salvam as informações quando as pessoas visitam sites e preenchem algum cadastro.

Faça um teste, entre em:
http://www.maxmind.com/app/locate_ip

Digite seu IP e veja se acertou a sua localização.

Se você não sabe seu IP e não tem acesso ao terminal, vá primeiro em:
http://www.whatismyip.com

keywords: geotag geolocalizacao geolocalização

Os desenvolvedores X também erram!

Procurei pela solução para o erro do Xvesa (Couldn’t map low memory), mas não encontrei, achei apenas o código fonte do XFree86 onde está a mensagem de erro.

Para minha surpresa o erro é gerado por uma cagada dos desenvolvedores do X, veja o código do arquivo xc/programs/Xserver/hw/kdrive/vesa/vm86.c:

devmem = open("/dev/mem", O_RDWR);
if(devmem < 0) {
perror("open /dev/mem");
goto fail;
}

devzero = open("/dev/zero", O_RDWR);
if(devmem < 0) {
perror("open /dev/zero");
goto fail;
}

magicMem = mmap((void*)MAGICMEM_BASE, MAGICMEM_SIZE,
PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_PRIVATE | MAP_FIXED, devmem, MAGICMEM_BASE);

if(magicMem == MAP_FAILED) {
ErrorF("Couldn't map magic memory\n");
goto fail;
}

Perceba que eles tentam abrir o /dev/zero salvando o resultado em devzero, porém na hora de verificar se o retorno está correto testam devmem e não devzero.

Nisso descobri por que eu não estava conseguindo iniciar o Xvesa, eu não tinha o /dev/zero no meu sistema.

Atualização: Felizmente este código já foi corrigido no Xorg.

Problemas encontrados com o Xvesa

Problema:
_XSERVTransSocketOpen: socket() failed for tcp
_XSERVTransSocketOpenCOTSServer: Unable to open socket for tcp
_XSERVTransOpen: transport open failed for tcp/local:8
_XSERVTransMakeAllCOTSServerListeners: failed to open listener for tcp
_XSERVTransSocketOpen: socket() failed for local
_XSERVTransSocketOpenCOTSServer: Unable to open socket for local
_XSERVTransOpen: transport open failed for local/local:8
_XSERVTransMakeAllCOTSServerListeners: failed to open listener for local

Solução:
Ativar Socket e suporte TCP/IP no kernel

Problema:
_XSERVTransSocketUNIXCreate mkdir(/tmp/.X11-unix)

Solução:
O sistema de arquivo está como somente leitura, mounte o permissão de leitura e escrita (mount -o remount,rw /).

Problema:
Couldn’t map low memory

Solução:
Crie o device file /dev/zero

Compilando o ViewML

Modificar o arquivo /pixil-1.2.3/packages/viewml/viewml/src/Makefile

Alterando
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66

Para
/usr/lib/gcc-lib/i486-linux-gnu/2.95.4

Lançado o GPE Phone Edition G(PE)2

Dois contribuidores do GPE (Nils Faerber e Florian Boor) foram contactados há um ano atrás pela Orage Telcom/Pequim, uma das empresas que criou o forum LIPS (Linux Phone Standard), para desenvolver uma versão do GPE voltada para smartphones.

Este já é o segundo projeto para celulares desenvolvidos a partir do GPE, o primeiro foi o OpenMoko (http://www.openmoko.com) patrocinado pela empresa FIC, que lançará um celular usando tal sistema.

Mas ao contrário do OpenMoko, que até agora não liberou se quer uma linha de código, o G(PE)2 ou GPEphone já está disponível para download: http://gpephone.linuxtogo.org

Agora temos que torcer para que estes projetos tenham sucesso, e quem sabe até mesmo juntem forças e possam tornar o Linux mais adaptado à aplicações móveis.

Mais informações (ps. nunca escreva “maiores informações”, informação não tem tamanho):
http://www.linuxdevices.com/news/NS4397267511.html