Cenário
O modo correto para inicializar um computador com um drive externo é configurar o dispositivo de arranque na BIOS como USB-HDD.
A tecnologia USB Hard Drive Disk é basicamente um HD externo e uma interface USB 2.0, que permite atingir velocidades compatíveis com as dos discos internos. Os pendrivers modernos emulam os discos USB-HDD e também funcionam como disco de arranque.
A geometria dos pendrivers é arbitrária (C-H-S). A BIOS de computadores antigos, sem suporte para USB-HDD, pode fazer sua própria interpretação desses parâmetros gerando conflitos e erros, que impedem a inicialização por dispositivos USB-HDD.
Isso não é um problema em computadores modernos que reconhecem e se ajustam aos vários tipos de dispositivos USB de inicialização, como os discos USB-HDD, USB-FDD, USB-Zip e USB-CDROM. Computadores com BIOS novas podem usar uma grande variedade de dispositivos externos e permitem inicializar a partir desses dispositivos sem qualquer restrição relativa à geometria ou com a capacidade da unidade.
A tecnologia dos pendrivers legados é baseada em memória flash (USB-Flash) e eles são minidiscos de estado sólido sem partes mecânicas. Como sua capacidade é limitada (até 2 GB), eles podem funcionar satisfatoriamente como pequenos discos removíveis, mesmo em interfaces lentas como USB 1.1.
Esses pendrivers utilizam sistemas de arquivos legados como FAT16, ou 32, que são amplamente implementados e permitem o intercâmbio dos dados entre diferentes sistemas.
O dispositivo de inicialização é uma escolha feita pelo usuário e configurada no programa SETUP, que faz parte da BIOS. No SETUP, o usuário faz uma série de escolhas relacionadas com o processo de arranque do computador e outros ajustes no hardware. Essas informações são lidas pelo sistema operacional e utilizadas para configurar a máquina.
Computadores antigos (ou com BIOS bugadas, pois a opção USB-HDD não funciona - Award BIOS), não conseguem dar partida com pendrivers. Entretanto, a maioria das BIOS legadas oferece uma opção de arranque para dispositivos USB-Zip. Isso permite emular um Zip Drive em um pen drive e conseguir o arranque.
A tecnologia USB Hard Drive Disk é basicamente um HD externo e uma interface USB 2.0, que permite atingir velocidades compatíveis com as dos discos internos. Os pendrivers modernos emulam os discos USB-HDD e também funcionam como disco de arranque.
A geometria dos pendrivers é arbitrária (C-H-S). A BIOS de computadores antigos, sem suporte para USB-HDD, pode fazer sua própria interpretação desses parâmetros gerando conflitos e erros, que impedem a inicialização por dispositivos USB-HDD.
Isso não é um problema em computadores modernos que reconhecem e se ajustam aos vários tipos de dispositivos USB de inicialização, como os discos USB-HDD, USB-FDD, USB-Zip e USB-CDROM. Computadores com BIOS novas podem usar uma grande variedade de dispositivos externos e permitem inicializar a partir desses dispositivos sem qualquer restrição relativa à geometria ou com a capacidade da unidade.
A tecnologia dos pendrivers legados é baseada em memória flash (USB-Flash) e eles são minidiscos de estado sólido sem partes mecânicas. Como sua capacidade é limitada (até 2 GB), eles podem funcionar satisfatoriamente como pequenos discos removíveis, mesmo em interfaces lentas como USB 1.1.
Esses pendrivers utilizam sistemas de arquivos legados como FAT16, ou 32, que são amplamente implementados e permitem o intercâmbio dos dados entre diferentes sistemas.
O dispositivo de inicialização é uma escolha feita pelo usuário e configurada no programa SETUP, que faz parte da BIOS. No SETUP, o usuário faz uma série de escolhas relacionadas com o processo de arranque do computador e outros ajustes no hardware. Essas informações são lidas pelo sistema operacional e utilizadas para configurar a máquina.
Computadores antigos (ou com BIOS bugadas, pois a opção USB-HDD não funciona - Award BIOS), não conseguem dar partida com pendrivers. Entretanto, a maioria das BIOS legadas oferece uma opção de arranque para dispositivos USB-Zip. Isso permite emular um Zip Drive em um pen drive e conseguir o arranque.
Um SETUP moderno, normalmente, tem opções para dispositivos de arranque USB como os da figura 1:

