Nesse passo-a-passo você vai aprender a criar um LiveCD a partir do sistema instalado no seu disco rígido. Essa é uma das formas mais eficientes e flexíveis de se criar um LiveCD, pois permite que você personalize o sistema por completo. A distribuição utilizada é o Debian Lenny, mas pode ser executado em outras distribuições baseadas em Debian.
Um LiveCD nada mais é que uma instalação Linux que é executada a partir de um CD, assim como temos a instalação Linux que é feita em um disco rígido e executada a partir dele, mais usual. No entanto, devido às diferenças que existem entre esses dois tipos de instalação, apenas copiar os arquivos de sistema Linux instalado no disco rígido para um CD não é suficiente para produzir um LiveCD.
Primeiramente devemos observar que o CD é uma mídia apenas para leitura. Uma vez gravado, o CD não permite que sejam efetuadas alterações nele. Existem atualmente vários artifícios para resolver esse problema e um dos mais comuns é utilizar um sistema de arquivos como o UnionFS, que reserva um espaço da memória RAM para armazenar as alterações que são feitas pelo usuário enquanto utiliza o LiveCD. Como o sistema não faz uma distinção explícita entre os arquivos armazenados na memória RAM e os arquivos armazenados no CD, esse mecanismo é transparente ao usuário, permitindo que ele faça em um LiveCD quase tudo que ele faria em uma instalação Linux feita no disco rígido, sem sequer notar diferença. Nesse passo-a-passo será utilizado não o UnionFS, mas um sistema de arquivos bastante parecido e inclusive mais robusto, que é o AuFS.
Outra diferença notória entre um LiveCD e uma instalação Linux feita em um disco rígido é o espaço em disco disponível. Uma instalação básica do Debian Lenny com o KDE 3.5 como ambiente gráfico ocupa algo em torno de 1,5 GB. No entanto, um CD não dispõe de todo esse espaço. Para contornar esse problema, o sistema de arquivos é gravado no CD na forma de uma imagem compactada chamada SquashFS. Ela permite que um sistema de até aproximadamente 2 GB caiba em um CD comum de 700 MB. Como se vê, esse espaço é mais que suficiente para fazer uma instalação Linux básica.
Por fim, como o sistema será armazenado no CD na forma de uma imagem compactada, é necessário que durante o boot (inicialização) o kernel (núcleo do sistema) carregue os módulos responsáveis por acessar o dispositivo leitor de CD e montar a imagem compactada. E ele deve fazer isso antes mesmo de ter acesso ao diretório raiz do sistema ("/"), uma vez que ele está armazenado dentro da imagem compactada, que por sua vez está armazenada dentro do CD. Essa é uma preocupação que não existe em instalações Linux feitas no disco rígido.
Além disso, como as alterações feitas no sistema serão armazenadas na memória RAM, é necessário reservar um pedaço dela para essa finalidade, e esse processo também deve ser feito durante a inicialização do sistema. Como se vê, a inicialização de um LiveCD é mais complexa que a inicialização de uma instalação Linux feita em um disco rígido.
Para solucionar esse problema, foi criado um mecanismo através do qual durante a inicialização do sistema é carregado um sistema de arquivos mínimo antes do sistema de arquivos em si, contendo os módulos e scripts necessários para que o kernel acesse os dispositivos leitores de CD, descubra onde está a imagem compactada que contém o sistema e finalmente monte essa imagem e faça o restante do processo de inicialização através dela, como faria em uma instalação comum no disco rígido. Esse sistema de arquivos mínimo é chamado initramfs.
O initramfs é utilizado não só em LiveCDs, como também em discos de instalação e até mesmo em instalações feitas no disco rígido, uma vez que torna mais flexível e rápido o processo de inicialização do sistema. Ele é utilizado principalmente em casos onde é necessário executar algum procedimento especial para acessar o diretório raiz do sistema, como em um LiveCD ou em um computador onde o sistema operacional está armazenado em outro computador da rede, exigindo que a conexão com esse computador seja feita antes mesmo de carregar o sistema operacional, por exemplo.
Nesse passo-a-passo, nós criaremos um initramfs próprio para inicializar o sistema a partir de um LiveCD. No entanto, não o faremos manualmente, apesar de ser possível. Vamos instalar no nosso sistema o pacote live-initramfs, que contém os scripts que farão toda a preparação especial descrita anteriormente durante a inicialização do LiveCD, e em seguida utilizar o comando update-initramfs, que incluirá esses scripts dentro do initramfs que colocaremos dentro do nosso LiveCD.
Ao final do passo-a-passo, nosso LiveCD terá uma estrutura de arquivos e pastas igual a essa:
Vejamos resumidamente o que é cada um desses arquivos (a maior parte das explicações sobre eles já foi dada acima):
/boot/grub/menu.lst: arquivo que contém as opções que são mostradas no menu que aparece durante o boot do LiveCD.
/boot/grub/stage2_eltorito: arquivo que contém o gerenciador de boot do LiveCD. Durante a inicialização do LiveCD, o gerenciador de boot é o primeiro componente a ser carregado para a memória. Ele mostra um menu que permite ao usuário inicializar o sistema de maneiras diferentes. Nesse passo-a-passo, utilizaremos o GRUB como gerenciador de boot.
/boot/vmlinuz: esse arquivo é o kernel, que será copiado do sistema para o CD. Durante a inicialização do LiveCD, ele é carregado assim que escolhermos uma as opções mostradas no menu de boot. Logo, é o segundo componente a ser carregado para a memória.
/boot/initrd.gz: esse arquivo é o initramfs, que contém os módulos e scripts necessários para inicializar o LiveCD, como já foi explicado anteriormente. Ele é carregado durante a inicialização do LiveCD logo após o kernel.
/boot/memtest86+.bin: esse arquivo é opcional. Trata-se de um programa usado para testar a memória RAM do computador. Ele está presente na maioria dos LiveCDs, por isso o incluiremos também no nosso.
/live/filesystem.squashfs: esta é a imagem compactada SquashFS que contém o sistema operacional em si. Ela já foi explicada anteriormente.
/md5sum.txt: esse arquivo também é opcional. Contém o MD5 de cada arquivo do CD e pode ser usado posteriormente para verificar sua a integridade.
Os mesmos passos descritos aqui podem ser usados caso você queira desenvolver um sistema maior, destinado a ser gravado em um DVD (nesse caso, ele se chamaria LiveDVD, mas continuarei usando o termo LiveCD para designar os dois tipos de mídias, indistintamente), ou uma distribuição compacta, destinada a ser gravada em um mini-CD.
[4] Comentário enviado por rrodrigues345 em 29/01/2010 - 17:38h
Olá Antônio!!!! Parabéns pelo artigo! Está muito bem escrito!
Assim como o daigo, eu também estou com problemas com a versão do SquashFs; pois para que a minha wireless funcionasse precisei atualizar o kernel, para a versão 2.6.30-bpo.2-686, aparecendo a seguinte mensagem: "Impossível encontrar o pacote squashfs-modules-2.6.30-bpo.2-686". Gostaria de saber onde que eu acho este pacote, pois o kernel eu instalei via apt-get -t lenny-backports ;)!!
[5] Comentário enviado por rrodrigues345 em 29/01/2010 - 17:50h
Então eu tava procurando aqui sobre o módulo correto do squash e não achei a versão a versão 2.6.30-bpo.2-686... então eu queria saber de quem entende mais do sistema, se eu poderia dar boot com o meu kernel 2.6.26-2-686 que tem no Menu.lst e assim instalar o squash correspondente a esse módulo. Dessa forma, se eu precisar eu atualizo o kernel depois de instalar este live cd né?!!
Bom, fico esperando a opinião de vocês!!
Até mais ;) !!
...ou será que era melhor baixar os fontes do kernel........
[6] Comentário enviado por vinyanalista em 29/01/2010 - 20:24h
Olá pessoal. Fico muito feliz que vocês tenham gostado do artigo e agradeço não só os elogios como também o interesse dos que já tentaram executar o passo-a-passo.
Quanto aos problemas que vocês estão enfrentando com relação ao pacote squashfs-modules:
daigo, não há problema algum com a versão do SquashFS instalada no seu sistema. Ela é, na verdade, a versão mais atual, como você pode ver na página deste pacote no repositório oficial do Debian Lenny (http://packages.debian.org/lenny/squashfs-modules-2.6.26-2-686). Você pode prosseguir normalmente a execução do passo-a-passo. Se não estiver conseguindo executar algum comando, poste aqui sua dúvida e vamos tentar ajudar você da melhor forma possível.
ciscokid, estive procurando nos repositórios do Debian, nesse mesmo site que passei pro daigo (http://packages.debian.org/), uma versão do pacote squashfs-modules própria para seu kernel, mas acabou que eu não encontrei nem no repositório lenny-backports, do qual você obteve esse kernel, nem nos repositórios testing e unstable. Sugiro que você espere que saia um pacote próprio para seu kernel em um desses repositórios ou que você construa o LiveCD utilizando o kernel 2.6.26. Acredito que funcione.
Um palpite: será que é possível reconstruir o pacote squashfs-modules-2.6.26-2-686 usando o kernel 2.6.30?
[7] Comentário enviado por rrodrigues345 em 29/01/2010 - 21:51h
Olá viniciusecia, realmente este artigo é muito interessante e estou tentando executá-lo no meu Debian Lenny =D
Antes de mais nada, muito obrigado por ter descoberto que ainda não tem módulo disponível para o meu kernel! Eu achei que era eu que não tava encontrando, rsrs!!
O que vou fazer para contornar o problema? Bom, acho que dando boot com o kernel 2.6.26-2-686 e instalando o módulo do squashfs, vai dar certo! O único problema é que não terei o suporte à determinadas placas de rede sem fio, o que importa mesmo é fazer o ARtigo funcionar e aprender a mexer no sistema não é mesmo? hehe!!
[8] Comentário enviado por daigo em 30/01/2010 - 16:56h
Vou reinstalar o Debian Lenny no meu HD, trocar as cores e wallpaper apenas pra ver se resolve. Eu também tenho problemas com o Lenny devido a placa wireless do meu note. Tem q ser o .30 pra cima. A vantage é q baixei os dvds 1, 2, 3 e 4 (o 5 e o update ainda não, to sem mídia), então posso instalar os módulos por eles.
[9] Comentário enviado por zendrael em 31/01/2010 - 09:58h
Olá!
Muito bacana o artigo! Mas, e como fazer p/ instalar esse liveCD? Tem como adicionar um instalador nele (mesmo que seja o próprio do Debian)? Ou tem alguma referência de como fazê-lo?
[10] Comentário enviado por daigo em 31/01/2010 - 13:38h
Eu reinstalei o Lenny, o problema quase foi resolvido. O problema agora é: após gerar a img ISO, c eu a gravar em CD (usei regravael), ela começa, e quando deveria ler o Kernel, trava. C for pelo Virtual Box, fecha a janela em execução e aparece: Abortado.
[11] Comentário enviado por vinyanalista em 31/01/2010 - 23:47h
Olá zendrael e daigo. Quanto ao instalador, já estive procurando algo a respeito. Aliás, eu estava pesquisando de tudo um pouco antes de escrever esse artigo: como construir um LiveCD, como personalizá-lo, como criar um instalador para ele, etc e tal. Só que vendo que se tratava de um assunto muito vasto, decidi focar na criação do LiveCD apenas e pesquisar as outras coisas depois, aos poucos (até porque instalar um LiveCD no disco rígido não é algo tão simples, como pude perceber analisando o script de instalação do Kurumin).
Eu tenho aqui um LiveCD do Debian com KDE 4 que baixei da Internet, gravei em um CD e gostaria muito de instalá-lo no meu HD, só que ele não vem com instalador. Fazendo testes em uma máquina virtual, eu quase consegui instalá-lo no disco usando os comandos listados nessa página:
Eles são bastante simplificados, mas acredito que a idéia básica de um instalador seja essa: fazer particionamento e formatação, montar a partição na qual será instalada o sistema, copiar os arquivos do LiveCD, configurar o que for necessário (como gerenciador de boot, usuários, etc.), reiniciar o computador e começar a usar o novo sistema.
No futuro pretendo fazer um artigo sobre isso explicando o processo mais detalhadamente. Por ora, se alguém conseguir instalar o LiveCD no disco rígido usando os passos dessa página que eu passei (ou de outra), por favor compartilhe sua experiência conosco.
daigo, quanto ao LiveCD não iniciar, as mídias regraváveis não são muito confiáveis, como já dizia nosso amigo Carlos Morimoto. Experimente testar o LiveCD pelo VirtualBox usando a imagem ISO gerada. Depois você pode gravá-la em um CD (de preferência não regravável) e usar o LiveCD no seu computador. Aguardo sua resposta dizendo se o problema persiste.
[12] Comentário enviado por daigo em 01/02/2010 - 10:31h
O problema persiste: na máquina virtual, ele chega no mesmo ponto e fecha a janela, deixando a mensagem de Abortado.
Quanto ao CD regravavel: eu sempre usei-o para testar distros e nunca tive problema, bem diferente do q disse o Morimoto.
[13] Comentário enviado por vinyanalista em 01/02/2010 - 13:21h
Que bom então. Acho que é porque eu tenho o mesmo azar dele com mídias regraváveis. De qualquer sorte, eu já estou tão acostumado a gerar imagens ISO que até prefiro testar assim.
Mas enfim, deixando pra lá isso de mídias regraváveis, qual é o erro que tá aparecendo aí? Tem como você mandar um screenshot, que nem você fez com o SquashFS, ou escrever a mensagem de erro? (se der, não só a mensagem do VirtualBox, mas também a mensagem do LiveCD)
Ou o LiveCD não chega realmente a exibir nada? Porque ele trava na hora de carregar o kernel, não é? Ele só trava na hora de carregar o kernel mesmo ou nem o menu do GRUB é exibido?
[14] Comentário enviado por daigo em 01/02/2010 - 13:47h
Vai ser dificil conseguir uma tela, pois ela só aparece com a ISO já gravada em mídia. Quando tento pelo Virtual Box, ele fecha antes d mostra-la.
Mas básicamente, aparece a tela do Grub e independente da opção q eu escolher, ele vai até a parte d procura o kernel e para.
[15] Comentário enviado por rrodrigues345 em 02/02/2010 - 14:30h
Olá amigos do V.o.L. !! Assim como vocês eu também estava pensando numa forma de instalar o live cd. Pois o meu objetivo é criar um Debian Lenny com as configurações básicas (impressoras, otimizações do KDE 3.5, multimídia) e depois passar este CD para meus amigos instalarem em seus computadores; pois o Debian em si, é um pouco complicado para um usuário que está iniciando e assim eu poderia fazer uma configuração "bem leve" de forma a ser "usável" em qualquer computador com 900MHz ou mais e 256RAM ou + !
Relendo alguns capítulos dos Livros do Carlos Morimoto (Kurumin, guia prático e Ferramentas Técnicas), acessando o site do Knoppix, e bootando a versão 6.01 em um pendrive observei que ela é toda baseada no Lenny, apenas com Kernel mais novo 2.6.31.., Openoffice 3.x... LXDE como gerenciador de janelas (mas é só desinstalar ele e instalar um KDE 3.5, por exemplo) e os demais programs são só os que vêm junto quando você instala o LXDE como gerenciador de janelas.
Sendo assim, eu estava pensando em usar uma instalação do KNOPPIX ao invés de uma instalação do DEBIAN LENNY. E dessa forma, já aproveitar que ele possui um instalador, e seguir os procedimentos que você descreve neste excelente artigo ;)!!
Eu não sei se pode, mas eu estava pensando eu comentar o sources.list do KNOPPIX e adicionar somente os repositórios do LENNY e depois dar um APT-GET UPDATE/ dist-upgrade e acho que assim ele atualizaria comsó o se fosse um Lenny? O que que vocês acham? Porque o legal desta nova versão do KNOPPIX é que ele é "pelado", só tem o básico mesmo.... aí é só desinstalar o que não quer e madar ver!
O que que vocês acham? Talvez até o Remastersys funcione nele, ajudando quem não domina muito o processo ( como eu! ) =D
Quem quiser, me adiciona no msn pra gente trocar uma idéia sobre o assunto
[18] Comentário enviado por yermandu em 21/03/2010 - 16:17h
Squeeze task was done.
Mas faltou um detalhe Qual era a senha do root mesmo?
:P
Antes de sair do sistema , tem que resetar a senha do root ...
Marcus estou com a mesma duvida e como instalar? Fica para depois ...
Galera eu to vendo que vocês estão com problemas no Squashfs.
Bom meu pc só funciona com kernel>2.6.30 ...
Pois bem, acontece que a maioria das distros inclusive a debian acrescentam por padrão no kernel a opção SquashFS como modulo.
Fiz tudo como o tutorial mandou e instalei o squashfs-tools mas NÃO INSTALEI o squashfs-modules ...
E continuei o tutorial na boa.
Foi tranquilo, o kernel reconheceu o squashfs na bowa.
Estou usando kernel 2.6.32.3.
[19] Comentário enviado por eliphass em 02/05/2010 - 21:10h
Olá, amigos!
Vocês não sabem como esse artigo me é uma mão na roda. Estou desenvolvendo um TCC para meu curso de graduação juntamente com alguns amigos meus, e uma das nossas idéias era rodar um LiveCD de um Lenny que estamos montando, mas não tínhamos idéia de como fazê-lo.
[20] Comentário enviado por zebento.cpd em 07/08/2010 - 12:01h
Realmente muito legal e util este post, parabéns!!!!
Uma dúvida, gostaria de recompilar o kernel para o live cd a ser criado. Como seria este procedimento?
[21] Comentário enviado por sonictk em 30/08/2010 - 15:55h
I: -input-charset not specified, using utf-8 (detected in locale settings)
File /home/vitor/debian-live/cd/live/filesystem.squashfs is larger than 4GiB-1.
-allow-limited-size was not specified. There is no way do represent this file size. Aborting.
[23] Comentário enviado por edersonhonorato em 17/10/2010 - 11:02h
Parabéns pelo belo post!!!
Para a questão de um instalador, um bom ponto de partida é utilizar o instalador do próprio kurumin(que é baseado no instalador do Knoppix) e fazer as alterações necessárias.
Eu particularmente acredito que dá trabalho, mais esclarece muito a forma como copiar o conteúdo de um live-CD para uma partição do HD e prepará-la para rodar o sistema.
O instalador do kurumin foi foco de um estudo meu, pois, à tempos criei uma mini-distribuição para uso particular em micros antigos, baseada no slackware. Na época eu entendia o conceito mas não fazia idéia de como instalar o conteúdo do CD no HD. O script do Claus Knopper me esclaceu muito como devia proceder, com a ajuda é claro dos comentários do Morimoto e suas modificações.
É um tutorial ensinando a criar um LiveCD a partir de uma instalação do Ubuntu. Este artigo, na verdade, é uma adaptação desse tutorial para o Debian Lenny, com alguns adicionais obtidos de outras fontes e algumas explicações (senão não seria original, não é mesmo?).
Lembrei desse link porque recebi um e-mail perguntando como criar um LiveCD a partir do Ubuntu. Para quem quiser mais informações a respeito, há também um artigo aqui no Viva o Linux:
[25] Comentário enviado por jmoura em 11/11/2010 - 14:56h
Olá, parabens pelo tutorial.
Segui e consegui criar o .iso. Mas apresentou um problema, o livecd que criei nao identificou a placa de rede.
Voce pode me ajudar nesse tema.
Obrigado.
[26] Comentário enviado por robson10 em 18/09/2011 - 21:42h
Aqui também o livecd que criei também não identificou a placa de rede, engraçado que
a internet funciona.
Voce pode me ajudar nesse desafio. Grato e parabéns!
[27] Comentário enviado por removido em 07/11/2011 - 14:53h
Olá Pessoal,
Alguém sabe me informar como faço para reduzir o tamanho da iso a ser gerada? Quais seriam os arquivos ou diretórios que eu poderia deixar de adicionar para reduzir o tamanho? No caso, eu estou querendo criar uma iso com o vmware server que já esta instalado e configurado no meu ubuntu, porém este sistema tem muitos outros programas instalados que não me interessam..e tbm descobri que a pasta VAR está ocupado 14 Gb, e eu nao sei o que posso fazer com ela..
Alguém poderia me dar umas dicas??
[29] Comentário enviado por removido em 09/11/2011 - 09:30h
Olá edersonhonorato ,
Eu já tentei este comando, porém quase não reduziu o tamando dos arquivos, principalmente o tamanho da pasta Var que tem 14 Gb. Como faço para saber
se eu precisarei ou não incluir esta pasta na criação do meu LiveCd??
[30] Comentário enviado por edersonhonorato em 09/11/2011 - 13:02h
yindi,
A pasta /var é onde ficam arquivos de log de múltiplos propósitos, arquivos temporários, de transição, e arquivos de bobina (spool). Por padrão, os programas que geram um arquivo de registro para consulta.
Ela deve ser incluida na ISO senão você pode ter problemas logo na inicialização do sistema.
Acesse ela e procure nas subpastas qual está ocupando todo esse espaço...