Desde antes da existência do Palm Pre, já tinha sido falado que o sistema operacional que substituiria o Garnet OS (antigo Palm OS) seria baseado em Linux. A PalmSource foi adquirida pela ACCESS, mas a Palm adquiriu os direitos sobre a última versão do vetusto Palm OS (codinome Garnet). Já que o Palm OS 6.0 (codinome Cobalt) nunca mais veria a luz do dia… Malm Preelhor trabalhar em cima do que já funcionava, mesmo que cheio de gambiarras (*), do que “fazer loteria” com os seus dispositivos.
Então, habemus Pre, e habemus webOS, o novo-matador-de-iPhone. Ao menos, é o que a “imprensa especializada” afirma. Só que Linux hackers não se prendem apenas à tela simpática e à integração bem-feita do webOS com sistemas online. Eles querem ver o que tem dentro. E como é Linux, a licença é GPL. Se é GPL, a Palm é obrigada a liberar o código-fonte. E isso foi feito.
Matthew Garrett, um Linux hacker inglês, pegou o que a Palm disponibilizou via Internet para dar uma olhada, e chegou a várias conclusões interessantes. Se você não mexe com Linux, a partir daqui você vai boiar um pouco… Mas continue lendo, porque o saldo é (muito) positivo.
- O n
ome-código do Pre durante o desenvolvimento é “Castle” (Castelo), mas ao olhar a imagem da ROM disponível para download, é possível ver referências a um outro nome-código, “Pixie”. Pode ser que isto confirme o boato de um segundo aparelho com webOS, o Palm Eos, a ser lançado pela AT&T (e GSM, viva!). - A imagem contém firmware para modems 3G que operam segundo os padrões CDMA e UMTS. Segundo o autor, tem uma vaga semelhança com o firmware do Qualcomm Gobi, chipset que opera tanto em CDMA quanto em HSDPA, e usado em alguns notebooks modernos.
- Ainda no firmware do modem, o núcleo é um objeto ELF (formato padrão de binários do Linux) para processadores da família ARM, de 32 bits. Ele também tem referências a criptografia RSA, o que deve estar lá para diminuir a chance de ter gente hackeando o modem do Pre.
- Apesar disso, o Pre não tem espaço para um SIM card (como tem alguns celulares CDMA da Nokia, como o meu 6265), e com essa criptografia, desbloquear o Pre para uso em outras operadoras deve ter que seguir o mesmo caminho do iPhone: Procurar uma falha no firmware para burlar o bloqueio. Tem uma ferramenta fornecida pela própria Palm (o programa PmModemUpdater, para Linux) que pode vir a ser útil nessa empreitada.
- A memória interna (flash) é reconhecida como se fosse um cartão MMC, que é o irmão gêmeo do padrão SD.
- Boa parte do software do Pre está disponível sobre a GPL. Segundo a licença, se está usando software GPL, o código-fonte deve estar disponível por algum meio (por exemplo, download) para quem quiser. A Palm disponibiliza para quem solicitá-lo por escrito, num email, por exemplo, o que satisfaz a GPL: ela não está escondendo o código-fonte, mas fornece-o a quem quiser.
- Numa olhada na lista de softwares encontrados dentro do webOS, alguns velhos conhecidos: os drivers ALSA (para som), bzip2 (compactador), binutils (o /bin todo), e2fsprogs (sistemas de arquivos ext2 e 3), dosfstools (fat), ffmpeg e gstreamer (vídeo), lame (codificar MP3), mtools (DOS em Linux!), ncurses, ntp (servidor de horas), pulseaudio (servidor de som), PuTTY (emulador de terminal), wireless-tools, entre outros. Três conhecidos de quem mexe com Linux embarcado são o busybox (o shell tudo-em-um), o dropbear (servidor SSH) e o dnsmasq (DNS e servidor DHCP).
- O webOS está baseado no framework OpenEmbedded, o que facilita (e muito) a vida de quem quer desenvolver para a plataforma, já que traz um ambiente pronto de compilação cruzada (cross-compiling), além de facilidades para empacotar uma distro para um ambiente embarcado. Vai aí a (primeira) crítica ao Android, que não usa nem esse nem nenhum framework, e é um Linux meio que fora dos padrões, o que inviabiliza certas coisas, como o uso de um sistema de pacotes. Sim, o webOS aceita um sistema de pacotes, no caso o ipkg, o mesmo da versão antiga do OpenWRT (agora é o opkg).
- O kernel é o 2.6.24, com (provavelmente) patches e otimizações do Wind River Linux. Os drivers parecem estar bem integrados ao sistema, já que a maioria usa as interfaces padrão do kernel, como backlight, LEDs e por aí vai). Aí vem outra crítica ao Android, que tenta fazer “do seu jeito”, ao invés de usar o que já tem disponível. Existem drivers para o DSP do processador OMAP, o pacote oprofile, para análise de desempenho de código, e drivers para a rede wireless (um chip da Marvell encapsulado numa solução SDIO) e USB.
- Uma curiosidade: Caso você tenha um Palm Pre, ou o (quem sabe) Palm Eos, é curioso saber que cada um tem o seu número de identificação para o servidor USB, que é o micro. Quando ligamos um dispositivo USB, ele anuncia-se ao micro, passando o seu número de identificação, entre outras informações. Então, cada um tem o seu.
- O Pre usa o upstart para inicialização, o que é um espanto. Espanto porque o projeto do upstart é otimizado para o Ubuntu, e não para um dispositivo embarcado. Além da inicialização mais rápida, alguns serviços que não são necessários durante a atualização do sistema são automaticamente parados pelo upstart, por exemplo.
- A biblioteca padrão é a glibc. Curioso que não estão usando a uClibc (otimizada para dispositivos embarcados), mas é a glibc pura mesmo. O Android, em contrapartida, está usando uma outra solução, mais esotérica.
- A hierarquia do sistema de arquivos é a mesma de qualquer ambiente Linux, com o barra (/) sendo o raiz, e tudo embaixo. Uma coisa esquisita é encontrar utilitários que estão encapsulados dentro do busybox nas suas versões completas, também no sistema. Outra coisa esquisita é… Por que tem um comando como fsck.ext4 instalado no Pre? Para checar um cartão SD formatado como ext4? Talvez, mas o Pre não terá cartões SD, né? E mesmo que tivesse, alguém formataria um cartão SD em ext4? Da mesma forma que tem as bibliotecas para o formato Ogg Vorbis instalado (libogg e libvorbis), mas não está garantido o suporte ao formato.
- Áudio vai através do pulseaudio (parece que o dito cujo presta, afinal das contas), vídeo vai através do gstreamer (era meio lento, mas funciona bem). Codecs como H.264, WMA e outros estão instalados.
- Ah, o Pre pode se passar por um iPod, e isso ele faz mudando o seu perfil USB, e apresentando um sistema de arquivos como se fosse o de um iPod. Muito engenhoso, mas não tem suporte ao já morto (graças a Deus) DRM da Apple. Lê (e toca) AIFF, MP3, WAV, AAC, AppleLossless, Audible, H.264, MPEG4 e H.264LC. Outros codecs podem ser (virtualmente) instalados, e o código do perfil USB pode ser ampliado para fazer com que o dispositivo se passe por outro MP3 player.
- A parte de comunicação entre processos (o IPC) é feita com o uso do dbus, especificação padrão do Linux, e não subvertido como o do Android. Vem também um montador ARM (assembler), e o servidor Web traz numa página escrita em PHP (sim, DENTRO do Pre) algumas dicas de como a rede dentro dele é organizada.
Em resumo, é um aparelho muito interessante, e o webOS está muito mais para uma distro Linux do que o Android: Vários elementos que caracterizam a herança estão mais presentes do que no sistema da Open Handset Alliance. Dá para ser root nele sem muita dificuldade (aliás, já conseguiram), e quando tivermos uma versão GSM, pode ter certeza que teremos muita diversão pela frente.

O primeiro homebrew do Palm Pre.
Fonte: blog do Matthew Garrett e Pinguins Móveis.
(*) O Palm OS do meu T|X é um Garnet v. 5.4.9, com uns 5 anos de idade. Francamente, só a Microsoft para atrasar tanto uma atualização de sistema operacional… Pelo visto até ela aprendeu, com o Windows 7.









