USB-ZIP - Emulando Zip Drive em Pendrive

Este artigo mostra como emular um Zip Drive num pendrive legado. Isso abre muitas possibilidades de instalação via rede, repositório local e PXE.

[ Hits: 29.326 ]

Por: Perfil removido em 24/04/2013


Preparação do pendrive



Neste momento, vamos preparar um pendrive para funcionar como se fosse um Zip Drive.

Ele será preparado para instalação de um Debian 7 com imagem Netinstall. Para a preparação, você precisa de um GNU/Linux qualquer que esteja funcionando. Acredito que até com um LiveCD seja possível fazer a preparação.

* Aviso: este tutorial tem passos que se forem seguidos errados, podem destruir o sistema instalado. Cuidado e atenção!

mkdiskimage

O utilitário mkdiskimage, no Debian, faz parte do pacote "syslinux-common", é um script Perl, que tem como função criar uma imagem que simula um disco rígido em branco no padrão DOS. Esse script facilita a criação da emulação de Zip Drive, pois possui opções para isso.

# dpkg -S /usr/bin/mkdiskimage
syslinux-common: /usr/bin/mkdiskimage

# file -i /usr/bin/mkdiskimage
/usr/bin/mkdiskimage: text/x-perl; charset=us-ascii


A sintaxe de mkdiskimage, é:

  mkdiskimage [ -doFMz4 ] [ -i id ] file|device cyl head sect

A imagem pode ser criada em arquivo (file) ou diretamente no dispositivo (device), e terá o tamanho definido pelos parâmetros C-H-S. No tutorial mostro como criar diretamente no pendrive, por ser mais fácil. Se quiser criar em arquivo, use um dispositivo /dev/loopx para montar e depois copie com o comando dd para o dispositivo (* Isso não foi testado!).

Parâmetros opcionais são de mkdiskimage:
  • -4 :: Usa a quarta entrada da tabela de partições. Padrão para criar discos do tipo Zip Drive. Exemplo: /dev/sdx4.
  • -z :: Força a geometria de um Zip Drive. Significa "heads=64" e "sect=32".
  • -i ID :: Define um identificador de tipo de partição na tabela da MBR.
  • -d :: Adiciona um cabeçalho DOSEMU.
  • -M :: O argumento para cilindros, dado em MB.
  • -F :: Define a formatação em FAT32. Para Zip Driver, o padrão parece ser automaticamente definido como FAT16. Não altere isso!

Exemplo para um pen drive Kingston de 1 GB ou 981 MiB:

# mkdiskimage -4 /dev/sdb 900 64 32

# fdisk -l /dev/sdb
Disk /dev/sdb: 1007 MB, 1007681536 bytes
64 heads, 32 sectors/track, 961 cylinders, total 1968128 sectors
Units = setores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x63047827

Dispositivo Boot      Start       End      Blocks   Id  System
/dev/sdb4    *         32     1843199      921584    6  FAT16


Observe que, automaticamente, foi criada uma partição em /dev/sdb4 que ocupou todo o espaço do dispositivo baseado no layout C-H-S de 960/64/32, especificado pelo usuário. O código hexadecimal do tipo de dispositivo é 0x06 - FAT16 padrão MS-DOS 4.0 (conforme figura 2).

* Dica: se quiser, pode deixar o argumento de número de cilindros para ser preenchido automaticamente. Basta informar o valor como zero (0) e o sistema usará todo o espaço do pendrive. Em um pendrive de 2 GB, isso funcionou muito bem!

# mkdiskimage -4 /dev/sdx 0 64 32

SYSLINUX

A técnica consiste em instalar um bootloader chamado SYSLINUX, baseado em sistemas de arquivos DOS (FAT16 ou FAT32). Esse sistema facilita bastante a instalação de uma distribuição GNU/Linux e está presente nas mídias de instalação de muitas distribuições.

A instalação de SYSLINUX coloca um código de arranque na MBR e um arquivo chamado "ldlinux.sys" na raiz do dispositivo. Isso permite dar sequência ao processo de arranque.

O arquivo "syslinux.cfg" indicará um kernel (vmlinuz) e um "initrd.gz", igual ao modo que LILO ou GRUB fazem. Observe que os nomes de arquivos aqui são do tipo DOS (8.3) e são case insensitive, pois estamos em FAT16 (lembre-se disso!).

* Atenção: se durante o processo de boot o usuário teclar Shift ou Alt, um prompt no estilo LILO - boot: será apresentado. Isso permite passagem de parâmetros para o kernel sem editar "syslinux.cfg". Mas, esses argumentos podem ser inseridos no arquivo, de modo permanente do mesmo modo que opções "append" do LILO.

