The goal was to use QEMU/SeaBIOS as an upgrade from a crashed old box, using the surviving HDD, the installation medias, and an old box configuration description. The result is a working installation, but with a long login procedure.
A backup of the HDD has been made to be able to recover if necessary (it has been necessary to recover).
The first step was to choose the QEMU command parameters to mimic as precisely as possible the old box configuration and get some insight. Thanks Kevin for your suggestions.
The basic command is:
qemu-system-x86_64 -localtime -cpu pentium -m 160 hdd2GoWIP -chardev
stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios
we will need the W98SE installation Startup floppy for getting the famous MS-DOS cdrom driver:
qemu-system-x86_64 -localtime -cpu pentium -m 160 -fda W98SESUfd
hdd2GoWIP -chardev stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios
and we will need the W98SE installation cdrom for the upgrade (I have not really checked that):
qemu-system-x86_64 -localtime -cpu pentium -m 160 -cdrom W98SEcdrom
hdd2GoWIP -chardev stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios
The basic command worked, but to go to the Blue Screen of Death (BSD). Going to the MS-DOS mode at startup, I found that the cdrom was not here. Most probably because of a driver problem. So I asked this mailinglist for help - Searching for an MS-DOS CD driver - because a SeaBIOS bios is in real contact with the OS and its drivers. Thanks Fred for the pointers, which were useful per se and have pointed me to the following Microsoft Support page, which was very helpful.
http://support.microsoft.com/kb/190303 Article ID: 190303 - Last Review: January 23, 2007 - Revision: 1.2 How to Use Real-Mode CD-ROM Drivers from Windows 98 Startup Disk
After reading it and its annexes, the problem was most probably the fact the old box CDROM was not standard and only its real mode driver had been installed as a cdrom driver.
Following the procedure with the W98SE Startup (floppy) disk, I got a HDD with the necessary CDROM driver and annexes to access the cdrom device on the command line. I was able to boot from HDD to the BSD and the Windows startup menu, alternatively. After some testing, I found that the good route was to choose the Step by Step mode. It has helped me adjusting the CONFIG.SYS file relatively to what the Microsoft Support Page states (syntax of the DEVICEHIGH lines). The pnp call arg1=40 appears just after the ASPI2DOS.SYS loading. To get further, when you get to the WIN command, say Y and also say Y for loading all the Windows drivers (in fact it gives you the opportunity to choose loading or not loading each driver), say Y to each all. The pnp call arg1=0 appears just after the last one, nsmouse.vxd. He will now upgrade the configuration correctly, that is, following its already known peculiar way. Other paths have curious outcomes, e.g. let the CPU spin to 100% and you need to kill -9 the qemu process.
The end result is:
I am able to boot from HDD with the basic QEMU command, but yet to the BSD and the Windows startup menu, alternatively. And from the Windows startup menu I have to go each time through the Step by Step procedure. That said it really works, way more quickly. Kudos to QEMU/SeaBIOS !!! I have to check USB, printing, networking, USB floppy, CD/DVD, etc...
The BOOTLOG.TXT file did not ever change.
For the curious boot cycle, W98SE or QEMU/SeaBIOS ?
-Nap
Here are the logs of three cases:
########################## # boot from HDD, the Windows splash appears quickly, 0.5 sec later pnp call arg1=5, 3 second later pnp call arg1=40, 5 sec later the screen blink one time, 6 sec later pnp call arg1=0 and the BSD. Close the window.
qemu-system-x86_64 -localtime -cpu pentium -m 160 -cdrom W98SEcdrom hdd2GoWIP -chardev stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios Start bios (version 1.6.3) Ram Size=0x0a000000 (0x0000000000000000 high) Relocating init from 0x000e3b20 to 0x09fe12e0 (size 60412) CPU Mhz=2795 === PCI bus & bridge init === PCI: pci_bios_init_bus_rec bus = 0x0 === PCI device probing === Found 6 PCI devices (max PCI bus is 00) === PCI new allocation pass #1 === PCI: check devices bus 0 === PCI new allocation pass #2 === PCI: init bases bus 0 (primary) type io max 100 sum 110 base c000 size 100: 1 bar(s), c000 -> c0ff size 10: 1 bar(s), c100 -> c10f type mem max 10000 sum 22000 base febd0000 size 10000: 2 bar(s), febd0000 -> febeffff size 1000: 2 bar(s), febf0000 -> febf1fff type prefmem max 2000000 sum 2000000 base fc000000 size 2000000: 1 bar(s), fc000000 -> fdffffff PCI: map device bus 0, bfd 0x0 PCI: map device bus 0, bfd 0x8 PCI: map device bus 0, bfd 0x9 bar 4, addr c100, size 10 [io] PCI: map device bus 0, bfd 0xb PCI: map device bus 0, bfd 0x10 bar 0, addr fc000000, size 2000000 [mem] bar 1, addr febf0000, size 1000 [mem] bar 6, addr febd0000, size 10000 [mem] PCI: map device bus 0, bfd 0x18 bar 0, addr c000, size 100 [io] bar 1, addr febf1000, size 100 [mem] bar 6, addr febe0000, size 10000 [mem] PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 PCI: bus=0 devfn=0x10: vendor_id=0x1013 device_id=0x00b8 PCI: bus=0 devfn=0x18: vendor_id=0x10ec device_id=0x8139 PIIX3/PIIX4 init: elcr=00 0c Found 1 cpu(s) max supported 1 cpu(s) MP table addr=0x000fd630 MPC table addr=0x000fd640 size=224 SMBIOS ptr=0x000fd610 table=0x000fd500 size=263 ACPI tables: RSDP=0x000fd4d0 RSDT=0x09ffd7b0 Scan for VGA option rom Running option rom at c000:0003 Turning on vga text mode console SeaBIOS (version 1.6.3)
Found 1 lpt ports Found 1 serial ports ATA controller 1 at 1f0/3f4/0 (irq 14 dev 9) ATA controller 2 at 170/374/0 (irq 15 dev 9) ata0-0: QEMU HARDDISK ATA-7 Hard-Disk (2014 MiBytes) Searching bootorder for: /pci@i0cf8/*@1,1/drive@0/disk@0 DVD/CD [ata1-0: QEMU DVD-ROM ATAPI-4 DVD/CD] Searching bootorder for: /pci@i0cf8/*@1,1/drive@1/disk@0 PS2 keyboard initialized All threads complete. Scan for option roms Running option rom at c900:0003 pmm call arg1=1 pmm call arg1=0 pmm call arg1=1 pmm call arg1=0 Searching bootorder for: /pci@i0cf8/*@3 Searching bootorder for: /rom@genroms/vapic.bin drive 0x000fd480: PCHS=4092/16/63 translation=large LCHS=1023/64/63 s=4124736 Running option rom at ca00:0003 ebda moved from 9fc00 to 9f400 Returned 53248 bytes of ZoneHigh e820 map has 7 items: 0: 0000000000000000 - 000000000009f400 = 1 RAM 1: 000000000009f400 - 00000000000a0000 = 2 RESERVED 2: 00000000000f0000 - 0000000000100000 = 2 RESERVED 3: 0000000000100000 - 0000000009ffd000 = 1 RAM 4: 0000000009ffd000 - 000000000a000000 = 2 RESERVED 5: 00000000feffc000 - 00000000ff000000 = 2 RESERVED 6: 00000000fffc0000 - 0000000100000000 = 2 RESERVED enter handle_19: NULL Booting from Hard Disk... Booting from 0000:7c00 pnp call arg1=5 pnp call arg1=40 pnp call arg1=0
########################## # after a BSD # boot from HDD, the menu appear with the No Error entry (3) selected and the pnp call arg1=5; close the window before time-out..
qemu-system-x86_64 -localtime -machine pc-0.12 -cpu pentium -m 160 -cdrom W98SEcdrom hdd2GoWIP -chardev stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios Start bios (version 1.6.3) Ram Size=0x0a000000 (0x0000000000000000 high) Relocating init from 0x000e3b20 to 0x09fe12e0 (size 60412) CPU Mhz=2795 === PCI bus & bridge init === PCI: pci_bios_init_bus_rec bus = 0x0 === PCI device probing === Found 6 PCI devices (max PCI bus is 00) === PCI new allocation pass #1 === PCI: check devices bus 0 === PCI new allocation pass #2 === PCI: init bases bus 0 (primary) type io max 100 sum 110 base c000 size 100: 1 bar(s), c000 -> c0ff size 10: 1 bar(s), c100 -> c10f type mem max 10000 sum 22000 base febd0000 size 10000: 2 bar(s), febd0000 -> febeffff size 1000: 2 bar(s), febf0000 -> febf1fff type prefmem max 2000000 sum 2000000 base fc000000 size 2000000: 1 bar(s), fc000000 -> fdffffff PCI: map device bus 0, bfd 0x0 PCI: map device bus 0, bfd 0x8 PCI: map device bus 0, bfd 0x9 bar 4, addr c100, size 10 [io] PCI: map device bus 0, bfd 0xb PCI: map device bus 0, bfd 0x10 bar 0, addr fc000000, size 2000000 [mem] bar 1, addr febf0000, size 1000 [mem] bar 6, addr febd0000, size 10000 [mem] PCI: map device bus 0, bfd 0x18 bar 0, addr c000, size 100 [io] bar 1, addr febf1000, size 100 [mem] bar 6, addr febe0000, size 10000 [mem] PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 PCI: bus=0 devfn=0x10: vendor_id=0x1013 device_id=0x00b8 PCI: bus=0 devfn=0x18: vendor_id=0x10ec device_id=0x8139 PIIX3/PIIX4 init: elcr=00 0c Found 1 cpu(s) max supported 1 cpu(s) MP table addr=0x000fd630 MPC table addr=0x000fd640 size=224 SMBIOS ptr=0x000fd610 table=0x000fd500 size=263 ACPI tables: RSDP=0x000fd4d0 RSDT=0x09ffd7b0 Scan for VGA option rom Running option rom at c000:0003 Turning on vga text mode console SeaBIOS (version 1.6.3)
Found 1 lpt ports Found 1 serial ports ATA controller 1 at 1f0/3f4/0 (irq 14 dev 9) ATA controller 2 at 170/374/0 (irq 15 dev 9) ata0-0: QEMU HARDDISK ATA-7 Hard-Disk (2014 MiBytes) Searching bootorder for: /pci@i0cf8/*@1,1/drive@0/disk@0 DVD/CD [ata1-0: QEMU DVD-ROM ATAPI-4 DVD/CD] Searching bootorder for: /pci@i0cf8/*@1,1/drive@1/disk@0 PS2 keyboard initialized All threads complete. Scan for option roms Running option rom at c900:0003 pmm call arg1=1 pmm call arg1=0 pmm call arg1=1 pmm call arg1=0 Searching bootorder for: /pci@i0cf8/*@3 Searching bootorder for: /rom@genroms/vapic.bin drive 0x000fd480: PCHS=4092/16/63 translation=large LCHS=1023/64/63 s=4124736 Running option rom at ca00:0003 ebda moved from 9fc00 to 9f400 Returned 53248 bytes of ZoneHigh e820 map has 7 items: 0: 0000000000000000 - 000000000009f400 = 1 RAM 1: 000000000009f400 - 00000000000a0000 = 2 RESERVED 2: 00000000000f0000 - 0000000000100000 = 2 RESERVED 3: 0000000000100000 - 0000000009ffd000 = 1 RAM 4: 0000000009ffd000 - 000000000a000000 = 2 RESERVED 5: 00000000feffc000 - 00000000ff000000 = 2 RESERVED 6: 00000000fffc0000 - 0000000100000000 = 2 RESERVED enter handle_19: NULL Booting from Hard Disk... Booting from 0000:7c00 pnp call arg1=5
########################## # after a BSD # boot from HDD, the menu appear with the No Error entry (3) selected and pnp call arg1=5, choose the Step by Step entry (5); the pnp call arg1=40 appears after saying Y to the DEVICE=C:\RMCD\ASPI2DOS.sys LINE OF CONFIG.SYS; WIN: No; > D:\install.exe; CPU spin, kill.
qemu-system-x86_64 -localtime -machine pc-0.12 -cpu pentium -m 160 -cdrom W98SEcdrom hdd2GoWIP -chardev stdio,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios Start bios (version 1.6.3) Ram Size=0x0a000000 (0x0000000000000000 high) Relocating init from 0x000e3b20 to 0x09fe12e0 (size 60412) CPU Mhz=2795 === PCI bus & bridge init === PCI: pci_bios_init_bus_rec bus = 0x0 === PCI device probing === Found 6 PCI devices (max PCI bus is 00) === PCI new allocation pass #1 === PCI: check devices bus 0 === PCI new allocation pass #2 === PCI: init bases bus 0 (primary) type io max 100 sum 110 base c000 size 100: 1 bar(s), c000 -> c0ff size 10: 1 bar(s), c100 -> c10f type mem max 10000 sum 22000 base febd0000 size 10000: 2 bar(s), febd0000 -> febeffff size 1000: 2 bar(s), febf0000 -> febf1fff type prefmem max 2000000 sum 2000000 base fc000000 size 2000000: 1 bar(s), fc000000 -> fdffffff PCI: map device bus 0, bfd 0x0 PCI: map device bus 0, bfd 0x8 PCI: map device bus 0, bfd 0x9 bar 4, addr c100, size 10 [io] PCI: map device bus 0, bfd 0xb PCI: map device bus 0, bfd 0x10 bar 0, addr fc000000, size 2000000 [mem] bar 1, addr febf0000, size 1000 [mem] bar 6, addr febd0000, size 10000 [mem] PCI: map device bus 0, bfd 0x18 bar 0, addr c000, size 100 [io] bar 1, addr febf1000, size 100 [mem] bar 6, addr febe0000, size 10000 [mem] PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 PCI: bus=0 devfn=0x10: vendor_id=0x1013 device_id=0x00b8 PCI: bus=0 devfn=0x18: vendor_id=0x10ec device_id=0x8139 PIIX3/PIIX4 init: elcr=00 0c Found 1 cpu(s) max supported 1 cpu(s) MP table addr=0x000fd630 MPC table addr=0x000fd640 size=224 SMBIOS ptr=0x000fd610 table=0x000fd500 size=263 ACPI tables: RSDP=0x000fd4d0 RSDT=0x09ffd7b0 Scan for VGA option rom Running option rom at c000:0003 Turning on vga text mode console SeaBIOS (version 1.6.3)
Found 1 lpt ports Found 1 serial ports ATA controller 1 at 1f0/3f4/0 (irq 14 dev 9) ATA controller 2 at 170/374/0 (irq 15 dev 9) ata0-0: QEMU HARDDISK ATA-7 Hard-Disk (2014 MiBytes) Searching bootorder for: /pci@i0cf8/*@1,1/drive@0/disk@0 DVD/CD [ata1-0: QEMU DVD-ROM ATAPI-4 DVD/CD] Searching bootorder for: /pci@i0cf8/*@1,1/drive@1/disk@0 PS2 keyboard initialized All threads complete. Scan for option roms Running option rom at c900:0003 pmm call arg1=1 pmm call arg1=0 pmm call arg1=1 pmm call arg1=0 Searching bootorder for: /pci@i0cf8/*@3 Searching bootorder for: /rom@genroms/vapic.bin drive 0x000fd480: PCHS=4092/16/63 translation=large LCHS=1023/64/63 s=4124736 Running option rom at ca00:0003 ebda moved from 9fc00 to 9f400 Returned 53248 bytes of ZoneHigh e820 map has 7 items: 0: 0000000000000000 - 000000000009f400 = 1 RAM 1: 000000000009f400 - 00000000000a0000 = 2 RESERVED 2: 00000000000f0000 - 0000000000100000 = 2 RESERVED 3: 0000000000100000 - 0000000009ffd000 = 1 RAM 4: 0000000009ffd000 - 000000000a000000 = 2 RESERVED 5: 00000000feffc000 - 00000000ff000000 = 2 RESERVED 6: 00000000fffc0000 - 0000000100000000 = 2 RESERVED enter handle_19: NULL Booting from Hard Disk... Booting from 0000:7c00 pnp call arg1=5 pnp call arg1=40 Process stopped