[Simh] NetBSD related issues

Mark Pizzolato - Info Comm Mark at infocomm.com
Fri Apr 12 11:18:06 EDT 2013


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 directly 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




More information about the Simh mailing list