Você encontrou o TUX?

- por Sergio Prado

Categorias: Linux, Promoção Tags: ,

Há uns dez dias atrás lancei um desafio para quem quisesse ganhar um convite VIP para o Seminário Linux Embarcado 2011.

O objetivo era encontrar o TUX, nosso querido mascote, dentro de um sistema de arquivos gerado para o kit FriendlyARM mini2440.

O prazo da promoção acabou ontem. Vamos ver então qual seria o processo para encontrar o TUX?

Bom, o primeiro passo seria baixar a imagem do rootfs e tentar montá-la. Com o comando “file“, podemos ver que tipo de rootfs é a imagem:

$ file rootfs
rootfs: Linux rev 1.0 ext2 filesystem data, UUID=23d47d40-07f9-459d-8268-2ec2c997e400

É um ext2, fácil. Vamos criar um diretório e montá-lo lá dentro:

$ mkdir mnt_rootfs
$ sudo mount -t ext2 -o loop rootfs mnt_rootfs/
$ cd mnt_rootfs/ && ls
bin  dev  etc  home  lib  linuxrc  lost+found  mnt  opt  proc  README  root  sbin  stella  sys  tmp  usr  var

Agora basta vasculhar o sistema de arquivos em busca do TUX. E as pessoas aqui usaram diferentes mecanismos com os comandos “find“, “grep” e “strings“. Eu deixei algumas pistas para facilitar, e aqueles que seguiram as pistas encontraram facilmente. Começando pelo README:

$ cat README
"Aquele que por aqui procurar, um arquivo em /var/log podera achar"

Em “/var/log” temos o arquivo “messages“:

$ cat var/log/messages
Jun 21 23:12:16 tux-machine kernel: [ 8601.142496] Empty flash at 0x004dff70 ends at 0x004e0000
Jun 21 23:12:16 tux-machine /sbin/whereis: Eu vi o Tux passando por aqui!
Jun 21 23:12:16 tux-machine kernel: [ 8601.142657] Empty flash at 0x0055fffc ends at 0x00560000

Bom, o binário “whereis” diz que viu o TUX. Mas não podemos executá-lo diretamente, já que ele foi compilado para a arquitetura ARM:

$ file sbin/whereis
sbin/whereis: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

Temos algumas possíveis soluções aqui. Uma delas é simplesmente copiá-lo para o kit mini2440 e executá-lo. Mas não vamos fazer isso já que boa parte dos participantes não possuem o kit. Outra solução seria executá-lo na sua máquina com um emulador como o “qemu“:

$ qemu-arm -L . sbin/whereis
Por quem voce esta procurando?

É claro, precisamos dizer que estamos procurando pelo TUX:

$ qemu-arm -L . sbin/whereis tux
Eu vi o Tux! Ele esta fantasiado de gato!

Você poderia chegar ao mesmo resultado se usasse o comando “strings“:

$ strings sbin/whereis
/lib/ld-uClibc.so.0
abort
__deregister_frame_info
__register_frame_info
libc.so.0
printf
puts
strcasecmp
__uClibc_main
__exidx_start
__exidx_end
_edata
__bss_start
__bss_start__
__bss_end__
__end__
Por quem voce esta procurando?
Eu vi o Tux! Ele esta fantasiado de gato!
Nao sei quem eh este tal de <%s>!

Agora, já sabemos que ele esta fantasido de gato, ou melhor, de “cat“! Então encontramos ele facilmente em “bin/cat“:

$ file bin/cat
bin/cat: UTF-8 Unicode text
$ cat bin/cat
 
                    ..- - .
                   '        `.
                  '.- .  .--. .
                 |: _ | :  _ :|
                 |`(@)--`.(@) |
                 : .'     `-, :
                 :(_____.-'.' `
                 : `-.__.-'   :
                 `  _.    _.   .
                /  /  `_ '  \    .
               .  :          \\   \
              .  : _      __  .\   .
             .  /             : `.  \
            :  /      '        : `.  .
           '  `      :          : :  `.
         .`_ :       :          / '   |
         :' \ .      :           '__  :
      .--'   \`-._    .      .' :    `).
    ..|       \   )          :   '._.'  :
   ;           \-'.        ..:         /
   '.           \  - ....-   |        '
      -.         :   _____   |      .'
        ` -.    .'--       --`.   .'
            `--                --
 
           Ola! Voce me encontrou!

Obrigado à todos que participaram, e parabéns às 15 pessoas que encontraram o TUX! Dentre os que encontraram, irei realizar um sorteio via random.org e entrar em contato com o ganhador do convite VIP.

Atualização: O sorteado e ganhador do convite VIP foi o Maurício de Oliveira Pena de Ribeirão Preto/SP. Parabéns Maurício!

Um abraço,

Sergio Prado

Faça um Comentário

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.