Criando uma imagem do DOS de 10 MB ou superior com PXE

3

Eu gostaria de criar uma imagem de disquete "massiva" do DOS, digamos, 10MB ou mais, contendo todas as atualizações de firmware que eu preciso para qualquer sistema, disco rígido ou BIOS.

Eu não preciso da imagem do DOS para ser capaz de rede, pois tudo estará na imagem inicializada pelo PXE, mas a rede seria legal. Como os discos Zip foram anexados ao controlador de disquete e tinham mais de 100 MB, isso deveria ser possível.

Eu tentei há muito tempo fazer isso e gastei muito tempo nisso apenas para não conseguir inicializar. Então, se alguém tiver instruções confiáveis sobre como criar uma fera de pesadelo e editá-la, por favor me avise. Uma imagem que pode ser usada para o PXE e copiada para um pendrive USB seria uma vantagem.

É uma pena que os fabricantes não forneçam uma única ISO do Linux inicializável contendo todas as atualizações de firmware que seriam fáceis de inicializar pela rede local e de rede. Os servidores HP fazem isso e é incrível.

    
por rjt 18.06.2012 / 03:50

3 respostas

1

Eu já passei por esse processo algumas vezes, e embora seja extremamente fácil, eu continuo esquecendo os passos exatos que usei, então estou documentando aqui para minha própria referência, assim como para outros. Para o registro, estou usando o Slackware Linux 14.2+ como o servidor PXE e inicializando vários modelos diferentes do Dell Optiplex para atualizações do BIOS. Como mencionado em outras respostas, você pode criar imagens ISO inicializáveis para sistemas de arquivos grandes. No entanto, como você perguntou especificamente sobre imagens de disquete inicializáveis, aqui estão as etapas que uso para isso.

Primeiro, algumas informações básicas sobre MEMDISK e FAT12 para colocar sua questão no contexto. Há muitas informações conflitantes e ambíguas por aí, então, espero, isso esclarece um pouco as coisas.

Um thread syslinux de 2003 indica que o MEMDISK suporta um tamanho máximo de imagem de 4 GB, dependendo no hardware (isto é, considerações específicas de hardware limitadas à memória, mas possivelmente adicionais). Um thread anterior de 2002 também indica uma limitação PXELINUX separada (espaço do kernel do Linux limitado a ~ 1GB, mas esta informação tem mais de 15 anos).

Na documentação do MEMDISK , há algumas geometrias de disquete específicas que o memdisk tente adivinhar:

Floppy images

If the disk image is less than 4,194,304 bytes (4096K, 4 MiB) it is assumed to be a floppy image and MEMDISK will try to guess its geometry based on the size of the file. MEMDISK recognizes all the standard floppy sizes as well as common extended formats:

  163,840 bytes  (160K) c=40 h=1 s=8    5.25" SSSD
  184,320 bytes  (180K) c=40 h=1 s=9    5.25" SSSD
  327,680 bytes  (320K) c=40 h=2 s=8    5.25" DSDD
  368,640 bytes  (360K) c=40 h=2 s=9    5.25" DSDD
  655,360 bytes  (640K) c=80 h=2 s=8    3.5"  DSDD
  737,280 bytes  (720K) c=80 h=2 s=9    3.5"  DSDD
1,222,800 bytes (1200K) c=80 h=2 s=15   5.25" DSHD
1,474,560 bytes (1440K) c=80 h=2 s=18   3.5"  DSHD
1,638,400 bytes (1600K) c=80 h=2 s=20   3.5"  DSHD (extended)
1,720,320 bytes (1680K) c=80 h=2 s=21   3.5"  DSHD (extended)
1,763,328 bytes (1722K) c=82 h=2 s=21   3.5"  DSHD (extended)
1,784,832 bytes (1743K) c=83 h=2 s=21   3.5"  DSHD (extended)
1,802,240 bytes (1760K) c=80 h=2 s=22   3.5"  DSHD (extended)
1,884,160 bytes (1840K) c=80 h=2 s=23   3.5"  DSHD (extended)
1,966,080 bytes (1920K) c=80 h=2 s=24   3.5"  DSHD (extended)
2,949,120 bytes (2880K) c=80 h=2 s=36   3.5"  DSED
3,194,880 bytes (3120K) c=80 h=2 s=39   3.5"  DSED (extended)
3,276,800 bytes (3200K) c=80 h=2 s=40   3.5"  DSED (extended)
3,604,480 bytes (3520K) c=80 h=2 s=44   3.5"  DSED (extended)
3,932,160 bytes (3840K) c=80 h=2 s=48   3.5"  DSED (extended)

