Port-vax archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

RE: installboot is broken



On Sunday, March 24, 2013 at 11:17 AM, Martin Husemann wrote:
> You made your point perfectly clear, however, I do not know the differences
> between the various boot details, so I don't know if the scheme used by
> installboot is wrong.
> 
> What it does:
> 
>  1) In block 0 create a struct vax_boot_block and fill in the magic needed.
>     This includes pointing at block 1 as start of the loader:
>         bb.bb_load = htole32(VAX_BOOT_LOAD);
>         bb.bb_entry = htole32(VAX_BOOT_ENTRY);
>  2) it writes all of xxboot (including the first sector, as created from
>      start.S) to the sectors starting at 1.
> 
> If the bb_load/bb_entry version does not work on all vaxes, and instead the
> full first sector (with patched in disklabel) is needed, this has to be an
> oversight during the conversion to single bootblock - easy to happen, as it 
> will
> only cause problems with brand new/zeroed disks, otherwise the old block 0
> will be preserved.
> 
> I'd be happy to fix it, if we have consensus here on what to do (and do
> testing on simh).

This issue CAN and SHOULD be fixed.  However, there is a fundamental chicken 
and egg problem here in that every available NetBSD vax ISO image going back to 
the earliest available (NetBSD 1.6.2) are all missing this boot block on that 
media.  Clearly no one has attempted to install any version of NetBSD on a 
legacy VAX (one which boots without the aid of a ROM based VMB).

This issue came to light due to efforts to use NetBSD with the latest simh's 
new VAX simulators (VAX 11/730, VAX 11/750 and VAX 8600/8650).  All of these 
systems use VMB to initiate the bootstrap process and since the disk being 
booted doesn't contain a Digitial ODS2 disk structure, they boot using they 
achieve a boot using the bootstrap code provide in sector 0 of the device being 
booted.  The systems with ROM based VMB have built in code in the ROM VMB to 
use the pointers describing the bootstrap location in sector 0 to directly load 
the rest of the bootstrap (usually from sectors 1 thru 13) and dispatch to 
that.  

The VAX 11/780 simulator has been available in simh for a long time and no one 
had ever tried to install any version of NetBSD on it, or they would have 
encountered this issue there as well...

I confirmed that a disk I had installed NetBSD 5.1 vax on a simh VAX 3900 
simulator (ROM based VMB) booted fine on the original 3900 simulator, but would 
not boot with any of the newer simulators which boot using VMB.  I dug around 
and ultimately found this difference in behavior for the ROM vs non ROM base 
VMB versions.

To avoid future strange questions from folks who may try to install any version 
of NetBSD or OpenBSD which all have this issue, I'm going to package the new 
simh simulators with a patched version of VMB.EXE that handles boot block 
booting the same way as the ROM based VMB systems.  This will mask this issue, 
for those using the simh simulators.  If after experiencing the smooth behavior 
using a simulator one of these users tries to translate that experience back to 
real hardware, they will have the issues I encountered.

- Mark




Home | Main Index | Thread Index | Old Index