Hi Felix,

On April 12, 2013 at 12:03 AM, Felix Deichmann wrote:
> I'm running a NetBSD 6.0.1 amd64 host with SIMH VAX 3.9-0 (and "4.0 Beta"
> later), built it myself and not from pkgsrc.
> The guest is NetBSD 6.0.1 vax (please do not ask why I do this...).

Using NetBSD as a guest OS will work fine while using the VAX (MicroVAX3900) 
simulator, however if you try to use any released versions of NetBSD on the 
VAX730, VAX750, VAX780 or VAX8600 simulators you run into a problem booting the 
NetBSD install CD and if you managed to get past that, you'd have problems 
booting any disk you installed the NetBSD operating system on.

The booting problem has been identified as an oversight made when some 
extensions were added to the NetBSD (and possibly OpenBSD) OS to add support 
for up to 16 disk partitions.  When this was added to NetBSD, testing was only 
performed on the hardware which the developers had at their disposal at the 
time.  All test hardware was one MicroVAX system or another.  The issue is due 
to a change made in the MicroVAX boot code when booting from disks which 
perform a Boot Block boot.  MicroVAX systems (everything from the MicroVAX I 
onward) have a version of the VAX bootstrap program VMB which runs from ROM.  
All earlier VAX systems use a version of VMB which is loaded from 'console 
media'.  Somehow, the engineers who wrote the ROM based VMB versions changed 
the details of how they implemented a Boot Block operating system boot.  With 
the VMB in ROM based systems, certain fields in sector 0 point at the location 
and starting address of the operating system boot strap code.  The ROM code dir
 ectly loads the code which these fields point at and directly starts 
execution.  On the older systems, which use VMB.EXE loaded from alternate 
media, support exists for Boot Block booting (by setting Bit 3 in R5 when VMB 
is started).  This boot block support is different.  VMB.EXE reads in sector 0 
and starts execution at offset 2 in the sector which was read.  The code in 
Ultrix boot blocks and much older BSD boot blocks runs and loads the rest of 
the operating system boot block directly.  The oversight that was made when 
support for 16 partitions was added was that the code which previously was 
located in sector 0 along with the partition data structures had been removed, 
the only information present in the revised boot block are the pointers to the 
rest of the operating system boot strap.  

The folks doing the vax port of NetBSD (Martin Husemann actually) have fixed 
this issue and it will be part of future NetBSD releases.

Meanwhile, we've got CD images for installing all of the prior versions of 
NetBSD still available and none of these will boot with the newly available 
VAX730, VAX750, VAX780 or VAX8600 simulators.  To solve this problem (and avoid 
repeated strange failure questions here on the simh list), simh will include a 
patched version of VMB.EXE which behaves like the ROM VMB versions when booting 
disks which boot via a Boot Block boot mechanism and will boot normally for all 
other operating systems.  This patched version of VMB.EXE is available in a 
different branch no the github respository.  The separate branch was created to 
avoid masking the problem while the NetBSD folks were fixing the base issue.  
That branch will be merged into the master branch soon, but folks who want to 
try NetBSD now on the systems which boot using VMB.EXE can get it at 
https://github.com/simh/simh/archive/VAX-11-BootBlock-Fixup.zip

Thanks.

- Mark Pizzolato

_______________________________________________
Simh mailing list
[email protected]
http://mailman.trailing-edge.com/mailman/listinfo/simh

Reply via email to