Zip Drive
Os usuários mais jovens podem perguntar o que é um Zip Drive.Em meados de 1994, uma empresa chamada Iomega, lançou uma tecnologia de armazenamento, na forma de um "super-disquete", que tinha alta capacidade (100 e 250 MB) e velocidade muito superior a um disquete tradicional.
Vários fabricantes licenciaram a tecnologia Zip Drive da Iomega e tiveram relativo sucesso de vendas. Essa tecnologia foi rapidamente superada pelo CD-R e CD-RW com velocidade, preço e qualidade muito melhores para uso como mídia em cópias de segurança.
Por volta de 1998, uma falha no projeto dos discos ZIP genéricos levou a Iomega a responder um processo por perdas de dados, movido coletivamente pelos usuários americanos, e a tecnologia desapareceu em torno de 2003.
Emulação
Se o usuário selecionar a opção USB-Zip no SETUP do computador e configurar a geometria do pendrive de modo idêntico à de um Zip Drive, ele consegue "enganar" a BIOS, que fará arranque no pendrive, "pensando" ser uma unidade de disco Zip.É possível emular um Zip Drive de 250 MB em modo nativo. Todavia, o Zip Drive emulado no pendrive pode, com segurança, ter até a 1 GB ou 2 GB em alguns casos.
O truque consiste em ajustar o número de cabeças (heads) para 64 e o de setores (sectors) para 32, como era a geometria dos Zip Drivers de 100 e 250 MB. Mas, o pulo do gato aqui, é criar uma única partição na posição primária número 4 (sdx4), configurá-la como bootável e formatá-la como FAT16, como eram formatados os discos do Zip Drive.
O Zip Drive de 100 MB tinha 96 cilindros e o de 250 MB tinha 239. Quando estiver emulando um disco Zip em seu pendrive, limite o número de cilindros em até 1024, para evitar limitações de arranque de BIOS e bootloaders legados. Devido a essa limitação do cilindro 1024 (vai de 0 até 1023), o tamanho máximo de um Zip emulado é 1 GiB.
1024 C * 64 H * 32 S * 512 B = 1.024 ^ 3 = 1 GiB
Você pode trabalhar fora do padrão com pendrivers maiores que 1 GB, desde que as cabeças e setores sejam definidos em 64 e 32. O número de cilindros pode exceder a 1024, mas o tamanho da unidade não poderá passar de 2 GB, pois FAT16 não saberá lidar com isso!
Eu testei com pendrivers de 1, 2 e 4 GB, e somente o um pendrive de 2 GB "bootou" como USB-Zip em uma ASUS P4S533-X. Mas, 1 GB é suficiente para arrancar o vmlinuz (2,4 MB) e o initrd.gz (6 MB) da instalação HD-MEDIA, e ainda manter a ISO Debian Netinstall (252 MB).
A figura 2 elenca os códigos hexadecimais de tipos de partição e seus tamanhos máximos como eram reconhecidos pelo MS-DOS e Windows 95/98 naquela época.
Tenha paciência em relação à velocidade, pois estamos emulando a tecnologia de formatação do MS-DOS 4.0!

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!
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:
Exemplo para um pen drive Kingston de 1 GB ou 981 MiB:
# mkdiskimage -4 /dev/sdb 900 64 32
# fdisk -l /dev/sdb
* 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
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 GRUBfazem. 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
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!
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.
Seu diretório deve ter os seguintes arquivos:
# ls -lh
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
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 FAT16Observe 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 GRUBfazem. 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
#======================
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.isoDesmonte 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.
Nenhum comentário:
Postar um comentário