segunda-feira, 25 de fevereiro de 2008

Ogg -> Mp3 -> Ogg

Para converter OGG em MP3 usando a linha de comando:
oggdec -o - ~/rodolfo/Música/Skank\ -\ Dois\ Rios\[1\].ogg | lame -h -V 4 --vbr-new - saida.mp3
Um pouco mais devagar agora:
oggdec -o - ~/rodolfo/Música/Skank\ -\ Dois\ Rios\[1\].ogg
Esse comando decodifica o arquivo Ogg em WAVE. Se quiser simplesmente o WAVE, é só direcionar a saída desse comando para um arquivo.
lame -h -V 4 --vbr-new - saida.mp3
Esse comando pega o arquivo WAVE e codifica em MP3 (tem um espaço entre "-" e "saida.mp3"... maldita fonte!).

Copiado descaradamente de: http://liquidat.wordpress.com/2007/12/03/short-tip-convert-ogg-file-to-mp3/

Agora, pensando assim, pode-se converter inúmeros formatos de áudio (quem sabe até de vídeo, mas não testei).

Convertendo de MP3 para Ogg:
mp3-decoder -w - Skank\ -\ Dois\ Rios.mp3 | oggenc - -o Skank\ -\ Dois\ Rios.ogg
Nessas conversões, há perda de qualidade (tanto por parte do MP3 quanto do Ogg).
Mais informações sobre qualidade da codificação, RTFM (leia o manual)...

Um comparativo:
- arquivo original, em OGG: 3,8MB (3928560 bytes)
- arquivo MP3, a partir do OGG: 4,9MB (5053643 bytes)
- arquivo WAVE, a partir do OGG: 48MB (49600556 bytes)
- arquivo OGG, a partir do MP3: 3,8MB (3887563 bytes)

SSH + X11Forwarding

Para configurar X11Forwarding no servidor ssh, altere o arquivo /etc/ssh/sshd_config, adicionando ou editando a linha:
X11Forwarding yes
No cliente ssh também é necessária uma configuração. No arquivo /etc/ssh/ssh_config, a linha:
ForwardX11 yes

Feito isso, reinicie o servidor ssh.
É só conectar e chamar aplicações gráficas do servidor. Elas serão executadas no servidor, mas a "tela" será a do cliente. Tudo através do ssh.

sábado, 23 de fevereiro de 2008

Converter BIN/CUE em ISO

Dica rápida: como converter imagens BIN/CUE em ISO:

Usando o bchunk:
apt-cache search bchunk
bchunk - CD image format conversion from bin/cue to iso/cdr
Se ainda não está instalado, não canso de repetir:
aptitude install bchunk
Depois, bem simples:

rodolfo@debian-note:/mnt/sda2/rodolfo/game$ ls
htd-bsga.bin htd-bsga.cue
rodolfo@debian-note:/mnt/sda2/rodolfo/game$ bchunk htd-bsga.bin htd-bsga.cue htd-bsga
bsgbinchunker for Unix, version 1.2.0 by Heikki Hannikainen
Created with the kind help of Bob Marietta ,
partly based on his Pascal (Delphi) implementation.
Support for MODE2/2352 ISO tracks thanks to input from
Godmar Back , Colas Nahaboo
and Matthew Green .
Released under the GNU GPL, version 2 or later (at your option).

Reading the CUE file:

Track 1: MODE1/2352 01 00:00:00

Writing tracks:

1: bsg01.iso 154/154 MB [********************] 100 %
rodolfo@debian-note:/mnt/sda2/rodolfo/game$ ls
bsg01.iso htd-bsga.bin htd-bsga.cue
rodolfo@debian-note:/mnt/sda2/rodolfo/game$
Depois, se quiser montar:
sudo mount -o loop bsg01.iso /mnt/loop
Era isso.

Opa, quase esqueci a fonte:
http://gutocarvalho.net/mediawiki/index.php/Convertendo_imagem_BIN_CUE_para_ISO_CDR

quinta-feira, 21 de fevereiro de 2008

Dica na linha de comando: melhorando o autocompletar

Peguei essa dica no Viva o Linux (os comentários são meus)...


Sempre achei o autocompletar do shell no FreeBSD melhor que o do Linux por um motivo: ele funcionava pegando as primeiras letras que vc digitava. Claro, é possível fazer o mesmo no Linux...

1- Crie no seu home um arquivo com o nome .inputrc
2- Coloque no arquivo o conteúdo:
"\e[A": history-search-backward
"\e[B": history-search-forward
Da própria dica:
Agora as setinhas farão procura por contexto. Se você não
digitar nada, o efeito será o mesmo que antes, mas se você digitar um
caractere e pressionar a seta, ele só irá mostrar comandos que comecem
com aquele caractere."


