terça-feira, 24 de novembro de 2009

Opera Unite

Nos dias que correm, muito se fala em "cloud computing", nuvem, etc... Até o Google com o Chrome OS veio consolidar ainda mais a ideia de que o futuro é a "nuvem"...
Será???
A Opera parece que tem uma ideia oposta.
Veja o vídeo onde a Opera "reinventa" a web...



Ok, eles até concordam em parte com a nuvem, mas defendem a ideia que as pessoas tem o direito de ter o "controlo" dos seus conteúdos na web. Para isso a Opera criou o Opera Unite.
Existem inúmeros serviços na web para partilhar imagens vídeos, etc... E porque não usar o seu browser como um servidor? É essa a ideia do Opera Unite. Com o Opera Unite você poder partilhar ficheiros directamente sem "intermediários", de uma forma simples e acessível.



Além disso o Opera é o melhor browser da actualidade. Eu sei... o Firefox é muito flexível devido as inúmeras extensões disponíveis. É por isso que eu uso o Firefox :) Mas reconheço que o Opera é melhor, e está à frente de todos os outros browsers. Experimente e verá a diferença. Uma coisa que me agradou no Opera foi o desempenho do Flash. Eu pensava que o fraco desempenho do Flash no Linux, era falta de empenho por parte da Adobe no desenvolvimento do plugin para o Linux. Mas a verdade é que o Firefox não está em perfeita "sintonia" com o Flash no Linux. Eu uso Ubuntu 64bit e pelo menos aqui na minha máquina, é visível que o Flash tem melhor desempenho no Opera. (Será que a culpa é do Ubuntu ou do Firefox?)
Eu utilizo muito software open source. E uma das características que mais gosto é a liberdade, e a possibilidade de podemos ver, e mexer no que está por "dentro". Mas não sou nenhum fundamentalista. E reconheço quando um software proprietário tem qualidade. E o browser Opera é um desses exemplos :)

www.opera.com

sexta-feira, 20 de novembro de 2009

Parceria Google Canonical

Já não é novidade, o Código fonte do Chrome OS já se encontra disponível.
Veja mais detalhes no blog oficial do Google Chrome.
http://googleblog.blogspot.com/2009/11/releasing-chromium-os-open-source.html

A surpresa é que a Canonical (que desenvolve o Ubuntu) vai ter uma participação activa no desenvolvimento do Chrome OS.
O Chrome OS vai ter componentes em comum com o Ubuntu. Mas os dois Sistemas Operativos (ou sistemas operacionais) tem propósitos distintos. O Chrome OS foi pensado para ser utilizado exclusivamente com aplicações web. Já o Ubuntu continuará sendo um SO "tradicional" de utilização geral, como aplicativos a rodar localmente.

A Google ganha com a experiência da Canonical no desenvolvimento de sistemas GNU/Linux. E não precisa de reinventar a roda.

A Canonical também sai a ganhar porque o Google com certeza terá parcerias com fabricantes. E as empresas que criarem dispositivos compatíveis com o Chrome SO do Google, também serão potencias parceiros OEM da Canonical. Como os dois sistemas irão ter, alguns componentes do SO em comum, logicamente irão funcionar no mesmo hardware sem problemas.

Veja o Anuncio oficial da Canonical.
http://blog.canonical.com/?p=294

sexta-feira, 13 de novembro de 2009

Recompilando o ffmpeg no Ubuntu 9.10

EDIT: (26 de maio de 2010) Veja aqui como compilar o ffmpeg com vp8

No Ubuntu 8.10 para ter suporte a x264, bastava adicionar o repositório do medibuntu. Mas no Ubuntu 9.04, o ffmpeg já não tinha suporte a x264 e aac.
Para solucionar o problema, recompilei o ffmpeg no Ubuntu 9.04.

Com a chegada do Ubuntu 9.10, tive de recompilar novamente o ffmpeg. Mas acontece que a nova versão do ffmpeg sofreu algumas alterações. Por exemplo : o --enable-libamr-wb mudou para --enable-libopencore-amrwb. E o pacote libamr-wb-dev mudou de nome para libopencore-amrwb-dev. (esse pacote é necessário para ter suporte a ficheiros 3gp que são usados em alguns celulares).

