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.

Posts relacionados:

  1. Erro com o system-tools-backends no Ubuntu 8.10
  2. Ubunchu – O mangá do Ubuntu em Português
  3. Fazendo um benchmark do HD no GNU/Linux (ou ext3 VS ext4)
  4. Feliz aniversário, tio Donald
  5. Miro – Internet TV livre e gratuita

12 comments ↓

#1 sam on 02.22.11 at 1:11 am

wow! posso comprovar que o netbook tem salvo a minha vida ultimamente! ele está rápido, livre e lindo!

#2 Thiago on 04.16.11 at 5:47 pm

Estou tentando instalar em um netbook sililar da positivo, também com 2 GB de SSD e até agora não consegui nem instalar. Dá erro.

#3 Vítor Baptista on 04.16.11 at 5:49 pm

Qual? Quando instalei o Ubuntu nesse PC ele reclamou pra caramba na instalação, dizendo que poderia não ter espaço o suficiente e tal, mas deu tudo certo (fazendo com essas partições que eu falei)

#4 Thiago on 04.16.11 at 8:37 pm

Olá Vitor. Valeu por responder.

É um positivo mobo, do primeiro que saiu, 512 de memoria, 2gb ssd, processador via 1ghz.

Consegui instalar o lubuntu 10.04sem fazer swap. Sobraram 458 megas. Estou tentando comprimir as pastas, aparece “permissão negada” quando tento incluir as linhas no etc/modules.

#5 Vítor Márcio Paiva de Sousa Baptista on 04.17.11 at 4:16 am

Opa, foi a 10.04 mesmo que eu instalei. Tive alguns problemas desse tipo, comprimir os diretórios não é algo muito fácil, mas se você conseguiu instalar o sistema sem precisar disso, e se tá rodando, sugeriria só você criar a /home em um cartão SD ou pendrive… dependendo dos testes que você fizer de velocidade, se está o suficiente…

#6 Alexandre on 05.25.11 at 10:02 pm

quando vc fala de comprimir a \usr … em que momento devo fazer isso ? antes das instalação ? ou durante a instalação? estou com um mobo positivo com a mesma ideia imbecil de ter a ssd soldada na placa…kkk….quero muito instalar o 11.04 nele…consigo ? abs

#7 Dan on 05.26.11 at 3:47 am

rapaz socorre aq. instalei tudo no ssd menos a /usr q coloquei em um cartão. fiz tudo q vc mandou quando deu no passo de reiniciar , o net so liga em terminal acusando erro de montar o sistema de arquivos. aqlas ultimas linha do fstab eram 2 linhas separadas ou eram um coisa so ?
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

aq deu o problema.

#8 Dan on 05.26.11 at 3:43 pm

olá, problema aq é esse : tudo deu certo, qd xega na parte de editar o fstab, não sei se aqlo são 2 linhas diferentes ou uma frase só. coloquei como uma so. e não deu certo. o pc não liga o x. abre so um terminal. to usando o easy peasy q é o mesmo ubuntu 10.04. a minha /usr ta numm cartão de memoria. como é aq ? quem me ajuda. o erro foi qd editei o fstab, depois q revertir a edição voltou a funcionar normal, isso com o cartão dentro do pc . a /usr ta no cartão.

#9 Vítor Baptista on 05.26.11 at 7:09 pm

Danilo,

É, ficou meio ruim de ler as linhas do fstab mesmo. Mas, se você selecionar, copiar e colar, ela fica certinha. São duas linhas:
/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

Qual erro que dá? Ele não consegue montar? Tenta, quando entrar no terminal, digitar:
sudo mount -a
e vê se funciona.

Abraços,
Vítor.

#10 Vítor Baptista on 05.26.11 at 7:12 pm

Alexandre,

Depois de estar tudo instalado que você segue esse tutorial. Assim, se ele suportar a interface Unity do 11.04, que precisa de aceleração gráfica, rola sim. Esse método não faz milagres, mas ajuda bastante se você também tiver espaço limitado :D

Avisa se conseguir.

Abraços,
Vítor.

#11 Dan on 05.27.11 at 11:24 am

hoo rapaz obrigado pela ajuda, mas refiz as linhas e não deu certo. diz que ñ consegue montar, o teu comando sudo mount -a ñ funciona.
vou refazer tudo p ver se da certo. olha to usando o positivo mobo, aqle de via de 2 GB de hd. tu sabe onde ativar o drive de video dela ?

#12 Vítor Baptista on 05.28.11 at 9:04 pm

Oi Danilo,

Cara, eu não sei de que notebook você tá falando. Acho que não tenho muito como te ajudar, ao menos não só com o que você falou.

Abraços,
Vítor.

Leave a Comment