Serie, Entendendo o linux-(Knoppix e os live-CD).
Por:Carlos E. Morimoto
Knoppix e os live-CD
O
Debian em si é bastante espartano em termos de ferramentas de
configuração e por isso é mais popular em servidores do que em desktops.
Entretanto, por oferecer um repositório de pacotes incrivelmente
completo, o Debian é usado como base para o desenvolvimento de inúmeras
outras distribuições, que combinam os pacotes dos repositórios do Debian
com personalizações, scripts e componentes adicionais, de forma a
atingirem nichos específicos.
Um exemplo de destaque é o Knoppix,
cuja versão 3.0 (a primeira a ganhar notoriedade) foi lançada em julho
de 2002. O Knoppix acabou se tornando um marco dentro da história do
Linux por dois motivos. O primeiro é que ele foi a primeira distribuição
Linux live-CD realmente utilizável, oferecendo um bom desempenho e um
excelente script de autoconfiguração, que detectava o hardware da
máquina durante o boot, gerando os arquivos de configuração de forma
automática e entregando um sistema funcional no final do processo.
Distribuições live-CD anteriores, como o DemoLinux, eram muito mais
lentas, limitadas e impráticas de usar.
O
segundo motivo, e talvez o mais importante, era a possibilidade de
remasterizar o CD, gerando uma distribuição personalizada. Graças a
isso, o Knoppix deu origem a um enorme número de novas distribuições,
como o Kanotix (que deu origem ao atual Sidux), o Morphix (que, devido à
sua arquitetura modular, ajudou a criar toda uma nova família de
distribuições) e o Kurumin, que desenvolvi de 2003 a 2008.
Um
live-CD é, em poucas palavras, uma versão pré-instalada do sistema, que
utiliza um conjunto de truques para rodar diretamente a partir do
CD-ROM. Tradicionalmente, qualquer sistema operacional precisa ser
instalado no HD antes de ser usado. Você dá boot usando o CD ou DVD de
instalação e é aberto um instalador (que, por sua vez, roda sobre algum
sistema minimalista), que se encarrega de instalar e configurar o
sistema principal. Depois de algum tempo respondendo perguntas e vendo a
barra de progresso da cópia dos arquivos, você reinicia o micro e pode
finalmente começar a usar o sistema. Isso é válido tanto para o Windows
quanto para a maior parte das distribuições Linux.
Para
quem já se acostumou com a ideia, pode parecer natural rodar o sistema a
partir do CD e até mesmo instalar novos programas sem precisar
modificar as informações salvas no HD, mas, em 2002, quando o Knoppix
começou a ganhar popularidade, a ideia de rodar uma distribuição Linux
completa a partir do CD-ROM era considerada exótica. Muitas pessoas só
acreditavam depois de desconectar o cabo flat do HD e ver que o sistema
realmente dava boot apenas com o CD-ROM. :o
Apesar
de receberam críticas por parte de alguns puristas, os live-CDs
cresceram rapidamente em popularidade. O Ubuntu passou a ser um live-CD
instalável a partir da versão 6.06, o Mandriva aderiu à ideia com o
Mandriva Discovery (que foi sucedido pelo atual Mandriva One) e até
mesmo o Fedora ganhou uma versão live-CD, o Fedora Live, sem contar o
gigantesco volume de distribuições baseadas neles. Apesar do início
tímido, os live-CDs dominaram o mundo.
A
base de tudo é um módulo de kernel chamado SquashFS (nas primeiras
versões do Knoppix era usado o cloop, baseado no mesmo princípio), um
hack que permite que o sistema rode a partir de um sistema de arquivos
compactado, gravado no CD-ROM. Os dados são descompactados "on-the-fly",
conforme são necessários.
O
uso da compressão oferece duas vantagens: permitir que o sistema fique
muito menor (colocando até 2 GB de dados em um CD-ROM de 700 MB) e
melhorar o desempenho do sistema, aumentando a taxa de transferência
efetiva do CD-ROM.
A
ideia é que um CD-ROM de 52x é capaz de ler a, em média, 5.8 MB/s, pois
como o CD gira sempre na mesma velocidade, as informações gravadas nas
trilhas da parte externa do CD (mais longas) são lidas a mais ou menos o
dobro da velocidade das do centro (que são mais curtas). Um CD-ROM de
52x lê a 7.8 MB/s nas trilhas externas mas a apenas 3.9 MB/s nas
internas. Como o CD-ROM é gravado a partir do centro, na maior parte do
tempo ele lê os dados a 5 ou 6 MB/s.
No
entanto, ao ler 5 MB/s de dados compactados a uma razão de 3x, ele
estará lendo, na prática, a quase 15 MB/s, um valor muito mais próximo à
taxa de transferência oferecida por um HD. Naturalmente, ainda existem
outros problemas, como o tempo de busca (que é muito mais alto em um
CD-ROM), mas o problema principal é amenizado. Se não fosse o sistema de
compressão, os live-CDs seriam três vezes maiores e três vezes mais
lentos ao rodar a partir do CD, deficiências que os tornariam sistemas
muito menos atrativos.
Em
contrapartida, a compressão faz com que o trabalho do processador passe
a ser maior, pois, além de processar os dados referentes aos programas,
ele tem que, ao mesmo tempo, descompactar os dados lidos pelo CD-ROM.
Por isso, mais do que em distribuições instaladas, o desempenho aumenta
de acordo com o poder de processamento da máquina.
Voltando
ao Knoppix, a primeira etapa do boot é uma tela de boas-vindas,
contendo uma linha de opções onde você pode fornecer parâmetros para o
boot. Logo depois é carregado okernel, que por sua vez inicializa o
hardware, cria um ramdisk usando uma parte (pequena) da memória RAM,
onde são armazenados arquivos de configuração e outros dados que
precisam ser alterados durante o uso.
Depois
disso, entra em ação o hwsetup, o programa de detecção que, junto com
um conjunto de outros scripts, se encarrega de detectar a placa de
vídeo, som, rede, modem e outros periféricos suportados, exibindo
mensagens que ajudam a identificar a configuração da máquina e saber de
antemão detalhes como o processador, quantidade de memória RAM e placa
de vídeo instalada (imagine o caso de um técnico que instala o sistema
em vários micros diferentes, por exemplo):
Mensagens de boot no Knoppix, mostrando detalhes sobre a máquina
Como comentei, as primeiras distribuições
live-CD utilizavam um ramdisk para armazenar arquivos de configuração, o
diretório home e outros arquivos do sistema que precisam ser alterados
durante sua execução. Entretanto, a maior parte dos arquivos do sistema
eram acessados diretamente a partir do CD-ROM, de forma que você não
podia instalar novos programas, nem fazer alterações em componentes do
sistema enquanto ele estivesse rodando a partir do CD, devido à
limitação óbvia de que o CD-ROM é uma mídia somente-leitura.
O solução para esta última barreira veio
com o UnionFS, que passou a ser usado em larga escala a partir de 2005. O
UnionFS funciona de uma forma bastante engenhosa; é uma daquelas idéias
aparentemente simples, que resolvem problemas complexos.
O UnionFS permite juntar dois (ou mais)
diretórios em um, estabelecendo uma hierarquia entre eles. O "Union" vem
justamente de "união". Temos então o arquivo compactado do CD em um
nível hierárquico mais baixo, montado em modo somente-leitura e um
ramdisk, que originalmente está quase vazio, mas que vai armazenando
todas as alterações. Os dois são montados em uma única
pasta, que contém
o conteúdo do arquivo compactado e do ramdisk.
Na hora de ler um arquivo, o sistema
verifica se existe uma versão mais recente armazenada no ramdisk, caso
contrário lê no arquivo principal. Na hora de gravar, as alterações são
sempre armazenadas no ramdisk, de forma automática e transparente.
No final, você acaba podendo instalar
programas via apt-get e fazer qualquer tipo de alteração no sistema,
praticamente da mesma forma como faria se ele estivesse instalado.
Naturalmente, todas as alterações são salvas na memória RAM, de maneira
que, para realmente instalar um volume significativo de novos pacotes ou
manipular grandes arquivos, você precisa ter um PC com pelo menos 1 GB
de memória RAM. Em micros com pouca RAM você verá uma mensagem de "disco
cheio" (quando na verdade o que acabou foi o espaço no ramdisk) ou até
mesmo efeitos diversos por falta de memória disponível.
O UnionFS (juntamente com o AUFS, que é
seu sucessor) é usado por padrão em quase todas as distribuições live-CD
atuais, incluindo o Ubuntu Desktop. Isso permite que você teste novos
programas (ou até mesmo configure servidores como o Samba e o Squid) com
o sistema rodando a partir do CD-ROM, sem qualquer alteração nos
arquivos do HD. Isso permite uma liberdade muito grande para fuçar e
brincar com o sistema, já que, em caso de problemas, basta reiniciar o
micro e começar de novo.
<(")...continua...
Comentários
Postar um comentário