[OpenBIOS] Solaris 9: failed boot with strange device names

Mark Cave-Ayland mark.cave-ayland at siriusit.co.uk
Sun Aug 15 21:35:50 CEST 2010

Tarl Neustaedter wrote:

> There is an interpose missing in there...
> Ah, yes. The scsidisk.fth does an open-package of "disk-label" (found in 
> obp/pkg/boot/sunlabel.fth of the open-sourced openboot), which in turn 
> does an interpose of "ufs-file-system". The interpose means that 
> subsequent calls to open and any other functions get directed to the 
> interposing package, which can only get to the scsidisk package by 
> $call-parent.

So it was a hard-coded case within /packages/disk-label after all - that 
explains why I couldn't figure out what was going on. Sigh.

I added a quick bit of code in packages/sun-parts.c to detect this case, 
but was surprised to see that it wasn't getting triggered. Some further 
investigation shows that device strings of the form "disk,|foo|" are 
being rejected by the Forth in open-dev, i.e.

s" disk" open-dev u.  -> returns a valid ihandle
s" disk,|foo|" open-dev u. -> returns false

I'm guessing that we should simply just split on a ',' in the same way 
as we would do with a ':' if it were present, i.e. and pass the 
remainder of the string as the package argument?



Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
t: +44 870 608 0063

Sirius Labs: http://www.siriusit.co.uk/labs

More information about the OpenBIOS mailing list