A small perl script is included in the MEMDISK directory which can determine the geometry that MEMDISK would select for other sizes; in general, MEMDISK will correctly detect most physical extended formats used, with 80 cylinders or slightly higher.

 LABEL floppy_image
  LINUX memdisk
  INITRD floppy.img

If your image is larger than 4 MiB and it is a floppy image, you can force MEMDISK to treat it as a floppy image:

 LABEL floppy_image
  LINUX memdisk
  INITRD floppy.img
  APPEND floppy

Na prática, não tive sorte com o parâmetro APPEND floppy ; Eu recebo um erro MEMDISK: No ramdisk image specified! quando eu o uso.

Tradicionalmente, as imagens de disquetes usam o formato FAT12 , que tem um limite de 16MB e 8k clusters. Parece haver extensões para FAT12 que permitem 32MB ou até 256MB (64k clusters) mas não tenho certeza dos detalhes.

Se segmentarmos o tamanho máximo de FAT12 ( 16,736,256 bytes ) para um inicializável imagem de disquete, podemos fazer o seguinte:

dd if=/dev/zero of=FAT12_16MB.img bs=1 count=16736256

No entanto, esse comando pode levar um minuto para ser concluído. Usando um tamanho de bloco maior, podemos realizar a mesma coisa em menos de um segundo:

dd if=/dev/zero of=FAT12_16MB.img bs=8192 count=2043

Agora que temos um 'disquete vazio', precisamos formatá-lo como FAT12 (se você estiver interessado nos parâmetros disponíveis para este comando, execute man mkfs.fat para visualizar a página man):

mkfs.fat -D 0x00 -F 12 -n FREEDOSBIOS FAT12_16MB.img

Agora temos uma imagem formatada do FAT12 'disquete'. Podemos criar uma pasta e montá-la:

mkdir floppy
mount -t msdos -o loop FAT12_16MB.img floppy

E agora podemos começar a copiar arquivos para ele. Eu baixei o disco de inicialização FreeDOS OEM de fdos.org e copiou para a minha imagem maior:

wget http://www.fdos.org/bootdisks/autogen/FDOEM.288.imz
unzip FDOEM.288.imz

Crie um novo ponto de montagem para a imagem FreeDOS e monte-a:

mkdir freedos12
mount -t msdos -o loop FDOEM.288 freedos12

Copie o sistema operacional FreeDOS para seu disquete maior:

cp -r freedos12/* floppy

Em seguida, desmonte a partição FreeDOS e exclua o ponto de montagem se não for mais necessário:

umount freedos12
rmdir freedos12

Agora, temos uma imagem de disquete de 16 MB ( FAT12_16MB.img ) contendo o sistema operacional FreeDOS. No entanto, se você tentar inicializar isso via PXE, você receberá o seguinte erro:

Loading boot sector... booting...
This is not a bootable disk. Please insert a bootable floppy and press any key to try again...

Precisamos criar o setor de inicialização nessa imagem. Importante: Como estaremos escrevendo diretamente para o arquivo de imagem, certifique-se de que sua imagem de disquete não esteja montada antes da próxima etapa:

umount floppy

Copie o setor de inicialização da imagem do FreeDOS ( FDOEM.288 para a imagem maior 'FAT12_16MB.img':

dd if=FDOEM.288 of=FAT12_16MB.img bs=1 count=446 seek=62 skip=62 conv=notrunc

Agora você tem uma imagem de disquete FAT12 de 16 MB inicializável no PXE com o FreeDOS. Neste ponto, você pode montar novamente a imagem e copiar quaisquer arquivos adicionais necessários.

A configuração exata do PXE que estou usando para inicializar esta imagem é:

label bios
menu label FreeDOS
kernel memdisk
append initrd=FAT12_16MB.img

Existem alguns outros úteis recursos de passo a passo que eu consultei enquanto criava esta resposta.

    
por 04.08.2018 / 15:37
3

Isso não pode ser feito facilmente, mas não é impossível;

Você pode criar um FreeDOS ISO inicializável contendo todos os seus upgrades de firmware Então o PXE inicializa aquele ISO com PXELINUX e memdisk

LABEL BIOS UPG
 MENU LABEL Bios Upg
 KERNEL memdisk
 APPEND iso initrd=FreDosBiosUpg.iso
    
por 18.08.2012 / 23:53
0

O kernel do memdisk não será capaz de carregar imagens maiores,

você precisa tentar kernal vmlinuz para carregar as imagens maiores, você pode encontrá-lo nos espelhos linux on-line .. Eu usei um dos centos para carregar algumas imagens maiores.

    
por 18.10.2012 / 15:44