ct

    Instalando o Kurumin (e outras distros) num pendrive/cartão

    Tutoriais

    Os pendrives estão cada vez mais baratos, já é possível comprar um de 512 MB por R$ 160. Você pode usar o pendrive como um dispositivo de boot, inicializando o Kurumin (ou outra distribuição) e usando o espaço livre para salvar arquivos. O sistema pode ser modificado para automaticamente salvar arquivos no diretório home e novos programas instalados, mesmo que o pendrive esteja formatado em FAT16. Este tutorial ensina a instalar versões antigas do Kurumin num pendrive, usando o isolinux como gerenciador de boot. Uma versão atualizada deste tutorial, que funciona com o Kurumin 7 e outras distribuições atuais está disponível no: http://www.guiadohardware.net/tutoriais/instalar-kurumin-pendrive/Carlos E. Morimoto
    11/08/2005


    Os cartões de memória flash sempre foram dispositivos caros, restritos a palmtops e dispositivos embarcados e, mesmo neles, quase sempre em pequenas quantidades, sempre combinados com memória RAM ou ROM (mais baratas). Na maioria dos palmtops, você encontra uma pequena quantidade de memória flash, que armazena o sistema operacional e uma quantidade maior de memória RAM, que além de ser usada pelo sistema, armazena todos os aplicativos e arquivos. Apenas recentemente um número expressivo de palmtops passou a usar memória flash como meio primário de armazenamento.

    A memória flash é um tipo de memória de estado sólido constituída por células que "aprisionam" um impulso elétrico, preservando-o por anos, sem necessidade de alimentação elétrica. Só é necessário energia na hora de ler ou escrever dados.

    Por não ter partes móveis, a resistência mecânica é muito boa. Se você começasse a espancar seu computador impiedosamente, o cartão de memória seria provavelmente um dos últimos componentes a ser danificado ;).

    As limitações da memória flash são o custo por megabyte e uma vida útil relativamente curta, estimada em 100.000 ciclos de leitura ou gravação, o que restringe seu uso em algumas áreas, você nunca deve usar um cartão de memória flash para armazenar uma partição swap, por exemplo.

    O custo por megabyte sempre será muito mais alto que o de um HD, a diferença é que o custo unitário do HD é mais ou menos fixo, enquanto num pendrive ou cartão o custo é proporcional à capacidade.

    Nenhum HD (novo) custa menos que uns 80 dólares, o que evolui é a capacidade. Por outro lado, em agosto de 2005, um pendrive de 128 MB já podia ser comprado por R$ 70, enquanto um de 512 MB custava em média R$ 160, ou seja, menos que um HD.

    Desde o início do milênio, o custo memória flash tem caído pela metade a cada ano, por isso a tendência é que os HDs comecem a ser substituídos por cartões de memória flash em áreas onde não é necessário muito espaço de armazenamento.

    Praticamente, todas as placas mãe recentes são capazes de dar boot através de um pendrive ou leitor de cartões plugado na porta USB, como se fosse um HD removível. No Linux, estes dispositivos são detectados como se fossem HDs SCSI: um pendrive é detectado como "/dev/sda" e, num leitor com várias portas, cada tipo de cartão é visto como um dispositivo diferente. No meu, por exemplo, o cartão SD é visto como "/dev/sdc", o cartão compact-flash é visto como "/dev/sda" e o memory-stick como "/dev/sdd".

    Existem ainda adaptadores, que permitem ligar um cartão compact-flash diretamente a uma das portas IDE da placa mãe, fazendo com que ele seja detectado como um HD. Neste caso, ele será detectado pelo sistema como "/dev/hda" ou "/dev/hdc", por exemplo.

     

    A novidade é que você pode instalar Linux no pendrive ou cartão e dar boot diretamente através dele. Você pode usar esta idéia para ter um sistema portátil, que pode transportar para qualquer lugar, ou para montar micros sem HD, que usam memória flash como mídia de armazenamento.

    Existem duas opções. Você pode instalar diretamente o sistema no pendrive, como se fosse um HD, ou instalar a imagem de um live-CD, como o Kurumin ou o Damn Small e usar o espaço excedente para armazenar arquivos.

    Fazer uma instalação "real" é a opção mais simples. Você precisa apenas escolher uma distribuição razoavelmente atual, cujo instalador seja capaz de detectar o pendrive, e fazer uma instalação normal. Por outro lado, esta é a opção mais dispendiosa, pois mesmo fazendo uma instalação enxuta, você precisaria de um pendrive ou cartão de 512 MB ou mais.

    Um segundo problema é que a instalação serviria apenas para o PC usado durante a instalação. Sempre que fosse usar o pendrive em outro micro, você teria que reconfigurar o sistema para trabalhar na nova configuração, um trabalho pouco agradável :-).

    A segunda opção, instalar a imagem de um live-CD, é mais econômica do ponto de vista do espaço e permite usar o pendrive em vários micros diferentes, pois o sistema detecta o hardware durante o boot, como ao rodar a partir do CD. Se você tem um pendrive de 512 MB, pode experimentar instalar o Kurumin, que na versão 5.0 tem por volta de 420 MB. Você pode também remasterizar o CD, de forma a deixar o sistema mais enxuto, ou usar uma distribuição mais compacta, como o Slax ou o Damn Small.

    O espaço livre pode ser usado para armazenar arquivos e configurações, ou mesmo ser usado para permitir a instalação de programas adicionais, usando o UnionFS. Nesta receita manteremos o cartão formatado em Fat16, por isso você continua podendo usá-lo na câmera digital ou acessar os arquivos através do Windows.

    Comece formatando o pendrive ou cartão em Fat16. Eles já vem de fábrica formatados, mas algumas câmeras formatam os cartões usando estruturas fora do padrão que não se dão muito bem com o syslinux e alguns modelos BIOS. Ao criar a partição usando o fdisk, lembre-se de marcar opção "bootable".

    Nos exemplos abaixo estou usando um pendrive detectado pelo sistema como "/dev/sda". Ao usar um adaptador CF-IDE, ou um leitor de cartões que seja detectado pelo sistema de forma diferente, lembre-se de apontar o dispositivo correto.

    # cfdisk /dev/sda

    (para particionar o pendrive, caso necessário)

    # mkdosfs /dev/sda1

    (para formatar a partição)

    O próximo passo é montar a partição criada e copiar os arquivos de dentro do CD do Kurumin para dentro dela:

    # mount /dev/sda1 /mnt/sda1

    (monta a partição criada no pendrive)

    # mount /mnt/cdrom

    (monta o CD-ROM)

    # cp -a /mnt/cdrom/* /mnt/sda1

    (copia os arquivos do CD-ROM para dentro da partição)

    Você pode também copiar os arquivos diretamente a partir do ISO. Neste caso, monte-o com o comando "mount -o loop kurumin-5.0.iso /mnt/cdrom".

    O Kurumin, assim como a maioria dos live-CDs atuais usa o isolinux como sistema de boot. Para tornar o pendrive bootável, usaremos o syslinux, o que exige algumas adaptações.

    Em primeiro lugar, instale o pacote "syslinux" usando o gerenciador de pacotes da distribuição em uso. Emergencialmente, você pode também baixar um pacote .rpm já compilado no http://www.kernel.org/pub/linux/utils/boot/syslinux/RPMS/

    Para instalar este pacote no Debian, transforme-o em um pacote .deb usando o Alien.

    No Kurumin, a imagem do Kernel, initrd e o arquivo de configuração do isolinux vão dentro da pasta boot/isolinux/ do CD. Precisamos copiar estes três arquivo para o diretório raiz do pendrive, de forma que eles possam ser acessados pelo syslinux.

    Acesse a pasta boot/isolinux/ dentro do pendrive e copie os arquivos linux26 (a imagem do Kernel), minirt26.gz (a imagem com módulos e arquivos adicionais usada durante o boot), isolinux.bin (o executável do isolinux, necessário durante o boot) e o arquivo isolinux.cfg para a pasta raiz do pendrive.

    # cd /mnt/sdc1/boot/isolinux/
    # cp linux26 minirt26.gz isolinux.cfg isolinux.bin /mnt/sda1

    Os arquivos de configuração do isolinux e syslinux são intercompatíveis, pois isso podemos simplesmente renomear o arquivo de "isolinux.cfg" para "syslinux.cfg". Renomeie também o arquivo isolinux.bin:

    # mv /mnt/sdc1/isolinux.cfg /mnt/sdc1/syslinux.cfg
    # mv /mnt/sdc1/isolinux.bin /mnt/sdc1/syslinux.bin

    Em outras distribuições, os três arquivos podem estar localizados diretamente na pasta boot/, ou mesmo direto no diretório raiz do CD. Abra o arquivo syslinux.cfg e verifique se as referências aos outros arquivos estão corretas. Se os três estão no diretório raiz, a referência à imagem do Kernel deve ser "KERNEL linux26" e não "KERNEL /boot/linux26" por exemplo.

     

    O último passo é usar o executável do syslinux (instalado na máquina) para tornar o pendrive bootável. Ao contrário que faríamos ao gravar o lilo num HD por exemplo, o comando deve indicar a partição criada (/dev/sda1) e não o dispositivo. O parâmetro "-s" é uma opção de compatibilidade, que grava um setor de boot compatível com algumas placas antigas.

    # syslinux -s /dev/sda1

    Algumas placas não funcionam bem em conjunto com a opção "-s", nestes casos, experimente usar simplesmente "syslinux /dev/sda1".

    Com isto, você já tem um pendrive ou cartão bootável, basta configurar o setup para inicializar através dele e testar. Procure pela opção "Fist Boot Device" e configure-a com a opção "USB-HD" ou "Removable Devices", de acordo com o que estiver disponível. Algumas placas (mesmo modelos recentes) são problemáticas com relação ao boot através de pendrives. Numa Asus A7N8X-X que testei, por exemplo, o pendrive só era detectado no POST caso a opção "APIC Function" (que não tem nada a ver com a história) estivesse habilitada.

     

    O interessante é que isto pode ser feito com outros dispositivos compatíveis com o padrão usb-storage (onde o cartão é visto pelo sistema como se fosse um pendrive), como câmeras e até mesmo palms. Ou seja, com um cartão de capacidade suficiente, sua câmera pode, além de tirar fotos, e guardar arquivos, servir como sistema de boot.

    Mais um detalhe importante é com relação à velocidade da porta USB e também a velocidade do pendrive, cartão ou câmera usada. As portas USB 1.1 tem a velocidade de transferência limitada a cerca de 800 KB/s, o que torna o carregamento do sistema lento, como se desse boot a partir de um CD-ROM 6x.

    As portas USB 2.0 são muito mais rápidas, fazendo com que o limitante seja a velocidade do cartão ou pendrive usado. Os de fabricação recente tem geralmente tem uma velocidade de leitura entre 6 e 12 MB/s, o que já oferece um desempenho satisfatório. O desempenho varia muito de acordo com a marca e o padrão usado, os cartões compact-flash são normalmente os mais rápidos.

    O grande problema fica por conta de algumas câmeras e pendrives antigos, onde a taxa de transferência é muito mais baixa, muitas vezes menos de 300 kb/s. Nada o impede de utilizá-los, mas o desempenho do sistema será muito ruim.

    Até aqui, o sistema dá boot como se estivesse rodando a partir do CD, nenhuma grande vantagem. Podemos incrementar isso usando o espaço livre para criar uma imagem de loopback, para armazenar os arquivos e configurações do diretório /home.

    Para criar o arquivo, usamos o comando dd, usando o "/dev/zero" como dispositivo de entrada. Isso faz com que seja criado um arquivo do tamanho especificado, cheio de bits 0.

    Para criar um arquivo de 32 MB, por exemplo, o comando seria:

    # dd if=/dev/zero of=home.img bs=1024 count=32768

    O "bs=1024" indica o tamanho dos setores (1 kb, no caso) e o número de setores, que determina o tamanho do arquivo.

    O próximo passo é formatar o arquivo em EXT2. O parâmetro -F serve para forçar a criação do sistema de arquivos, já que estamos formatando um arquivo e não uma partição, como seria esperado:

    # mkfs.ext2 -F home.img

    A partir daí, você pode montar este arquivo como se fosse uma partição, usando o parâmetro "-o loop" do mount. Comece dando um boot normal a partir do pendrive. Monte o arquivo e copie os arquivos do diretório home para ele. Ao dar boot no Kurumin, os arquivos dentro do pendrive aparecerão dentro da pasta "/cdrom".

    # mkdir /mnt/home
    # mount -o loop /cdrom/home.img /mnt/home
    # cp -a /home/* /mnt/home
    # umount /mnt/home

    Para usar este arquivo como home, seria necessário usar a opção "kurumin home=/cdrom/kurumin.img" (lembre-se que o pendrive é montado pelo sistema na pasta /cdrom, logo no início do boot) na tela de boot (a cada boot da máquina), o que não seria muito prático. O ideal é que isso seja feito automaticamente.

    Podemos modificar dois scripts de boot sem precisar remasterizar o Kurumin. Remasterizando, você poderia fazer muitas coisas, como remover programas para reduzir o tamanho do sistema, substituí-los por outros programas que utiliza no dia a dia, ou fazer personalizações diversas. Para mais detalhes sobre a remasterização do Kurumin, leia o capítulo 8 do meu livro Kurumin, desvendando seus segredos. Vou me limitar aqui a alguns "hacks", que podem ser feitos sem precisar modificar o sistema.

    Como disse, existem dois arquivos de inicialização que podemos alterar, para alterar o comportamento do sistema. O primeiro é o arquivo "syslinux.cfg", no diretório raiz do pendrive. Dentro dele você pode adicionar opções de boot diversas, que passarão a ser usadas por default, sem que você precise ficar digitando-as a cada boot.

    Logo no início do arquivo você encontrará as linhas:

    DEFAULT linux26
    APPEND ramdisk_size=100000 init=/etc/init lang=us acpi=off apm=power-off vga=788 initrd=minirt26.gz nomce quiet psmouse.proto=exps BOOT_IMAGE=knoppix

    Na verdade, a linha "APPEND" forma uma única (e longa) linha, e não duas como você está vendo aqui, por causa da diagramação. Basta adicionar as opções de boot que você deseja que sejam usadas. Se você precisa sempre especificar a opção "kurumin xvrefresh=60" para ajustar a taxa de atualização do monitor, adicione a opção "xvfresh=60" no final da linha, de modo que ela fique:

    APPEND ramdisk_size=100000 init=/etc/init lang=us acpi=off apm=power-off vga=788 initrd=minirt26.gz nomce quiet psmouse.proto=exps BOOT_IMAGE=knoppix xvrefresh=60

    Lembre-se que tudo isso forma uma única linha.

    Para que o arquivo home.img seja usado, precisaremos mexer no arquivo "linuxrc", um script bem mais complexo que é executado durante o boot.

    No diretório raiz do pendrive, você encontra o arquivo "minirt26.gz". Ele é na verdade uma imagem compactada, que contém diversos arquivos, entre eles o linuxrc. Para chegar até ele, descompacte o arquivo e monte-o numa pasta usando a opção "-o loop", como se ele fosse um arquivo .ISO:

    # mkdir tmp
    # gunzip minirt26.gz

    (descompacta o arquivo)

    # mount -o loop minirt26 tmp/

    (monta a imagem descompactada dentro da pasta)

    Acesse o diretório tmp/ e abra o arquivo linuxrc dentro dele. A primeira alteração necessária é fazer com que o pendrive seja montado em modo escrita e leitura durante o boot e não em modo somente leitura, como um CD-ROM. Para isso, procure pela linha:

    if mountit $i /cdrom "-o ro" >/dev/null 2>&1

    No arquivo original, esta é a linha 358. Altere o "-o ro" para "-o rw":

    if mountit $i /cdrom "-o rw" >/dev/null 2>&1

    Falta agora adicionar as linhas que farão o script usar o arquivo home.img como home, montando-o no boot. Perto do final do arquivo, procure pela linha:

    mount -t devpts /dev/pts /dev/pts 2>/dev/null

    Adicione as linhas abaixo logo após ela (sem modificar as linhas originais):

    # home
    rm -f /home
    mkdir /home
    /bin/mount -o remount rw /cdrom/
    /bin/mount -o remount umask=000 /cdrom/
    /bin/mount -o loop /cdrom/home.img /home
    /bin/chown -R kurumin.kurumin /home/kurumin

    Salve o arquivo, feche a janela do editor e faça o processo inverso, desmontando o arquivo minirt26 e compactando-o novamente:

    # umount tmp/
    # gzip minirt26.gz

    A partir daí, os arquivos que forem salvos dentro do diretório home serão automaticamente salvos dentro da imagem home.img e assim restaurados a cada boot.

    O próximo passo é fazer com que outra modificações no sistema (arquivos de configuração, novos programas instalados, etc.) também sejam salvas. Neste caso podemos usar o UnionFS, incluído no Kurumin 5.0, fazendo com que as alterações feitas sejam salvas em outro arquivo de imagem ao invés de tudo ser feito num ramdisk, como seria o padrão do sistema. Isto fará com que tudo continue disponível, mesmo depois de reiniciar o micro.

    A questão principal aqui passa a ser o espaço. Se você está usando um pendrive de 512 MB, depois de copiar os arquivos do sistema e criar o home.img, vão sobrar apenas uns 40 MB livres, que não serão suficientes para instalar muitos programas. A solução aqui seria remasterizar o sistema, gerando uma imagem menor e assim deixando mais espaço livre no pendrive.

    Vou usar como exemplo a criação de um arquivo pequeno, usando os 47 MB que ainda estavam livres no meu caso. Comece criando a imagem usando o dd e formate o arquivo:

    # dd if=/dev/zero of=union.img bs=1024 count=47000
    # mkfs.ext2 -F union.img

    Para que ele seja usado, precisaremos fazer mais uma modificação dentro do arquivo linuxrc. Refaça todo o procedimento de descompactar o minirt26.gz, montá-lo na pasta temporária e abrir o arquivo linuxrc dentro dele.

    Dentro do arquivo, procure pelas linhas:

    echo -n "${CRE}${BLUE}Creating unionfs and symlinks on ramdisk...${NORMAL}"
    mkdir -p /UNIONFS
    if test -n "$UNIONFS" && /bin/mount -t unionfs -o \
    dirs=/ramdisk=rw:/KNOPPIX=ro /UNIONFS /UNIONFS; then

    Precisamos adicionar duas novas linhas, que montam o arquivo union.img, dentro do pendrive e modificar a última linha, de forma que ele seja usado no lugar do ramdisk. Depois das alterações, as linhas ficarão:

    echo -n "${CRE}${BLUE}Creating unionfs and symlinks on ramdisk...${NORMAL}"
    mkdir -p /UNIONFS
    mkdir -p /union
    /bin/mount -o loop /cdrom/union.img /union
    if test -n "$UNIONFS" && /bin/mount -t unionfs -o \
    dirs=/union=rw:/KNOPPIX=ro /UNIONFS /UNIONFS; then

    Salve o arquivo, desmonte o diretório e compacte novamente o arquivo minirt26 para salvar suas alterações. Experimente agora dar um novo boot usando o pendrive e instalar algum programa pequeno. Reinicie de novo e você notará que ele continua lá.

    Lembre-se que usando um arquivo union.img pequeno, ele logo ficará cheio caso você comece a instalar programas e fazer muitas alterações. Para usar o apt-get e fazer um número mais generoso de alterações, é recomendável criar um arquivo union.img com pelo menos 150 MB. Neste caso você precisará remasterizar o sistema para liberar espaço, ou usar um pendrive de maior capacidade.





    Blog:

    Add to Google

    » Gostou do texto? Veja nossos livros impressos:
    Hardware | Redes | Servidores | Kurumin 7

    ... ou encontre o que procura usando a busca:

cb
Livros de Carlos E. Morimoto HOME