site logo  BootableJFS

HomePage | Categories |* BLOG *| RecentChanges | RecentlyCommented | Login/Register

Revision [1161]

Last edited on 2008-05-26 06:37:15 by MikeGreene
Additions:
My main point of curiosity is the operation of the os2ldr file and I found that it is hard to get far without understanding the steps getting to executing os2ldr. The point leading up to os2ldr is considered the "Black Box" because there are a number of ways to boot eCS-OS/2 for example FAT, IFS, or Remote IPL. The major issue is that the "Black Box" sets up the system and provides all [[MiscLdrNotes1 information os2ldr requires]].


Revision [1160]

Edited on 2008-05-26 06:21:18 by MikeGreene
Additions:
**Phase 3 -- The Partition Boot Block Plus Extra (micro-FSD).**
Deletions:
**Phase 3 -- The Partition Boot Block Plus Extra**


Revision [1159]

Edited on 2008-05-26 06:20:04 by MikeGreene
Additions:
This is a work in progress, subject to change daily. It is for my own information and if it helps or be an interest others then that would be a bonus.
In brief, control is passed from BIOS to the loaded MBR code at 07C0:0000. The code relocates itself to 07E0:0000, checks for a Boot Manager partition, and checks for a bootable partition. Once a bootable partition is found, the partition boot record or more correctly the BIOS parameter block (BPB) is loaded at 07C0:0000 and control is passed to it at 07C0:0000.
All disk access during this phase uses INT13 calls to interface with the drive. After loading the next module a far return to (calculated load segment):199C is performed. This code is placed in the partition when the sysinstx.com file is run against it. So, the sysinstx.com executable writes the partition sector/micro-FSD and os2boot.
- an error when performing the next module load (INT13 Ext) which results in an emission of DAP information, - SYS2027 - message, and the system hangs. Getting this error is an indication of a failed INT13 load from the procedure readdrive which is also used in Phase 3.
The module loaded in Phase 2 contains code to continue the boot process and the micro-FSD. Using the Bochs drive image, 20h sectors are loaded at 8800:0000 and the entry point is 8800:199C.
Deletions:
This is a work in progress, subject to change daily. It is for my own information and if it helps others then that would be a bonus.
In brief, control is passed from BIOS to the loaded MBR code at 07C0:0000. The code relocates itself to 07E0:0000, checks for a Boot Manager partition, and checks for a bootable partition. Once a bootable partition is found, the partition boot record (is this the correct terminology ?) is loaded at 07C0:0000 and control is passed to it at 07C0:0000.
All disk access during this phase uses INT13 calls to interface with the drive. After loading the next module a far return to (calculated load segment):199C is performed. I am unsure, but I do believe, this code is placed in the partition when the sysinstx.com file is run against it. So, the sysinstx.com executable writes the partition sector/micro-FSD and os2boot.
- an error when performing the next module load (INT13 Ext) which results in an emission of DAP information, - SYS2027 - message, and the system hangs.
I am almost certain the module loaded in Phase 2 is not os2boot. What I do know, using the Bochs drive is that 20h sectors are loaded at 8800:0000 and the entry point is 8800:199C. Using the Bochs drive image, the INT 13 load looks as though it reads 32 (20h) sectors starting at absolute sector 3F. If this is correct, it is the start of the current code (sector) of Phase 2 plus another 31 sectors at 8800:0000.


Revision [1150]

Edited on 2008-05-26 05:15:50 by MikeGreene
Additions:
==[[BootableJFSPartition Bootable JFS Bootsector Code (BPB)]]==
Deletions:
==[[BootableJFSPartition Bootable JFS Bootsector Code]]==


Revision [1149]

