Comprimindo o diretório /usr (Ou como instalar o Ubuntu 10.04 em menos de 1.5 GB)

No natal passado dei para minha namorada, Samara, um netbook: o Asus EeePC 2G Surf. Ele foi o primeiro netbook lançado, com processador de 800 MHz, 512 MB de RAM e 2 GB de SSD. Infelizmente, para diferenciá-lo de modelos mais caros, alguém na Asus teve a ideia imbecil genial de soldar a memória RAM e o SSD. Ou seja, é impossível fazer um upgrade nele.

Passei meus dias antes do natal de 2009 pesquisando como instalar um Sistema Operacional usável com essa limitação de espaço. A instalação do Ubuntu, pelada, gastava mais de 4 GB. Depois de algumas noites mal dormidas, consegui instalar o Xubuntu 9.04 capado, com um browser minimalista (Midori) e algumas coisas mais. Ficou usável, mas longe de bom. Mais de um ano depois, finalmente tomei vergonha na cara de fazer direito.

Comprei um cartão MicroSD de 8 GB e fui instalar o Ubuntu 10.10 nele. Consegui sem muito esforço, simplesmente colocando o / no SSD de 2 GB e o /usr e o /home em duas partições no cartão de memória. Ficou legal, gostei da interface Unity, e tava tudo funcionando. Quando mostrei para ela, depois de brincar por uns 30 segundos, ela disse: “Tá muito lento!”.


Ubuntu Netbook Edition 10.10 (Unity)

Ubuntu Unity - Lindo, mas 'muito lento'


Ok, segunda tentativa. Levei o netbook para casa e fui falar com Deus. Descobri que a Unity é realmente mais pesada, e era melhor usar o Ubuntu 10.04 Netbook Edition. Mas, se o problema dela era velocidade, pesquisei mais um pouco sobre como otimizar. Foi aí que encontrei o ótimo blog do Steve Hanov, onde ele dá 4 dicas para otimizar o Ubuntu quando ele for usado em de um drive USB. Neste post só vou falar da terceira dica (a mais importante para mim): comprimindo os arquivos.

O diretório /usr é normalmente o maior diretório de uma instalação do Linux. Nele ficam todos os binários dos programas instalados, bibliotecas, códigos-fonte, etc.. Para se ter uma ideia, quando instalei o Ubuntu 10.10 no netbook da Samara, o /usr tinha cerca de 1.8 GB, enquanto todas as outras pastas juntas não chegavam a 700 MB. Então, se queremos diminuir o tamanho de uma instalação, nada mais lógico que começar com o maior culpado.

A ideia é comprimir a /usr. Para isso usamos o squashfs. Com ele, criaremos um sistema de arquivos comprimido, virtual, somente leitura. Conseguimos diminuir a pasta para cerca de 700 MB. Mas, para não ficarmos com a /usr somente leitura, usamos também o aufs2. O que ele faz é simular uma partição de leitura e escrita em cima da criada pelo squashfs. Ele faz isso criando uma “camada” em cima da partição /usr. Quando tentarmos ler um arquivo de lá, o aufs2 vai nos mostrar o que foi comprimido com o squashfs. Se tentarmos criar um arquivo, ele o cria em uma outra pasta (que vamos definir), mas nos mostra como se tivesse criado na /usr, nos dando a ilusão que essa partição é de leitura e escrita, quando não é. Não se preocupe com esses detalhes técnicos. Tudo vai ficar mais claro conforme fomos fazendo (espero).

Antes de tudo, instale o pacote squashfs-tools:
sudo apt-get install squashfs-tools

Depois adicione as seguintes linhas ao arquivo /etc/modules:
squashfs
loop

Crie as pastas onde irão ficar as partições virtuais squashfs e aufs2:
sudo mkdir -p /squashed/usr /squashed/usr/ro /squashed/usr/rw

Comprima a pasta /usr em uma imagem dentro de /squashed/usr:
sudo mksquashfs /usr /squashed/usr/usr.sqfs

Adicione as seguintes linhas ao arquivo /etc/fstab:
/squashed/usr/usr.sfs /squashed/usr/ro squashfs loop,ro 0 0
usr /usr aufs udba=reval,br:/squashed/usr/rw:/squashed/usr/ro 0 0