Então vamos começar:

Crie uma pasta temporária ffmpeg-install por exemplo.
Agora abra o console dentro da pasta e execute os seguinte comandos:

sudo apt-get purge ffmpeg x264 libx264-dev
sudo apt-get update

Agora vamos instalar as dependências:

sudo apt-get install build-essential subversion checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libtheora-dev libxvidcore4-dev libsdl1.2-dev libvorbis-dev libopencore-amrwb-dev libopencore-amrnb-dev git-core libx11-dev libxfixes-dev zlib1g-dev

Baixando a última versão do o x264:

git clone git://git.videolan.org/x264.git

Agora entramos na pasta x264:

cd x264

Depois:

./configure

make

NOTA: no configure use o --enable-pic para compilar com suporte a 64bit.

./configure --enable-pic

Não Utilize essa opção caso o seu processador não seja 64bit.

Agora com a ajuda do checkinstall, vamos criar e instalar o nosso pacote deb :)

sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --default

E pronto. Já temos o x264, agora vamos ao ffmpeg.

Na mesma consola use o seguinte comando para voltarmos a pasta ffmpeg-install:

cd ..

Agora "baixamos" o ffmpeg:

svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

E depois:

cd ffmpeg
./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-avfilter --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvorbis --enable-x11grab --enable-version3
make

NOTA: use a opção --arch=x86_64 no configure se quiser optimizar para processadores 64bit

sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "5:0.svn`date +%Y%m%d`-12ubuntu3" --default

Repare que no comando do checkinstall tive de mudar o numero da versão de 4:0.svn para 5:0.svn, senão você acaba de compilar o ffmpeg e gestor de pacotes de seguida "reclama" que tem uma "nova" versão no repositório :P

E pronto! Já temos a última versão do ffmpeg com x264, aac e amr.

NOTA: O checkinstall criou um pacote deb dentro da pasta ffmpeg. Você pode usar o pacote deb para instalar em outras máquinas. :)

segunda-feira, 9 de novembro de 2009

Grub2

O Ubuntu 9.10 tem uma novidade. É o grub2.
Se você quiser alterar o menu do Grub2, o procedimento é diferente do Grub Legacy. O Grub2 já não tem o menu.lst.

Porque razão mudaram o Grub?

A Principal razão para isso, é a necessidade de adicionar novas funcionalidades.
Só que na opinião dos devenlopers, o Grub chegou a uma fase insustentável. Adicionar novas funcionalidades no Grub, é uma tarefa difícil de realizar por causa do código confuso, e por outras impossibilidades técnicas. Ou seja, para adicionar novos recursos no Grub, seria mais fácil escrever o código do zero.

Então quais as vantagens do Grub2?

Uma das principais vantagens do grub2 é que o conteúdo do menu, é automaticamente actualizado quando o kernel recebe updates.
Por exemplo:
No Ubuntu quando havia actualizações no kernel, após a "instalação" do novo kernel, aparece uma janela com algumas opções:
Usar o novo menu.lst?
Manter o menu menu.lst?
Ver diferenças entre os dois?
etc...
Se escolhermos a primeira opção ele adiciona um novo item no menu com o novo kernel, mas se você tiver outra distribuição Linux instalada , ele não consegue "ver", e não adiciona no novo menu.lst.
Se escolhermos a segunda opção ele mantém o menu.lst mas quando reiniciarmos a maquina ele vai continuar a dar boot no kernel antigo. A solução é editar manualmente o menu.lst.

Com o Grub2 esse problema fica resolvido. Porque o Grub irá adicionar ao menu a última versão do kernel que está disponível no seu sistema.
Mesmo que você escolha "manter a versão actualmente instalada" o update-grub vai listar o novo Kernel.


O /boot/grub/menu.lst é subistituido pelo /boot/grub/grub.cfg mas este não pode ser editado.

Então como editar o Grub2?