A preparação de um disco com SYSLINUX é tão fácil quanto parece, basta preparar um disco com formatação do tipo DOS (FAT16 ou FAT32) e executar a instalação de SYSLINUX.

A sintaxe variará um pouco, dependendo do sistema hospedeiro (DOS, XP ou GNU/Linux), então, consulte o manual para os detalhes. No Debian, o pacote se chama "syslinux". Antes de instalar SYSLINUX é preciso montar o dispositivo ou a imagem em arquivo.

* Atenção: observe como seu pendrive é identificado no sistema. Se errar o nome do dispositivo neste ponto, pode destruir uma instalação!

# mount -t vfat -o rw /dev/sdx4 /mnt/pen
# syslinux --install /dev/sdx4
# ls -l /mnt/pen #Confirme a presença do arquivo ldlinux.sys


HD-MEDIA

O Debian disponibiliza uma imagem de instalação para uso em pendrives, netbooks e partições de recuperação (Rescue).

Como neste artigo estamos utilizando uma versão testing, o endereço e o nome da imagem pode mudar. Procure no Google por "Debian HD-MEDIA", para obter um endereço atualizado.
Para uma instalação modo texto, pegue os arquivos "initrd.gz" e "vmlinuz". Para uma instalação modo gráfico, pegue esses mesmos arquivos na pasta "gtk". Obviamente, maiores e mais pesados. Copie para o dispositivo em /mnt/pen.

O arquivo "initrd.gz" pode ser descompactado e copiado como initrd. Neste caso, basta mudar o nome quando necessário. Eu mantenho como "initrd.gz" para evitar dúvidas!

Netinstall

As imagens Netinstall do Debian permitem instalação de um sistema básico (ideal para servidores sem interface gráfica) a partir de pequenas imagens (até 252 MB). A instalação é basicamente via rede e é necessário acesso à Internet ou um repositório local.

A imagem Netinstall pode ser obtida em:
Para arquitetura X86_32, pode ser obtida aqui:
Copie para o /mnt/pen como "wheezy.iso", pois estamos em FAT16.

syslinux.cfg

Prepare o arquivo "syslinux.cfg" do seguinte modo com seu editor de textos preferido:

#======================
default Netinstall
timeout 200
prompt 1
LABEL Netisntall
KERNEL vmlinuz
APPEND initrd=initrd.gz
#======================


Seu diretório deve ter os seguintes arquivos:

# ls -lh
total 261M
-rwxr-xr-x 1 root root 6,0M Abr 17 11:24 initrd.gz
-r-xr-xr-x 1 root root  32K Abr 17 11:23 ldlinux.sys
-rwxr-xr-x 1 root root  217 Abr 17 12:22 syslinux.cfg
-rwxr-xr-x 1 root root 2,4M Abr 17 11:24 vmlinuz
-rwxr-xr-x 1 root root 252M Abr 17 11:24 wheeze.iso


Desmonte o pendrive e configure a BIOS para o dispositivo de inicialização do tipo USB-Zip e teste. Aguarde a continuação deste artigo para automatizar a instalação do Debian Wheezy.

Referências


Página anterior    

Páginas do artigo
   1. Cenário
   2. Preparação do pendrive
Outros artigos deste autor

Usando tabelas no editor de textos do OpenOffice

Formatando texto no Open Office

ATI 200M + XGL no Gentoo

Instalando o OSS4 no Ubuntu 11.04

Variety - Instalação e configuração

Leitura recomendada

Linux - Manipulando partições de disco

Diferenças entre o sistema de arquivos do Windows e Linux

GIT: Controle de versões distribuído para projetos de software

Recuperando arquivos deletados em partições ReiserFS

Aplicações em 32 bits para seu Ubuntu 64 bits (Feisty Fawn)

  
Comentários
[1] Comentário enviado por removido em 24/04/2013 - 13:37h

Gostaria de agradecer (mais uma vez!) ao trabalho dos moderadores na publicação desse artigo.

[2] Comentário enviado por albfneto em 24/04/2013 - 18:17h

é boa esta Dica, Favoritada.
tem outro jeito de forçar uma BIOS sem Boot pela USB a faze-lo, é usando PLOP Boot Manager:

http://www.vivaolinux.com.br/artigo/Linux-com-boot-no-Pendrive-com-todas-as-facilidades-SmartUSB_Key...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts