sábado, 31 de maio de 2008

Celulares do Mal

Não gosto muito de fash, mas...


Cell Phones Are Evil - Watch more free videos

Então, já sabe: não leve mais seu celular pra cozinha...

Plageado de: http://www.meiobit.com/celular/nunca-coloque-um-celular-no-microondas

domingo, 18 de maio de 2008

A Cidade e as Estrelas - Arthur C. Clarke

Terminei de ler "A Cidade e as Estrelas"... Algumas passagens que não quero esquecer...

Se o artista não sabia qual era seu objetivo, nem mesmo o mais milagroso dos instrumentos seria capaz de encontrá-lo para ele
Percebera, instintiamente, desde o começo, que era um explorador, e todos os exploradores estão à procura de alguma coisa que perderam. Raramente a encontram, e mais raramente ainda a descoberta lhes proporciona mais alegria do que a procura.

Acho que sou um explorador, só falta descobrir o que procuro...

Nessa época houve aventura, bem como uma coragem soberba e intépida - a coragem que era capaz de arrancar a vitória dos dentes do desastre

Firefox 2 + Firefox 3.0 + Firefox 3.1: Tudo junto agora

Uso Debian, e o Debian não tem pacote para o Firefox: tem um tal de IceWeasel. É a versão 2 do Firefox. Só que a 3.0 já está aí e a 3.1 (vulgo 4) já está sendo preparada. E eu quero!!! hehe

