Como os live-CDs funcionam

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 idéia é 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 do da 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 do CD, o que os tornariam sistemas muito menos atrativos.

Em contrapartida, por causa da compressão o trabalho do processador passa 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.

A primeira etapa do boot é a tela de boas-vindas e uma linha onde você pode fornecer parâmetros para o boot. Logo depois é carregado o kernel, 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 já 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):

2fb231cb
Mensagens de boot no Knoppix, mostrando detalhes sobre a máquina

Nas primeiras distribuições live-CD, era utilizado um pequeno ramdisk (um disco virtual criado utilizando parte da memória RAM) 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 como 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 que se ele estivesse instalado. Naturalmente, todas as alterações são salva na memória RAM, de forma 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 RAM 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.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X