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: 24.149 ]

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

Exportando e importando confs do Putty em Windows

Netcat - O canivete suíco do TCP/IP

Criptografia quântica

LogBook: Documentação de implementação e manutenção

Usando classes em conexão e consultas à banco de dados em PHP

Leitura recomendada

MooseFS - Sistema de arquivos distribuído

Automatizando a montagem de partições Windows (FAT e NTFS) no Linux

Acessar, ler e escrever em partições Linux no Windows

Sistema de arquivos distribuídos usando Gmail

PersonalBackup - Ferramenta de backup via web

  
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
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts