Instalando o Kurumin (e outras distros) num pendrive/cartão
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, ou seja muito trabalho e uma coisa não muito agradavel :).
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 linux26APPEND 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.
É isso galera, esse é um tuto grande e um pouco complicado, mais é muito bom.
Principalmente pra vocÊ que usa muito o Linux, e que gostaria de levar ele pra qualquer lugar.
Espero que vocÊs tenham gostado, até a próxima.
Fonte: http://www.tutoriaisclube.com/abrir.php?tutorial=357
Editado por: Gust@vo Cobain
0 comentários:
Postar um comentário
Deixe seu comentário ai, pode ser sobre alguma dúvida, o que for, iremos te ajudar.