Edited on 2008-05-26 05:14:59 by MikeGreene
Additions:
Just for by own interest I pulled the MBR from my eCS 2.0 RC4 driving using [[http://www.dfsee.com/ DFSee]] and disassembled. What follows is the result and some comments from noted sources. Since I am not very good at reading decompiled code I went to the next level, trying to step through the boot using a MBR, BPB and os2boot running in [[http://bochs.sourceforge.net/ Bochs]] on my one of my Linux systems.
This is a work in progress, subject to change daily. It is for my own information and if it helps others then that would be a bonus.
After a bit of playing, I found that the load in Phase 2 does indeed reload the Partition Boot Block and an additional 31 sectors at 0x88000. Looking at the code and stepping through execution with Bochs, I have confirmed this to be correct.
I am starting to see the structure of the Phase 3 load and it does not seem as documented. I believe this module loads os2boot and it only contains the mini-file system. It next loads os2ldr, sets up the required structures and then jumps into os2ldr.
Deletions:
Just for by own interest I pulled the MBR from my eCS 2.0 RC4 driving using [[http://www.dfsee.com/ DFSee]] and disassembled. What follows is the result and some comments from noted sources.
Since I am not very good at reading decompiled code I went to the next level, trying to step through the boot using a MBR and os2boot running in [[http://bochs.sourceforge.net/ Bochs]] on my one of my Linux systems.
This is a work in progress, subject to change daily.
After a bit of playing, I found that the load in Phase 2 does indeed reload the BIOS parameter block and an additional 31 sectors at 0x88000. Looking at the code and stepping through execution with Bochs, I have confirmed this to be correct.
I am starting to see the structure of the Phase 3 load and it does not seem as documented. I believe this module loads os2boot and it only contains the mini-file system. It next loads os2ldr, sets up the required structures, and then jumps into os2ldr.


Revision [1148]

Edited on 2008-05-26 05:13:02 by MikeGreene
Additions:
After a bit of playing, I found that the load in Phase 2 does indeed reload the BIOS parameter block and an additional 31 sectors at 0x88000. Looking at the code and stepping through execution with Bochs, I have confirmed this to be correct.
I am starting to see the structure of the Phase 3 load and it does not seem as documented. I believe this module loads os2boot and it only contains the mini-file system. It next loads os2ldr, sets up the required structures, and then jumps into os2ldr.
Deletions:
After a bit of playing, I found that the load in Phase 2 does indeed reload the Partition Boot Block and an additional 31 sectors at 0x88000. Looking at the code and stepping through execution with Bochs, I have confirmed this to be correct.
I am starting to see the structure of the Phase 3 load and it does not seem as documented. I believe this module loads os2boot and it only contains the mini-file system. It next loads os2ldr, sets up the required structures and then jumps into os2ldr.


Revision [1147]

Edited on 2008-05-26 05:11:06 by MikeGreene
Additions:
All disk access during this phase uses INT13 calls to interface with the drive. After loading the next module a far return to (calculated load segment):199C is performed. I am unsure, but I do believe, this code is placed in the partition when the sysinstx.com file is run against it. So, the sysinstx.com executable writes the partition sector/micro-FSD and os2boot.
Deletions:
All disk access during this phase uses INT13 calls to interface with the drive. After loading the next module a far return to (calculated load segment):199C is performed. I am unsure, but I do believe, this code is placed in the partition when the sysinstx.com file is run against it. So, the sysinstx.com executable writes the partition sector and os2boot (BootableJFS version).


Revision [1129]

Edited on 2008-05-25 19:02:55 by MikeGreene
Additions:
==[[BootableJFSPartition Bootable JFS Bootsector Code]]==
==[[BootableJFSLoad Bootable JFS micro-FSD]]==
Deletions:
==[[BootableJFSPartition Bootable JFS Partition Boot Code]]==
==[[BootableJFSLoad Bootable JFS Loader]]==


Revision [1102]

Edited on 2008-05-21 17:30:25 by MikeGreene

No differences.

Revision [1101]

Edited on 2008-05-21 17:30:11 by MikeGreene
Additions:
===Changes===
21 May 2008:
I updated my Bochs image with the UNI os2ldr and os2krnl from the eCS RC4. These are not the latest but I can trace from boot through os2ldr. The file is 1.6 meg and unzips to 630 Meg and can be downloaded here: [[http://www.mgreene.org/pub/newdrive.zip newdrive.zip]].
**Note!!!** download [[http://www.dfsee.com/ DFSee]] iso and boot it as the CDROM to set the hard drive image active if it will not boot.


Revision [1087]

Edited on 2008-05-19 07:24:04 by MikeGreene
Additions:
==[[BootableJFSLVM LVM MBR Disassembled]]==
==[[BootableJFSPartition Bootable JFS Partition Boot Code]]==
Deletions:
===[[BootableJFSLVM LVM MBR Disassembled]]===
===[[BootableJFSPartition Bootable JFS Partition Boot Code]]===


Revision [1086]

Edited on 2008-05-19 07:23:23 by MikeGreene
Additions:
==[[BootableJFSLoad Bootable JFS Loader]]==
Deletions:
===[[BootableJFSLoad Bootable JFS Loader]]===


Revision [1085]

Edited on 2008-05-19 07:23:04 by MikeGreene
Additions:
===[[BootableJFSLoad Bootable JFS Loader]]===


Revision [1083]

Edited on 2008-05-18 20:56:14 by MikeGreene
Additions:
This code uses INT 12 to, in general, find the top of low memory. Next, the result (approx 639) has 54h subtracted, AND result with FFF0h, and then shifted left 6 bits. This will be the load segment for the next code file (ie calculated load segment). The Bochs drive returns 639 from the INT12 call, so the load segment is 8800h.
Deletions:
This code uses INT 12 to, in general, find the top of low memory. Next, the result (approx 639) has 54h subtracted and is then shifted left 6 bits. This will be the load segment for the next code file (ie calculated load segment). The Bochs drive returns 639 from the INT12 call, so the load segment is 8800h.


Revision [1082]

Edited on 2008-05-18 20:38:13 by MikeGreene
Additions:
In brief, control is passed from BIOS to the loaded MBR code at 07C0:0000. The code relocates itself to 07E0:0000, checks for a Boot Manager partition, and checks for a bootable partition. Once a bootable partition is found, the partition boot record (is this the correct terminology ?) is loaded at 07C0:0000 and control is passed to it at 07C0:0000.
Deletions:
In brief, control is passed from BIOS to the loaded MBR code at 07C0:0000. The code relocates itself to 7E00:0000, checks for a Boot Manager partition, and checks for a bootable partition. Once a bootable partition is found, the partition boot record (is this the correct terminology ?) is loaded at 07C0:0000 and control is passed to it at 07C0:0000.


Revision [1081]

Edited on 2008-05-18 20:26:44 by MikeGreene
Additions:
I'm going to post my notes to the blog, link at top of the page.


Revision [1080]

Edited on 2008-05-18 19:08:39 by MikeGreene
Additions:
I am starting to see the structure of the Phase 3 load and it does not seem as documented. I believe this module loads os2boot and it only contains the mini-file system. It next loads os2ldr, sets up the required structures and then jumps into os2ldr.


Revision [1079]

Edited on 2008-05-18 08:24:08 by MikeGreene
Additions:
**Phase 3 -- The Partition Boot Block Plus Extra**
After a bit of playing, I found that the load in Phase 2 does indeed reload the Partition Boot Block and an additional 31 sectors at 0x88000. Looking at the code and stepping through execution with Bochs, I have confirmed this to be correct.


Revision [1078]

Edited on 2008-05-18 07:36:13 by MikeGreene
Additions:
I am almost certain the module loaded in Phase 2 is not os2boot. What I do know, using the Bochs drive is that 20h sectors are loaded at 8800:0000 and the entry point is 8800:199C. Using the Bochs drive image, the INT 13 load looks as though it reads 32 (20h) sectors starting at absolute sector 3F. If this is correct, it is the start of the current code (sector) of Phase 2 plus another 31 sectors at 8800:0000.
Deletions:
I am almost certain the module loaded in Phase 2 is not os2boot. What I do know, using the Bochs drive is that 20h sectors are loaded at 8800:0000 and the entry point is 8800:199C.


Revision [1077]

The oldest known version of this page was created on 2008-05-17 19:36:35 by MikeGreene
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.7
Page was generated in 0.3628 seconds