I've seen the topic of replacing the OS/2 kernel come and go over the years, never really making any progress. Everyone has a different opinion, and few seem to understand what a kernel really does.
The level of interest in replacing the OS/2 kernel seems to be fairly high, yet the willingness to actually do anything seems to be zero.
As I am also in this category, I have been thinking about a way to replace the kernel without writing an entire operating system. This is what I've come up with:
If I remember correctly, DOSCALLS.DLL is pretty much the main interface between the kernel and applications (or drivers, I think). There are others, obviously, but my intentions here are to give a general perspective of an idea - not a roadmap.
If someone were to write a new DOSCALLS.DLL which could interface between OS/2 programs (and maybe drivers) and SOME OTHER KERNEL, one should be able to run OS/2 applications (to some degree) with a different kernel.
The entry points of DOSCALLS.DLL are well documented, and a lot of the OS/2 API calls themselves have documented linux replacements (thanks to IBM).
The big picture looks like this:
If the core OS/2 subsystems are mapped to a different kernel properly, you should be able to run OS/2 on top of another kernel. Additionally, since the core components would (hopefully) open source, new functionallity could be provided. This gives you the ability to take advantage of new drivers from the "stolen" kernel, as well as allow us to continue to run what it is we all desire - OS/2. Way in the future, it could be possible to eventually replace all of the original OS/2 subsystems with new components without having to start with nothing.
This would require someone to already have OS/2, but I don't think that's really the biggest problem at the moment. This is not an easy task, but it isn't quite as difficult as rewriting everything at once. In this model, one could slowly relpace legacy components over time.
Short runtime example if using a linux kernel:
* Kernel decompresses and initializes.
* After mounting the root device, linux normally runs initd.
* initd is replaced with the new OS/2 subsystem
* The new OS/2 subsystem loads the required files, and provides the proper translation passthtroughs to simulate a "normal" OS/2 environment. This could be controlled by a config.sys variant.
* After initialization is complete, you are essentially running OS/2. The only outward sign that the kernel has changed is what happened during the boot cycle.
The level of interest in replacing the OS/2 kernel seems to be fairly high, yet the willingness to actually do anything seems to be zero.
As I am also in this category, I have been thinking about a way to replace the kernel without writing an entire operating system. This is what I've come up with:
If I remember correctly, DOSCALLS.DLL is pretty much the main interface between the kernel and applications (or drivers, I think). There are others, obviously, but my intentions here are to give a general perspective of an idea - not a roadmap.
If someone were to write a new DOSCALLS.DLL which could interface between OS/2 programs (and maybe drivers) and SOME OTHER KERNEL, one should be able to run OS/2 applications (to some degree) with a different kernel.
The entry points of DOSCALLS.DLL are well documented, and a lot of the OS/2 API calls themselves have documented linux replacements (thanks to IBM).
The big picture looks like this:
If the core OS/2 subsystems are mapped to a different kernel properly, you should be able to run OS/2 on top of another kernel. Additionally, since the core components would (hopefully) open source, new functionallity could be provided. This gives you the ability to take advantage of new drivers from the "stolen" kernel, as well as allow us to continue to run what it is we all desire - OS/2. Way in the future, it could be possible to eventually replace all of the original OS/2 subsystems with new components without having to start with nothing.
This would require someone to already have OS/2, but I don't think that's really the biggest problem at the moment. This is not an easy task, but it isn't quite as difficult as rewriting everything at once. In this model, one could slowly relpace legacy components over time.
Short runtime example if using a linux kernel:
* Kernel decompresses and initializes.
* After mounting the root device, linux normally runs initd.
* initd is replaced with the new OS/2 subsystem
* The new OS/2 subsystem loads the required files, and provides the proper translation passthtroughs to simulate a "normal" OS/2 environment. This could be controlled by a config.sys variant.
* After initialization is complete, you are essentially running OS/2. The only outward sign that the kernel has changed is what happened during the boot cycle.