sexta-feira, 4 de dezembro de 2009

Rodando o Linux no Pendrive ou dispositivo USB

Introdução

Nesse artigo mostraremos instalar o linux em um pendrive e a partir dele iniciar seu computador.

Ordem de instalação:

O primeiro passo é formatar o pendrive, criando duas partições. A primeira será uma partição FAT32, que você pode usar para gravar dados do Linux e até no Windows e a segunda é a partição onde ficará armazenada a imagem do sistema. Está também deve ser FAT32.

A segunda partição FAT32 conterá uma cópia completa do CD de instalação, de forma que ela deve ter 750 MB (para deixar algum espaço vago para caso precise incluir arquivos adicionais). A primeira partição, por sua vez, pode englobar todo o restante do espaço vago do pendrive.

sda1: 1,25 GB (FAT32)

sda2: 750 MB (FAT32)

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 segunda partição FAT32 e acesse a opção Manage Flags. No menu, marque a opção boot:

Ao usar o cfdisk, selecione a partição e ative a opção [Bootable].

O próximo passo é formatar as partições criadas. Preste muita atenção ao indicar as partições referentes ao pendrive para não formatar sua partição de trabalho por engano:

mkfs.vfat -F 32 /dev/sda2

mkfs.vfat -F 32 -L ARQUIVOS /dev/sda1

O parâmetro -F 32 faz com que a primeira partição seja formatada em FAT32 (o padrão do mkfs.vfat é usar FAT16) e o -L ARQUIVOS define o nome da segunda partição

O segundo passo é montar a partição do pendrive e o CD-ROM com o sistema para poder copiar os arquivos. É necessário montar o CD-ROM mesmo ao dar boot através dele.

mkdir /mnt/pendrive /mnt/cd

mount /dev/sda2 /mnt/pendrive

mount /dev/cdrom /mnt/cd

Se você quiser fazer a cópia a partir de um arquivo ISO, pode montá-lo usando o comando mount -o loop, que faz com que ele seja acessado como se fosse um CD-ROM gravado, como em:

mount -o loop kubuntu-7.10- desktop-i386.iso /mnt/cd

Comece copiando todo o conteúdo do CD para a partição do pendrive, usando o cp -a (o parâmetro -a faz com que sejam copiados todos os arquivos e subdiretórios e todas as permissões sejam mantidas).

cp -a /mnt/cd/* /mnt/pendrive/

Em seguida é preciso copiar alguns arquivos específicos para o diretório raiz da partição, de forma que eles possam ser usados pelo syslinux:

cp -a /mnt/cd/isolinux/* /mnt/pendrive/

cp -a /mnt/cd/casper/vmlinuz /mnt/pendrive/

cp -a /mnt/cd/casper/initrd.gz /mnt/pendrive/

cp -a /mnt/cd/install/mt86plus /mnt/pendrive/

cp -a /mnt/cd/.disk /mnt/pendrive/

Precisamos agora criar o arquivo syslinux.cfg no diretório raiz da partição. Nele vai a configuração do gerenciador de boot:

nano /mnt/pendrive/syslinux.cfg

O conteúdo do arquivo fica:

Para o Ubuntu:

DEFAULT live

GFXBOOT bootlogo

LABEL live

menu label ^Iniciar Linux Ubuntu 8.04

kernel vmlinuz

append preseed/file=preseed/ubuntu.seed boot=casper initrd=initrd.gz ramdisk_size=1048576

root=/dev/ram rw quiet splash --

DISPLAY isolinux.txt

TIMEOUT 300

PROMPT 1

Para o Kubuntu:

DEFAULT live

GFXBOOT bootlogo

LABEL live

menu label ^Iniciar Linux Kubuntu 8.04

kernel vmlinuz

append preseed/file=preseed/kubuntu.seed boot=casper initrd=initrd.gz ramdisk_size=1048576

root=/dev/ram rw quiet splash --

DISPLAY isolinux.txt

TIMEOUT 300

PROMPT 1

É importante enfatizar que, apesar de longa, a opção append forma uma única linha, do append ao --.

Na verdade, a única diferença entre os dois é a opção pressed, que no Ubuntu é preseed/file=preseed/ubuntu.seed e no Kubuntu é preseed/file=preseed/kubuntu.seed, no resto os dois arquivos são idênticos.

No Kubuntu é necessário instalar o pacote kde-i18n-ptbr e alterar o idioma através do centro de controle para que o sistema fique em Português.

Com isso estamos quase lá. Falta apenas instalar o syslinux para que o pendrive torne-se bootável. Para isso, é necessário antes de mais nada desmontar a partição:

umount /mnt/pendrive

O syslinux não vem instalado na maioria das distribuições, por isso é necessário instalá-lo usando o gerenciador de pacotes. No Ubuntu/Kubuntu ou qualquer distribuição derivada do Debian, instale os pacotes syslinux e mtools via apt-get:

sudo apt-get install syslinux mtools

Falta agora apenas rodar o comando do syslinux:

syslinux -f /dev/sda2

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. Concluindo, use o comando abaixo do lilo (o pacote lilo deve estar instalado). Ele corrige o setor de boot caso necessário, de forma a remover resquícios de instalações de outros gerenciadores de boot e a corrigir problemas diversos:

lilo -M /dev/sda

Com isto, você já tem um pendrive bootável, basta configurar o setup para inicializar através dele e testar.

Se o boot for iniciado de forma normal, mas o sistema parar em um certo ponto, mostrando apenas um cursor piscante no topo da tela, indefinidamente, verifique se a pasta .disk do CD foi realmente copiada para o pendrive. Por algum motivo, sem ela o sistema simplesmente não conclui o boot.

Quando falo em pendrive estou na verdade me referindo a qualquer dispositivo de armazenamento USB compatível com o padrão usb-storage. O mesmo pode ser feito com HDs externos, ligados na porta USB (os HDs são até menos problemáticos do que os pendrives), câmeras (onde o cartão é acessado como uma unidade de armazenamento) e até mesmo cartões SD ou Memory Stick ligados a um leitor de cartões USB.

fonte: http://olinux.uol.com.br/