O Linux guarda no arquivo .bash_history os últimos comandos digitados. Por padrão são os últimos 500, mas eu alterei para 2000 no meu .bashrc:
export HISTFILESIZE=2000
export HISTSIZE=2000

Essas são dicas boas, que melhoram a produtividade no modo texto.

Qemu completo: instalação, acelerador e rede

UPDATE: se o seu processador suporta, recomento que use o kvm:
http://ratosdelaboratorio.blogspot.com/2008/03/kvm-pisando-no-acelerador-com-o-qemu.html
-------------------------------------------------------------------------------------------------

Objetivo: instalar qemu no Debian (provavelmente funcione no Ubuntu também), com kqemu, configurando rede, adicionando TS e usando com Seamless. O seamless permite usar o TS do Windows XP e rodar uma aplicação remotamente sem as janelas e a barra de tarefas do Windows.

Um screenshot usando o qemu, o IE7 (como uma janela, mas remotamente dentro da máquina virtual), da linha de comando no Linux e no windows. O site do br-linux só pra mostrar a rede funcionando...


Dica: vc pode usar o aptitude no lugar do apt-get...

1- Atualizar a base do apt
apt-get update
2- Instalar o qemu
apt-get install qemu
3- Instalar o kqemu
Segundo o guia do hardware, o kqemu é "um módulo de Kernel que transforma o Qemu for Linux num virtualizador similar ao VMware. Ele passa a repassar as chamadas ao invés de interpretar cada uma, como fazia até então. Mais do que isso, o desempenho também fica de 4 a 5 vezes melhor"
Instalar ele no Debian é barbada:
m-a prepare
m-a a-i kqemu
3.1- Configurar Kqemu (permissões)
Para permitir que o kqemu seja usado por qualquer usuário, o arquivo /dev/kqemu deve ter permissão de escrita para todos. Isso pode ser feito automaticamente, criando um arquivo em /etc/udev/rules.d:
vi /etc/udev/rules.d/60-kqemu.rules
com o conteúdo:
KERNEL=="kqemu", NAME="%k", MODE="0666"
Para verificar se está tudo ok, carrega-se o módulo kqemu (como root):
modprobe kqemu
e verifica-se as permissões do arquivo criado:
ls -l /dev/kqemu
a resposta deve ser como essa:
crw-rw-rw- 1 root root 10, 61 2007-12-16 22:58 /dev/kqemu
4- Rede

Para configurar uma interface de rede, vou apresentar uma forma de fazer, um pouco trabalhosa, mas que gostei dos resultados.

Crie (ou edite) o arquivo qemu-ifup, em /etc:
vi /etc/qemu-ifup
Comente a(s) linha(s) que está(ão) lá e acrescente:
#a interface que conecta com a internet
IFNAME_INTERNET='eth1'

#coloca um ip na nova interface
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1

#libera nat no firewall
sudo /sbin/iptables -t nat -A POSTROUTING -o $IFNAME_INTERNET -j MASQUERADE

#libera ip_forward
sudo /bin/sh -c "/bin/echo 1 > /proc/sys/net/ipv4/ip_forward"
Depois de tudo isso, é preciso adicionar os comando para executar com o sudo. Como root:
visudo
Adicionando algo como:
rodolfo ALL = /sbin/iptables, /bin/sh -c /bin/echo 1 > /proc/sys/net/ipv4/ip_forward, /sbin/ifconfig
Tudo numa linha só, trocando "rodolfo" pelo nome do usuário que vc está usando.

4.1- Tun

Vamos instalar um pacote, para auxiliar criar nossas interfaces de rede:
apt-get install uml-utilities
E ajustamos para o módulo "tun" ter permissões corretas:
vi /etc/udev/rules.d/60-tun.rules
Com o conteúdo:
KERNEL=="tun", MODE="0666"
Carregue o módulo e seguimos adiante:
modprobe tun
5 - O kqemu

5.1 - o kqemu só funciona se o sistema emulado for o mesmo que o sistema da sua máquina (x86-64, no meu caso).

Assim, o emulador que deve ser executado é o da sua arquitetura. No meu caso, é "qemu-system-x86_64". Para ter certeza, exeute:
qemu-system-x86_64 | grep kqemu
ele deve mostrar as opções:
-kernel-kqemu enable KQEMU full virtualization (default is user mode only)
-no-kqemu disable KQEMU kernel module usage
5.2- verificar instalação e suporte ao kqemu