As alterações serão feitas no /etc/default/grub. Basicamente o que ele contém é um pouco parecido com o que se encontrava disponível na parte superior do arquivo /boot/grub/menu.lst. Sempre que o root editar o /etc/default/grub, é necessário executar o comando "update-grub" para que a nova configuração seja escrita no grub.cfg.

Estas são algumas opções que estão dentro do /etc/default/grub

GRUB_DEFAULT=0


Define qual a entrada "default" (por omisão). Tal como acontecia no "antigo" Grub, 0 (zero) é o primeiro item do menu, 1 será o segundo, etc..


GRUB_DEFAULT=saved


Esta opção serve para "guardar" a nossa última escolha no menu do Grub. Assim no proximo boot a ultima opção seleccionada passa a ser a "default" e assim sucessivamente.


GRUB_TIMEOUT=5


Já existia no Grub Legacy. A sua função se mantem. São os segundos em que o grub "espera" até carregar automaticamente entrada "default"
Se usar o valor -1 o Grub não da boot até que seja escolhida uma opção.

Para que serve a pasta /etc/grub.d/?

Os arquivos desta pasta serão lidos durante execução do comando "update-grub". Os scripts que estão nesta pasta são os responsáveis por escrever no arquivo /boot/grub/grub.cfg

Os ficheiros são executados por ordem crescente. Primeiro 00_ depois 05_ 10_ 40_ etc...
A ordem em que os scrips são executados vai definir a localização de cada item no menu.

Estes são os script que estão em /etc/grub.d/:

00_header

Este script é responsável por ler o que está escrito no /etc/default/grub.


05_debian_theme

A função deste scrip é configurar opções relacionadas com o aspecto do Grub (Imagem de fundo, cor do texto e temas)

10_hurd

Localiza kernels hurd.

10_linux

Localiza kernels Linux com base no comando "lsb_release -i -s" que retoma o nome da distribuição.

20_memtest86+

Se o arquivo /boot/memtest86+.bin existir, é adicionado como item do menu.

30_os-prober

Procura por outros OS's para adicionar no menu.


40_custom

É aqui que você deve adicionar novos itens no menu do Grub2. Não se esqueça de usar o comando update-grub após a alterações.

Vamos a um exemplo:

No Grub (antigo) eu adicionei uma distribuição com o nome de "Caixa Mágica"


title linux Caixa Magica 12
kernel (hd1,4)/boot/vmlinuz BOOT_IMAGE=linux root=/dev/hdb5 resume=/dev/hda2 splash=silent vga=788
initrd (hd1,4)/boot/initrd.img

Veja como fica no Grub2. Abrimos o /etc/Grub.d/40_custom e adicionamos no final do arquivo:


menuentry "Caixa Mágica 12" {
set root=(hd1,5)
linux /boot/vmlinuz BOOT_IMAGE=linux root=/dev/hdb5 resume=/dev/hda2 splash=silent vga=788
initrd /boot/initrd.img
}

Repare que o Grub2 reconhece as partições de forma diferente. O hd1,4 passou a ser hd1,5.
Se for um hd0,2 passa a ser hd0,3 etc...

Com o grub2 é possível dar boot de uma imagem iso que esteja guardada no disco. Você pode usar o loopback no Grub2 para "montar" a imagem iso :)
Veja um exemplo para dar boot numa imagem ISO:


menuentry "Ubuntu Live - ubuntu.iso" {
set root=(hd1,7)
loopback loop /ubuntu.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu.iso --
initrd (loop)/casper/initrd.lz
}


Neste exemplo a imagem ISO do Ubuntu está na raiz ( / ) da partição hd1,7
E pronto! Feche o arquivo e para actualizar o Grub2 execute o comando update-grub.
No próximo boot as novas opções estarão disponíveis no Menu do Grub2.

Isto é apenas uma explicação básica, do Grub2.
Se quiser estudar mais a fundo o Grub2 recomendo a leitura das seguintes páginas:
https://help.ubuntu.com/community/Grub2
https://wiki.ubuntu.com/Grub2
Veja aqui uma lista de comandos do Grub Legacy, e do Grub2, e as suas diferenças:
http://grub.enbug.org/CommandList
Se você encontrou algum erro no texto, é só comentar para melhorar o texto :)