Desafio: inicializar o IBM PC DOS

Lendo a lista de desenvolvimento do FreeDOS, achei este link:

IBM ServerGuide Scripting Toolkit, DOS Edition, version 1.3.07

Tem uma cópia do IBM PC DOS 7.1, um DOS moderno, com suporte a LBA e FAT32 (ufa!). Como inicializá-lo, criando o disco a partir de outro sistema, sem ter os códigos de inicialização à mão no ms-sys? Para mim, o jeito mais simples é usando o GRUB4DOS[1], que reconhece, através do comando chainloader, o arquivo IBMBIO.COM e aplica a mágica necessária para carregá-lo.

A partir de qualquer Linux atual:

wget https://github.com/chenall/grub4dos/releases/download/0.4.6a/grub4dos-0.4.6a-2021-12-17.7z
wget ftp://ftp.software.ibm.com/systems/support/system_x/ibm_sw_sgtk_1_3_07_anyos_anycpu.zip

7za x grub4dos-0.4.6a-2021-12-17.7z
unzip ibm_sw_sgtk_1_3_07_anyos_anycpu.zip

echo ',,0c,*' | sfdisk --lock=yes --wipe=always --wipe-partitions=always --label=dos /dev/sdx
mkfs.fat -F 32 -n PCDOS /dev/sdx1

mount /dev/sdx1 /mnt
cp -pv grub4dos-0.4.6a/grldr /mnt
cp -pv sgdeploy/sgtk/DOS/{IBMBIO.COM,IBMDOS.COM,COMMAND.COM} /mnt
echo -e 'timeout 0\ntitle PC DOS\nchainloader /IBMBIO.COM' > /mnt/menu.lst
umount /mnt

dd if=grub4dos-0.4.6a/grldr.mbr of=/dev/sdx bs=440 count=1 conv=fsync,notrunc
dd if=grub4dos-0.4.6a/grldr.mbr of=/dev/sdx bs=512 skip=1 seek=1 conv=fsync,notrunc

(única partição em FAT32)

Copiei apenas o mínimo necessário: IBMBIO.COM, IBMDOS.COM e COMMAND.COM. Tem o resto dentro de sgdeploy/sgtk/DOS/.

Qual utilidade disso hoje em dia? Quase nenhuma. Fica pela diversão mesmo… 🧐


[1] A cada nova compilação do GRUB4DOS, a anterior é excluída. Havendo nova versão, adapte os comandos.

Comentários