Vamos pegar uma imagem qualquer em http://fabrice.bellard.free.fr/qemu/download.html para testar o qemu. Eu peguei o NetBSD...
bunzip2 small.ffs.bz2
qemu-system-x86_64 -kernel-kqemu small.ffs
Para verificar se o kqemu está habilitado, clique na janela do qemu (o mouse ficará lá dentro, e o texto da barra de titulo vai mudar). Pressione, então:
ctrl+alt+2
Isso levará para a console do qemu. Digite:
info kqemu
A resposta deverá ser:
kqemu support: enabled for user and kernel code
Aqui vc pode usar o comando "help" para obter diversas informações da máquina virtual e do qemu.

Se o que aparecer for:
kqemu support: disabled
Verifique se o módulo está carregado e com as permissões corretas.

6 - Criar a imagem, bootar e instalar

6.1 - criando a imagem para o windows XP
qemu-img create windowsXP.qcow2 4G

"create" é o que vamos fazer
"4G" é o tamanho
"windowsXP.qcow2" é o nome do arquivo. A extensão é só pra bonito.
Você pode usar "-f qcow2", que indica o formato para qcow2 (que expande a imagem à medida que a máquina virtual cresce)

outras opções: "man qemu-img" no seu terminal

6.2- o boot
Como root, carregamos os módulos:
modprobe kqemu
modprobe tun
Criamos uma interface de rede para o usuário:
tunctl -t tap0 -u rodolfo
"-t tap0" indica qual interface estamos criando. Ela não pode existir ainda
"-u rodolfo" indica o dono da interface, tornando-a persistente

E iniciamos com o CD-Rom
qemu -hda windowsXP.qemu -cdrom winxp.iso -net nic -net tap,ifname=tap0 -localtime -m 256 -boot d
"-hda windowsXP.qcow2" indica que o hd será o arquivo que criamos
"-cdrom winxp.iso" é a imagem do cd com o XP
"-net nic -net tap,ifname=tap0" configura a interface de rede. É apenas uma forma, entre diversas existentes
"-localtime" coloca o horário na máquina virtual sincronizado com o real/bin/sh -c echo 1 > /proc/sys/net/ipv4/ip_forward
"-m 256" deixa 256MB de memória para a máquina virtual
"-boot d" executa o boot pelo CD.

E seguimos pela instalação do windows... como se fosse numa máquina "normal"... Demora, então seja paciente...

7 - iniciar pela primeira vez

7.1 - configurar a rede
Para configurar a rede, existem vários tutoriais na net. É um windows comum, mas não configuramos o qemu para fornecer um IP automaticamente.
No exemplo que estou criando, usei, no Windows:
IP: 172.20.0.2
Máscara: 255.255.0.0
Gateway: 172.20.0.1 (é o IP da interface criada no Linux!)
DNS: 172.20.0.1 e 192.168.0.1 (esse último é o DNS da minha rede).

7.2 - inicar o TS
Habilite o serviço de Terminal Service no XP. É uma sujestão, pois eu acho mais cômodo usá-lo no lugar do próprio QEMU.
Para configurar:

Meu computador -> Propriedades -> Remoto

Inicie o serviço

Teste a conexão usando o rdesktop:
rdesktop 172.20.0.2
8- Otimizar o Windows:

Para rodar o windows depois de instalado, use o comando:
qemu -hda windowsXP.qemu -net nic -net tap,ifname=tap0 -localtime -m 256
É o mesmo comando usado no item 6, mas sem as informações do cdrom...

Você pode simplismente copiar o arquivo "windowsXP.qemu" e usar uma das imagens para fazer testes. Se tudo der errado, é só copiar o arquivo de volta e temos um Windows XP recém instalado para brincar.

Se quiser, pode testar algumas otimizações:

http://naganimes.wordpress.com/2008/01/31/100-dicas-windows-xp-sp2-2000-a-2003/
http://www.forumpcs.com.br/viewtopic.php?t=89566
http://undergeek.wordpress.com/2008/01/20/otimizando-o-windows-xp/

Eu usei algumas e obtive uma economia significativa de memória...

9- SeamlessRDP

9.1- Instale o SeamlessRDP (isso no Windows, dentro da máquina virtual)
Baixe-o daqui http://www.cendio.com/seamlessrdp e simplesmente extraia o conteúdo na raiz (c:/) do seu windows virtual.

9.2- Conectando e executando:

Para rodar o bloco de notas, por exemplo:
rdesktop -A -N -b -p - -s "C:\seamlessrdp\seamlessrdpshell.exe notepad" 172.20.0.2
Eu uso executando o "cmd" e chamando diversas aplicações a partir dele. Eu uso, basicamente, o IE, para testar bugs que só ele consegue...


Dicas:
  • É possível usar o arquivo /etc/modules para carregar automaticamente os módulos tun e kqemu.
  • Você pode criar um script para criar a interface de rede toda vez que o computador for iniciado (como os secripts em /etc/init.d e nos "rcN°.d")