Reinicie o computador. Tudo deve funcionar normalmente, então você pode apagar o diretório /usr, fazendo:
sudo umount /usr
sudo rm -rf /usr

Se houve algum problema, tente voltar para os passos anteriores e descobrir o que deu errado. Qualquer coisa mande um comentário que tentarei ajudar.

Um bônus de comprimir seu /usr é que, além de ocupar bem menos espaço, o computador ficará mais rápido. As máquinas de hoje em dia têm processadores muito mais velozes que os discos, então um tempo maior é gasto lendo um programa no HD do que executando-o. Como os programas estão comprimidos, precisa-se ler menos dados, tornando o computador mais rápido.


Ubuntu 10.04 Netbook Edition

Ubuntu 10.04 Netbook Edition - Lindo e muito rápido


No final, o Ubuntu 10.04 está ocupando menos de 1.5 GB do SSD do netbook, que ganhou mais uns anos de vida útil com a Samara. Eu não fiz benchmarks, mas a diferença é visível. Ele está levando 1m30s para iniciar, mais 10s para abrir o Chrome e 30s para abrir o OpenOffice.org. Nada mal para um netbook de 2007 :-)

Este post foi baseado no Optimizing Ubuntu to run from a USB key or SD card e [TRICKS] Speed up system with aufs + squashfs.

Baixando um pacote e suas dependências com o apt-get

No FLISOL deste ano fui configurar as máquinas do laboratório onde seria meu minicurso junto com os organizadores. Chegando lá descobrimos que só era permitido acesso via HTTP, ou seja, não dava pra usar o apt-get. Procurando uma solução, encontrei uma dica super simples no fórum do Ubuntu. É só rodar:

# apt-get build-dep -d

E os pacotes serão baixados e salvos em /var/cache/apt/archives. Depois só copiar os .deb de lá, levar para a máquina onde quer instalar e copiar de volta para /var/cache/apt/archives. Aí é só instalar normalmente com apt-get :)

Vivendo e aprendendo.

Ubunchu – O mangá do Ubuntu em Português

Atualização: Demorou mas saiu a tradução do segundo exemplar pra Português. Tá em http://aitiachica.blogspot.com/2010/01/ubunchu-02-em-portugues.html

Hoje recebi um e-mail do Silveira Neto pela PSL-CE falando sobre um mangá do Ubuntu. Me interessei e fui ver.

A primeira versão foi lançada e traduzida para o inglês pelo DoctorMo. Gostei! Então, como não vi nenhuma tradução para o português, resolvi fazê-la.

Ainda tem alguns (vários) termos que ficaram esquisitos traduzidos. Se você consegue pensar em uma tradução melhor, deixa um comentário ou edite os arquivos (mas não esqueça de me avisar).

As fontes usadas foram Blambot Custom e Ash Can. Só descompactar em ~/.fonts que o Inkscape já reconhece. Infelizmente, elas não têm acento, então tive que gambiarrar fazê-los na mão. Mesmo assim, está razoável.

EDIT: O Martin Owens notou que faltava a fonte Ubuntu-title. Corrigido.

The Matrix runs on Windows

Erro com o system-tools-backends no Ubuntu 8.10

Há algumas semanas que sempre que instalo/removo/atualizo algum pacote usando o aptitude dá o erro:

Erros foram encontrados durante o processamento de:
system-tools-backends
E: Sub-process /usr/bin/dpkg returned an error code (1)
A instalação de um pacote falhou. Tentando recuperar:
Configurando system-tools-backends (2.6.0-1ubuntu1.1) …
* Starting System Tools Backends system-tools-backends invoke-rc.d: initscript system-tools-backends, action “start” failed.
dpkg: erro processando system-tools-backends (–configure):
sub-processo post-installation script retornou estado de saída de erro 1
Erros foram encontrados durante o processamento de:
system-tools-backends

Como não encontrei nenhum problema além dessa chateação, não tentei resolver. Mas hoje abusei e fui atrás da solução, que é muito simples. Na verdade é só um workaround(leia gambiarra), mas funciona. Simplesmente vá no shell e digite:

sudo invoke-rc.d system-tools-backends stop
sudo dpkg –configure -a

Resolvido.