Primeiro, baixar e compilar o FF3 do CVS da mozilla. Copiado do site da mozilla (http://developer.mozilla.org/en/docs/Mozilla_Source_Code_%28CVS%29)
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/browser/config/mozconfig
cd mozilla
make -f client.mk checkout MOZ_CO_PROJECT=browser
Aí é só esperar ele baixar o fonte.
Pra compilar, de dentro do diretório "mozilla":
./allmakefiles.sh
./configure --enable-application=browser --prefix=/opt/firefox3
make
Isso instala em /opt/firefox3, como root:
checkinstall -D make install
Pronto, só que não dá pra rodar com o IceWeasel junto. Quando abre um, ele só cria outra janela do que já está aberto...

Solucionar isso é até bem simples. Abra o FF3 assim:
/opt/firefox3/bin/firefox -profilemanager -no-remote
Crie um "profile" novo chamado "ff3" (ou outro nome, só lembre de alterar no atalho depois).
Depois, no atalho para o firefox3, na linha de comando, deixe:
/opt/firefox3/bin/firefox -P ff3 -no-remote
No atalho do IceWeasel, deixe assim (apesar de ser IceWeasel, tem um link chamado "firefox"):
firefox -P default -no-remote
Pronto! Era isso. Melhor que isso, só se juntar as extensões dos dois... No diretório ~/.mozilla/firefox existe um diretório para cada perfil. Apague o diretório "extensions" de dentro do diretório que o nome terminar com "ff3" e crie um link apontando para o "extensions" do profile "default". Apenas lembre-se que algumas extensions não são compatíveis com o FF3. Uou! Funciona!
Outra dica é usar links também para o arquivo "search.sqlite", pois ele é a lista dos servidores de busca para o Firefox.

Um screenshot (com compiz e awn, hehe):


Agora falta o 4, mas o caminho será o mesmo... O Firefox 4 não está num repositório CVS, mas num Mercurial (de novo, o site da Mozilla: http://developer.mozilla.org/en/docs/Mozilla_Source_Code_(Mercurial))
O caminho das pedras:
hg clone http://hg.mozilla.org/mozilla-central/ src
cd src
python client.py checkout
Isso baixa os fontes dentro de "src". Para compilar, é preciso ter o autoconf versão 2.13, então...
sudo apt-get install autoconf2.13
Daí:
autoconf2.13
./configure --enable-application=browser --prefix=/opt/firefox4
make
Esperar... e esperar...
Isso instala em /opt/firefox4, como root:
checkinstall -D make install
Escolha um nome de pacote diferente se quiser instalar ao mesmo tempo que o FF3 e o IceWeasel.

Para criar o atalho, use a mesma "técnica", criando um perfil para o ff4, criando os links, etc, etc...

Para manter o ff3 atualizado, use ainda o makefile:
make -f client.mk checkout MOZ_CO_PROJECT=browser
Para manter o ff4 atualizado, use o Mercurial:
hg update
Os três juntos:Firefox 2, Firefox 3.0 e Firefox 3.1

Fonte: site da mozilla e http://blog.codefront.net/2007/08/20/how-to-have-firefox-3-and-firefox-2-running-at-the-same-time/

sábado, 26 de abril de 2008

Eu no Cheese

Apesar do que possa parecer, o "cheese" que falo é esse:


http://www.gnome.org/projects/cheese/

Muito divertido, ainda não está nos repositórios. Nada que não possamos compilar pra usar.

Acessando http://www.gnome.org/projects/cheese/download.html, download da última versão estável.
Não será usava a versão do SVN pois ela precisa do gnome do svn (e não vou recompilar o gnome - eu uso xfce4).
# apt-get install libxml-perl libgnomeui-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libebook1.2-dev
# tar zxvf cheese-2.22.1.tar.gz
# cd cheese-2.22.1/
# ./configure
# make
# checkinstall -D make install
Depois, só chama, na linha de comando ou com um "Alt+F2"
$ cheese


Encontrei vários problemas... mas o software parece divertido. E promete!

HP DV2000 - webcam

The Debian Way

Identificando o modelo da webcam do notebook:
# lsusb
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 002: ID 0c45:62c0 Microdia
Bus 001 Device 001: ID 0000:0000
Via google, verificamos que o driver é o UVC. Vamos de apt-get:
# apt-cache search uvc
linux-uvc-source - Linux kernel USB video class module
luvcview - USB Video Class grabber
Usando o module-assisntence pra instalar o "linux-uvc"
# m-a prepare
# m-a a-i linux-uvc
Termina carregando o módulo:
# modprobe uvcvideo
Pra testar, instalei o ekiga (não como root).
Para configurar a webcam, "Editar", "Preferências", "Dispositivos de Vídeo".

Em "plugin de vídeo", deixe "V4L2". Se essa opção não estiver disponível, instale:
# apt-get install libpt-plugins-v4l2
E era isso.

________________________
UPDATE:
O pacote pro ekiga é "libpt-1.10.10-plugins-v4l2". O "libpt-plugins-v4l2" ainda está no repositório, mas não dá pra instalar pelo apt sem se estressar...

sábado, 29 de março de 2008

KVM: pisando no acelerador com o qemu

Instalar o kvm (Kernel-based Virtual Machine - http://kvm.qumranet.com/kvmwiki) num passo a passo:

1- Verificar compatibilidade do processador:
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
Se não retornar nada, sinto muito, mas ainda recomendo o kqemu do primeiro post.

2- instalar o módulo no kernel:
m-a prepare
m-a a-i kvm
3- verificar os módulos (pra intel e amd):
modinfo kvm-intel kvm-amd
4- carregar o módulo conforme o seu processador e checar se carregou:
modprobe kvm-amd
lsmod| grep kvm
5- depara-se com a mensagem (se não der, vá direto para o 9):
FATAL: Error inserting kvm_amd (/lib/modules/2.6.22-3-amd64/misc/kvm-amd.ko): Unknown symbol in module, or unknown parameter (see dmesg)
6- remova todo mundo
apt-get remove --purge kvm kvm-modules-2.6.22-3-amd64 kvm-source
7- Altere no /etc/apt/preferences para usar o pacote unstable:
Package: kvm*
Pin: release a=unstable
Pin-Priority: 1000
e baixe o kvm "unstable":
apt-get install -t unstable kvm-source
8- Limpa tudo:
m-a clean kvm
m-a purge --force kvm
volte para o passo 2 e repita tudo...

9- E vc chegou aqui, ótimo.

verifique as permissões do /dev/kvm:
crw-rw---- 1 root kvm 10, 232 2008-03-15 01:11 /dev/kvm
Adicione-se no grupo "kvm" com o vigr...
Copie o arquivo /etc/qemu-ifup para /etc/kvm/kvm-ifup (se vc quiser que a rede funcione)
E inicia tudo usando o kvm:
kvm -hda windowsXP.qemu -net nic -net tap,ifname=tap0 -localtime -boot c -m 256
10- Pra iniciar tudo, criei um shell-cript. Provevelmente existam maneira melhor, mas ainda não pensei em nenhuma:
#!/bin/sh

# procura uma interface que não existe

#QEMU="qemu-system-x86_64"
QEMU="kvm"

i=0
while [ `ifconfig tap$i 2> /dev/null | cut -d " " -f 1` ]; do
i=$(($i+1))
done
IFNAME='tap'$i

# carrega o módulo tun, se não estiver carregado
if [ -z `lsmod | grep kvm-amd | cut -d " " -f 1 ` ]
then
sudo modprobe kvm-amd
fi

# carrega o módulo tun, se não estiver carregado
if [ -z `lsmod | grep tun | cut -d " " -f 1 ` ]
then
sudo modprobe tun
fi
# cria e inicia a interface de rede
sudo tunctl -t $IFNAME -u $USER

# carrega o módulo kqemu, se não estiver carregado
if [ -z `lsmod | grep kqemu | cut -d " " -f 1 ` ]
then
sudo modprobe kqemu
fi

# inicia o qemu
exec $QEMU -hda windowsXP.qemu -net nic -net tap,ifname=$IFNAME -localtime -boot c -m 256 #-cdrom /tmp/VS2008ExpressENUX1397868.iso -win2k-hack

# remove a interface de rede
sudo tunctl -d $IFNAME
Fico devendo uns testes com kvm x kqemu.
E ainda devo um teste com o vmware...

sexta-feira, 28 de março de 2008

32 bits X 64 bits

Estava eu querendo jogar um pouco no Linux. É, ninguém é de ferro e um pouco de distração faz descansar melhor do que algumas horas de sono...

Procurei diversos games, mas nenhum que me desse muuuita vontade de jogar. Até lembrar do meu antigo Master System Super Compact e do Super Nintendo. Os videogames eram fantásticos, não fritavam e proporcionavam horas de diversão.

Hoje existem emuladores para os mesmos jogos: Sonic e Mega Man X. O Gens é emulador pro Master System (conhecido como Gênesis nos EUA, por isso o nome) e o ZSnes é o do Super Nintendo. Só que eles estão disponíveis nos repositórios apenas para 32 bits. Meu amd_64 ficou sem... Mas pra tudo dá-se um jeito...

Compilando o ZSnes e gerando um pacote

Entre em ftp://ftp.br.debian.org/debian/pool/main/z/zsnes. Aqui está o pacote para o zsnes para i386. Faça download do arquivo zsnes_1.510-2.dsc. Se houver versão maior, melhor. Use o dget, pois ele vai baixar mais alguns arquivos que precisaremos:
dget ftp://ftp.br.debian.org/debian/pool/main/z/zsnes/zsnes_1.510-2.dsc
Abra o arquivo e adicione amd64 na linha "Architecture: i386"
Architecture: i386 amd64
Atualize também, nesse arquivo, o Build-Depends:
Build-Depends: debhelper (&lgt;= 4), dpatch, dpkg-dev (&lgt;= 1.13.2), g++-multilib [!i386], gcc-multilib [!i386], ia32-libs [!i386], libao-dev [i386], libgl1-mesa-dev, libpng12-dev | libpng-dev, libsdl1.2-dev (&lgt;= 1.2.2-3.1), nasm, sharutils, xutils, zlib1g-dev [i386] | lib32z1-dev [!i386]
Extraímos o pacote, aplicamos os patchs com o dpkg-source:
dpkg-source -x zsnes_1.510-2.dsc
Entramos no diretório onde estão os fontes. Instalamos alguns pacotes necessários, instalamos as dependências pra compilação, compilamos e criamos o pacote:
cd zsnes-1.510
sudo apt-get install gcc-multilib g++-multilib
sudo apt-get build-dep zsnes
dpkg-buildpackage
Agora espere compilar... Ao fim de tudo, será criado um pacote no diretório superiot. Instale-o com o "dpkg -i"...

Compilando o GENS para 32 bits "chroot"

O Gens sequer está nos repositórios do Debian. Eu não encontrei. Logo, a estratégia usada no ZSnes não vai funcionar.
Precisamos baixar os fontes e compilar. Usaremos a versão disponível no cvs (deixe a senha em branco):
cvs -d:pserver:anonymous@gens.cvs.sourceforge.net:/cvsroot/gens login
cvs -z3 -d:pserver:anonymous@gens.cvs.sourceforge.net:/cvsroot/gens co GensForLinux
O Gens é antigo e deve ser compilado com o gcc 3.4. Temos que instalá-lo:
sudo aptitude install gcc-3.4
Vamos exportar a variável CC, para indicar o uso do gcc certo, compilando 32 bits:
export CC="gcc-3.4 -m32"
Instalamos, então, algumas libs para 32bits:
sudo apt-get install ia32-libs-gtk ia32-libs
Infelizmente, isso não é tudo. Nem todos os pacotes estão nessas libs. Precisamos instalar mais alguns. Para compilar, temos que exportar outra variável, para indicar (-L) onde estão as bibliotecas (já que vamos compilar um ia32), além de indicar para usar o OpenGL (-lGL):
export LDFLAGS="-L/usr/lib32:/emul/ia32-linux/lib:/emul/ia32-linux/usr/lib:/usr/lib:/lib:/usr/local/lib/:/lib/x86_64-linux-gnu:\
/usr/lib/x86_64-linux-gnu -lGL"
Em "/emul/ia32-linux" vão as libs que precisamos para compilar. Pra descobrir quais são, fui batendo com a cabeça: tenta compilar e usar o apt-get e o apt-file para encontrar a dependência. Só que não instala-se com o apt-get, pois ele instalaria para 64 bits.
Temos que entrar em http://packages.debian.org/, procurar o pacote e descompactá-lo em
/emul/ia32-linux/. Por exemplo, para a libsdl1.2-dev:
wget http://ftp.cl.debian.org/debian/pool/main/libs/libsdl1.2/libsdl1.2-dev_1.2.13-2_i386.deb
dpkg -X libsdl1.2-dev_1.2.13-2_i386.deb /emul/ia32-linux/
Para o gens, instalei ainda:
  • libsdl1.2debian-alsa_1.2.13-2_i386.deb
  • libsdl-sound1.2-dev_1.0.1-12+b1_i386.deb
  • libasound2-dev_1.0.16-2_i386.deb
  • libdirectfb-dev_1.0.1-8_i386.deb
  • libdirectfb-1.0-0_1.0.1-8_i386.deb
  • libx86-1_0.99+ds1-2_i386.deb
Depois, o clássico, mas ele não vai encontrar o gtk nem o sdl certo, então não deixe-o testar:
./configure --disable-gtktest --disable-sdltest
make
make install
Uma dica: use o "checkinstall" para criar um pacote:
checkinstall make install
Depois disso, ainda precisa de umas bios, pra poder rodar tudo. Vc encontra elas por aqui: http://www.fantasyanime.com/emuhelp/emuhelp_gens.htm#segacdbios

Abra o gens e, em "Option" -> "Bios/Misc Files", configure os arquivos baixados da bios.

E, claro, para ambos os casos, precisa de umas boas roms... mas essas o Google encontra pra vc...