VOGONS


First post, by Gopher666

User metadata
Rank Newbie
Rank
Newbie

Hello folks, getting some boot issues With NT on some old machine.

This OS is a weird beast. The way I usually install it to many retro PCs is the same vmware method, I attach a CF card with a USB reader to my vmware workstation, install the base system in seconds and then I move the CF to the target machine to continue it from there.

The problem is not with the installation itself (it would work in vmware and it would even work on most of the old machines) however not on the mentioned one with that error, the CF will just refuse to boot.

Here is what NT does on a 100% zeroed disk:

Disk /dev/sdc: 7.45 GiB, 8000110592 bytes, 15625216 sectors
Disk model: Compact Flash
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfe6715d4

Device Boot Start End Sectors Size Id Type
/dev/sdc1 * 62 2052075 2052014 1002M 7 HPFS/NTFS/exFAT

Here is a Win98 partitioning schema which works and boots on that machine:

Disk /dev/sdc: 7.45 GiB, 8000110592 bytes, 15625216 sectors
Disk model: Compact Flash
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device Boot Start End Sectors Size Id Type
/dev/sdc1 * 2048 1957535 1955488 954.8M c W95 FAT32 (LBA)

I believe that the issue is that the first partition is aligned by NT to start from sector 62.

If I try to manually create whether a new MSDOS mbr with FDISK and put a FAT16 or NTFS partition there the NT installer will act stupid. First of all it will always use FAT16 no matter what for formatting after that it does not get the boot code right because after the reboot the system will not boot.

Any ideas how to fix the alignment here?

Thanks.

Reply 1 of 3, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie

The formatting as FAT16 only to convert to NTFS on first boot was an issue even back then. I'm not sure why it was, but it got fixed (or the design limitation resolved) in Win2000

If someone is sufficiently motivated, the source code to atapi.sys (particularly the really ancient version that ships with stock NT4 with no service packs) is in the NT4 DDK and it's pretty idiosyncratic. It always uses CHS instead of LBA, for example (bit 6 of DriveSelect register is hardcoded to 0) so things could go weirdly once NT4 takes over your IDE disk controller from your BIOS, with it dropping to a less modern implementation of IDE than your BIOS has. But in all that maybe there is an explanation as to why 62 sectors. If you could dump the ATA IDENTIFY info for your disk (inside the VM's perspective I guess) that could help.

Reply 2 of 3, by Gopher666

User metadata
Rank Newbie
Rank
Newbie

Well there must be something else to it not just that. I did the same experiment with good old MSDOS 6.22 if you install it to zeroized disk you get:

Disk /dev/sdc: 7.45 GiB, 8000110592 bytes, 15625216 sectors
Disk model: Compact Flash
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device Boot Start End Sectors Size Id Type
/dev/sdc1 * 62 4180721 4180660 2G 6 FAT16

Same as NT starts on 62. Same result boots in vmware Missing operating system on the PC however with this I could play the game that I create a partition with fdisk before install.

Command (m for help): o
Created a new DOS (MBR) disklabel with disk identifier 0x559feaea.
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-15625215, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-15625215, default 15625215): +1000M
Hex code or alias (type L to list all): 06
Changed type of partition 'Linux' to 'FAT16'.

Command (m for help): w

So now it's aligned like that previous Win 98 was which boots on that PC.

Disk /dev/sdc: 7.45 GiB, 8000110592 bytes, 15625216 sectors
Disk model: Compact Flash
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x559feaea

Device Boot Start End Sectors Size Id Type
/dev/sdc1 * 2048 2050047 2048000 1000M 6 FAT16

I installed MSDOS 6.22 fine on this, guess what same result in Vmware it works flawlessly on the PC I get "Missing Operating System" again. So there must be something more to this not just where it starts.

Reply 3 of 3, by Gopher666

User metadata
Rank Newbie
Rank
Newbie

Fortunately the machine was able to USB boot so I eventually managed to install it with this trick:

1, Boot from the FreeDOS installer and quit right away
2, Manually create a FAT16 active primary partition on the disk (otherwise FreeDOS defaults to FAT32 and NT does not eat that)
3, Install full freedos
4, Take out the CFcard and put the Windows NT 4.0 Enterprise installer + LAN driver + VGA driver on the FAT16 dos partition
5, Boot into FreeDOS (For me it only even boots in safe mode on that box)
6, Install NT with winnt.exe /b