Instalando o Kurumin 7 (e outros) num pendrive ou cartão

Instalando o Kurumin 7 (e outros) num pendrive ou cartão
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 SRAM, 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 1 milhão 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 fevereiro de 2007, um cartão SD de 2 GB já podia ser comprado por R$ 80, bem menos que um HD.

Desde o início do milênio, o custo memória flash tem caído pela metade a cada ano, esmagado pelas melhorias no processo de fabricação e novas tecnologias, que permitiram que cada célula passasse a armazenar mais de um bit. Atualmente a memória flash já custa bem menos que a memória RAM e já começa a substituir os HDs em alguns nichos, onde a portabilidade e o baixo consumo são importantes. Além disso, os cartões de memória substituíram rapidamente os disquetes como meio de armazenamento, hoje em dia quase todo mundo tem um :).

A grande maioria das 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.
tutorial-Kurumin7pendrive_html_m45ac7cb7
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, particionando e instalando. Por outro lado, esta é a opção mais dispendiosa, pois o sistema instalado consume bem mais espaço que a imagem compactada usada no CD.

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 ou cartão de 2 GB, pode rodar praticamente qualquer distribuição live-CD, ficando ainda com mais de 1 GB de espaço livre para guardar arquivos. 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.

Vou usar como exemplo o Kurumin 7, mas esta mesma receita pode ser usada no Knoppix e (com pequenas adaptações) em praticamente qualquer outra distribuição em live-CD.

Para melhorar a compatibilidade, vamos utilizar o grub como gerenciador de boot. Ele oferece uma boa flexibilidade e apresenta menos problemas de compatibilidade com placas diversas. Note que apenas placas-mãe relativamente recentes realmente suportam boot através da porta USB. Muitas chegam a oferecer a opção no setup, mas falham na hora H.

Esta receita realmente funciona. Se você seguir todos os passos corretamente e ainda assim receber um “Grub: Disk error” ou “Error 21”, provavelmente o problema é com o BIOS da placa mãe. Em alguns casos, atualizar o BIOS pode resolver, mas em outros você vai ter que esperar até conseguir trocar de placa.

Os problemas de compatibilidade são justamente o principal problema dos pendrives bootáveis; se você quer algo que funcione em qualquer micro, é melhor continuar usando o CD-ROM :-P.

Comece particionando o pendrive. Você pode também usar um cartão com a ajuda de um leitor USB. Ambos são reconhecidos pelo sistema da mesma forma. Se você tem um pendrive de 2 GB, o ideal é deixar uma partição FAT no início, para guardar arquivos e criar uma partição de 600 ou 700 MB (de acordo com o tamanho da distribuição que for utilizar) para a imagem do sistema. A partição FAT no início permite que você continue acessando o pendrive normalmente através do Windows.

A imagem do Kurumin 7 tem 604 MB. Como precisaremos de algum espaço adicional para os arquivos do grub e sempre algum espaço é perdido ao formatar, é recomendável criar uma partição de 650 MB para o sistema. Ao usar outras distribuições, calcule o espaço necessário de acordo com o tamanho do sistema.

Os pendrives já vem formatados de fábrica, com uma grande partição FAT. Você pode usar o gparted para redimensioná-la e criar uma partição EXT2 para o sistema. Naturalmente, você poderia usar outro sistema de arquivos, mas o EXT2 é suficiente para o que precisamos.

Num pendrive de 2 GB, ficaria assim:

sda1: 1.3 GB (FAT)
sda2: 650 MB (EXT2)

Para formatar as partições pelo terminal, use os comandos:

# mkfs.vfat /dev/sda1
# mkfs.ext2 /dev/sda2

(onde o /dev/sda o dispositivo referente ao pendrive)

O primeiro passo é montar o CD-ROM ou o arquivo ISO do sistema e copie todos os arquivos para dentro da segunda partição do pendrive, deixando-a com a mesma estrutura de pastas que o CD-ROM:
tutorial-Kurumin7pendrive_html_78633da6
Originalmente, o Kurumin utiliza o isolinux como gerenciador de boot ao rodar através do CD. Embora até possa ser utilizado, o isolinux possui muitas limitações com relação a outras mídias, por isso vamos substituí-lo pelo grub. Para isso, você vai precisar ter o Kurumin 7 instalado em alguma partição do HD.

Dê boot na instalação do Kurumin. Monte a segunda partição do pendrive e crie a pasta “/boot/grub” dentro dela. Em seguida, copie os arquivos da pasta “/boot/grub” da instalação do Kurumin no HD para a pasta /boot/grub” do pendrive, que acabou de criar. Crie também um arquivo de texto vazio chamado “teste” (na pasta “/boot/grub” do pendrive), que utilizaremos no passo seguinte.

No final você ficará com uma estrutura como esta no pendrive:
tutorial-Kurumin7pendrive_html_e4520a0
Simplesmente copiar os arquivos do grub para dentro do pendrive não basta. Precisamos agora instalar o grub no setor de boot do pendrive, de forma que ele se torne bootável. Para isso, usaremos o prompt do grub. Para acessá-lo use (a partir da instalação do Kurumin 7 no HD) o comando “grub” (como root). Você verá um prompt como este:

GNU GRUB version 0.97 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]

grub>

O grub utiliza uma nomenclatura peculiar para nomear os drives. É aqui que o arquivo “teste” vazio nos vai ser útil. Podemos utilizá-lo para descobrir como o grub identificou o pendrive. Para isso, use o comando “find /boot/grub/teste” no prompt do grub:

grub> find /boot/grub/teste

(hd1,1)

A resposta indica que (na nomenclatura usada pelo grub) o arquivo foi encontrado na partição 1 do hd1. O grub nomeia os dispositivos e partições a partir do zero, de forma que isso equivale à segunda partição, do segundo HD, ou seja, a segunda partição do pendrive :).

Falta agora só instalar o grub na partição indicada. Preste atenção nesta etapa, pois instalar no dispositivo errado pode ser desastroso :). Use os comandos “root (hd1,1)“, “setup (hd1)“, “setup (hd1,1)” e “quit“, substituindo os endereços, caso diferentes no seu caso. Note que instalei o grub duas vezes, uma no raiz do pendrive e outra na partição. Isto não é realmente necessário (instalar no raiz é suficiente), faço apenas por desencargo:

grub> root (hd1,1)

Filesystem type is ext2fs, partition type 0x83

grub> setup (hd1)

Checking if “/boot/grub/stage1” exists… yes
Checking if “/boot/grub/stage2” exists… yes
Checking if “/boot/grub/e2fs_stage1_5” exists… yes
Running “embed /boot/grub/e2fs_stage1_5 (hd1)”… 15 sectors are embedded.
Succeeded
Running “install /boot/grub/stage1 (hd1) (hd1)1+15 p (hd1,1)/boot/grub/stage2 /boot/grub/menu.lst”… succeeded
Done.

grub> setup (hd1,1)

Checking if “/boot/grub/stage1” exists… yes
Checking if “/boot/grub/stage2” exists… yes
Checking if “/boot/grub/e2fs_stage1_5” exists… yes
Running “embed /boot/grub/e2fs_stage1_5 (hd1,1)”… failed (this is not fatal)
Running “embed /boot/grub/e2fs_stage1_5 (hd1,1)”… failed (this is not fatal)
Running “install /boot/grub/stage1 (hd1,1) /boot/grub/stage2 p /boot/grub/menu.lst “… succeeded
Done.

grub> quit

Agora, você poderá copiar todos arquivos do CD-ROM para o pendrive. Isso pode ser feito com o comando seguinte, levando em conta os exemplos:

cp -a /mnt/cdrom/* /mnt/sda2

A esta altura, você terá uma estrutura similar a esta no pendrive:

/boot/grub
/boot/isolinux
/KNOPPIX

A pasta “/boot/isolinux” contém os arquivos de boot originais do sistema (como o Kernel e o arquivo initrd.gz), enquanto a pasta “/KNOPPIX” contém a imagem compactada do sistema. O próximo passo é justamente adaptar a cópia do grub que criamos para utilizar estes arquivos.

Acesse a parta “/boot/grub” (no pendrive) e delete o arquivo “device.map“, ele contém um cache dos dispositivos disponíveis na máquina, que deletamos para que o grub detecte tudo a cada boot, já que o pendrive será utilizado em várias máquinas diferentes.

Abra agora o arquivo “menu.lst“. Apague todo o seu conteúdo e substitua pelas linhas abaixo:

default 0
timeout 9

title Kurumin Linux
root (hd0,1)
kernel /boot/isolinux/linux26 ramdisk_size=100000 init=/etc/init vga=791 quiet lang=us
initrd /boot/isolinux/minirt.gz

title BOOT pelo HD
root (hd1)
chainloader +1

Independentemente de como o grub tenha detectado o pendrive na etapa anterior, quando você dá boot através dele, o grub sempre o vê como “(hd0)”. O sistema está instalado na segunda partição, o que nos leva ao endereço “(hd0,1)“, que usamos na opção principal, responsável por carregar o sistema instalado no pendrive. Se por acaso você estiver usando uma única partição no pendrive, substitua o “(hd0,1)” por “(hd0,0)”

Note que as opções “/boot/isolinux/linux26” e “/boot/isolinux/minirt.gz” indicam a localização da imagem de Kernel e o arquivo initrd que serão utilizados. O nome dos arquivos pode mudar de distribuição para distribuição, por isso é sempre importante confirmar.

A segunda opção (title BOOT pelo HD) oferece a opção de dar um boot normal, carregando o sistema instalado no HD, sem que você precise remover o pendrive.

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 “First Boot Device” e configure-a com a opção “Generic USB Flash”, “USB-HDD” ou “Removable Devices”, de acordo com o que estiver disponível. Algumas placas (mesmo alguns modelos relativamente 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 pelo BIOS caso a opção “APIC Function” (que não tem nada a ver com a história) estivesse habilitada.
tutorial-Kurumin7pendrive_html_m2ef63011
Uma pegadinha é que o BIOS só aceita inicializar através do pendrive se você ativar a flag “bootable” para a partição (do pendrive) onde salvou a imagem do sistema. Sem isso, o boot para uma uma mensagem reclamando de que o dispositivo não é bootável.

Para fazer isso através do gparted, clique com o botão direito sobre a partição “/dev/sda2” e acesse a opção “Manage Flags”. No menu, marque a opção “boot”:
tutorial-Kurumin7pendrive_html_m25e7f4e3
No cfdisk, selecione a partição e ative a opção “[Bootable]”. Inicialmente a tela de boot é bastante simples, contendo apenas um menu de texto com as duas opções definidas no arquivo “menu.lst”, mas você pode melhorá-la adicionando uma imagem de fundo ou cores. A configuração visual não muda em relação a uma instalação normal do grub.
tutorial-Kurumin7pendrive_html_4a761a2d
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 à velocidade do pendrive, cartão ou câmera usada. As portas USB 1.1 têm a velocidade de transferência limitada a cerca de 800 KB/s, o que torna o carregamento do sistema lento, quase 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 têm geralmente tem uma velocidade de leitura entre 20 e 40 MB/s, o que já oferece um desempenho satisfatório.

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.

Salvando as configurações

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 imagens de loopback, para armazenar configurações e programas instalados. Fazendo isso, o sistema lembra as suas configurações e permite a instalação de programas adicionais, praticamente como se estivesse instalado.

No Kurumin 7, você pode utilizar as opções disponíveis no “Iniciar > Configuração do Sistema“:
tutorial-Kurumin7pendrive_html_49c8975e
Os dois scripts são complementares. O que salva o home, se encarrega de salvar os arquivos e configurações salvos na sua pasta de usuário, enquanto o do UnionFS salva os programas instalados e outras configurações do sistema. Ambos criam imagens de loopback, arquivos especialmente formatados, que permitem criar um sistema de arquivos Linux dentro de um arquivo armazenado numa partição FAT.

Monte a primeira partição do pendrive (a formatada em FAT), execute os dois scripts e salve ambas as imagens dentro da partição. Se você está usando um pendrive de 2 GB, e tem 1.3 GB disponíveis na primeira partição, poderia reservar, por exemplo, 500 MB para a imagem do UnionFS, 300 MB para o home e deixar o restante do espaço disponível para salvar arquivos gerais. Você pode criar e deletar arquivos no pendrive normalmente, desde que não mexa nestes dois arquivos:
tutorial-Kurumin7pendrive_html_70c79b7e
Depois de criar as duas imagens, edite novamente o arquivo “/boot/grub/menu.lst” (do pendrive), adicionando as opções de boot necessárias para carregá-las (informadas ao executar os scripts) na linha com as opções do Kernel, como em:

kernel /boot/isolinux/linux26 ramdisk_size=100000 init=/etc/init vga=791 nomce quiet lang=us union=/dev/sda1/union.img home=/dev/sda1/kurumin.img
(tudo numa única linha)

Você pode também adicionar outras opções de boot que quiser usar, especificando qual resolução usar, desativando a aceleração 3D ou suporte a impressão (para economizar memória), e assim or diante. Se você usa a opção de boot “kurumin screen=1024×768 xmodule=i810 nocups”, por exemplo, a linha completa ficaria:

kernel /boot/isolinux/linux26 ramdisk_size=100000 init=/etc/init vga=791 nomce quiet lang=us union=/dev/sda1/union.img home=/dev/sda1/kurumin.img screen=1024×768 xmodule=i810 nocups

A partir daí, o sistema passa a inicializar usando as imagens do home e UnionFS por padrão, preservando suas configurações e programas instalados, rodando quase que da mesma forma que um sistema instalado.

O Knoppix, Kanotix e várias outras distribuições oferecem opções similares para salvar as configurações no pendrive, que podem ser usadas da mesma maneira, sempre gerando a imagem com as configurações e adicionando a opção de boot apropriada no arquivo “/boot/grub/menu.lst” do pendrive, para que ela seja executada a cada boot.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X