[Toc][Index]

BIFS Boot Procedure

  
The following figure represents the major stages of the OS/2 Version 2.0 
BIFS boot procedure. 

-------------------------------------------------------------> time
    POST     BlackBox    OS2LDR     stage1     stage2      stage3
             (Micro                 OS2KRNL
                 FSD)


Figure 4-2. OS/2 Version 2.0 BIFS boot procedure   
The major difference between this boot procedure and the FAT boot 
procedure is that there is no assumption of booting off of disk. OS/2 
Version 2.0 does not define what should happen between when the POST code 
is run and when the OS2LDR program gains control. 
When OS2LDR receives control, it must be passed information about the 
current state of memory and pointers to the Open, Read, Close, and 
Terminate entry points of the micro-FSD. Included in the memory map 
information is the positions of the micro-FSD, mini-FSD, RIPL data, and 
the OS2LDR file itself. 
Note:   This interface is defined in a next section of this chapter. 
As with the FAT boot procedure, the OS/2 loader relocates itself to the 
top of low memory, and with the help of the micro-FSD, scans the root 
directory for the OS2KRNL file. After reading OS2KRNL into memory and 
applying the required fixups, control is transferred to the kernel. 
When OS2KRNL receives control, it goes through the same initialization as 
before (stage 1) with a couple of exceptions. The module loader is called 
to load the mini-FSD from its memory image stored by OS2LDR in high memory 
to its final location at the top of low memory. Also, the mini-FSD is 
called to read the base device drivers (one at a time) through the stage 1 
interfaces. 
Before any of the dynalinks are loaded, the mini-FSD will be linked into 
the IFS chain (it will be the only link in the chain) and asked to 
initialize through FS_INIT. The FS_INIT call marks the transition from 
stage 1 to stage 2. 
The dynalinks are then loaded using the stage 2 interfaces, followed by 
the device drivers and FSDs. 
The mini-FSD is required to support only a small number of the FSD system 
interfaces (the FS_xxxx calls). Therefore, the first FSD loaded must be 
the replacement for the mini-FSD. 
After the replacement FSD has been loaded, it is called at FS_INIT to 
initialize itself and take whatever action it needs to effect a smooth 
transition from the mini-FSD to the FSD. It then replaces the mini-FSD in 
the IFS chain, as well as in any kernel data structures which keep a 
handle to the FSD (for example, the SFT , VPB). This replacement marks the 
transition from stage 2 to stage 3. 
From this point on, the system continues normally. 

Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs