OS/4 is a research project intended to recreate the original kernel for the IBM Operating System/2. The main goal of the project is to make the system able to work on the PCs, that it is unable to work on with the original kernel.
Download the latest OS/4 kernel distribution zip file which is named like this: os2krnlSVNxxxx_unoff.zip, where xxxx is the SVN revision of the downloaded release and perform the HowTo from this archive.
The OS/4 distribution package includes a powerful kernel loader, which features loading OS/4 and OS/2 kernels, kernel selection menu, custom CONFIG.SYS files for each kernel.
OS/4 technical notes
Video bus bandwidth (VBB)
VBB is a factor which end users feel like speed of video system output. Everyone can check the value of VBB using a well known tool - SYSBENCH.
To have an acceptable VBB, the LFB (linear frame buffer) of video card has to be mapped with WC (write combine) type of caching.
x86 provides 2 ways of setting WC for memory regions (LFB is actually a memory region):
1) using MTRR registers. 2) using PAT extension.
OS/4 is using PAT to set WC for LFB. For this propose OS/4 offers new KEE entry: KernVMAlloc2 - the same as KernVMAlloc but with a new parameter - type of caching.
So we need to intercept all the requests for mapping LFB and route them to KernVMAlloc2 with an explicit indication of the type of caching (WC).
It appeared that OS/2 uses many different ways to map LFB:
- VMAN.DLL -> PMDD.SYS, SCREEN01.SYS
- DIVE.DLL -> SMMDD.SYS
- SNAP -> SDDHELP.SYS
- XFree86/OS2 - >xf86sup.sys
Thus solutions from OS/4 are:
- rewritten SCREEN$ and SINGLEQ$ (SCREEN03.SYS and PMDDk.SYS correspondingly).
- a patch for DIVE.DLL to call SCREEN03.SYS but not SMMDD.SYS.
- rewritten SDDHELP.SYS.
- not yet done (need rewrite of xf86sup.sys or caller in XFree86/OS2).
OS/4 Tested Hardware List
|Model||Reporter||Date of Report||Remarks|
|Asus P5B-Delux||OS4user||04/11/2015||everything works ok.|
|Tyan Toledo i3210W||OS4user||21/03/2015||everything works ok.|
|Gigabyte GA-B75M-D3V||Joseph||13/04/2015||sound card does not work ok|
|Asus P8Z77-MPRO||Joseph||13/04/2015||sound card does not work ok|
|Gigabyte GA-H61M-S2PV||Joseph||13/04/2015||sound card does not work ok|
|Gigabyte GA-EG41MF-US2H||Digi||14/04/2015||power button does not work, Shutdown from XCenter causes reboot.|
|Gigabyte GA-H61M-S2PV 1||Digi||14/04/2015||everything works ok|
|Lenovo ThinkPad T410||Sergey Posokhov||14/04/2105||everything works ok|
|Lenovo ThinkPad T61||Codex||14/04/2015||everything but /APIC|
|Gigabyte GA-F2A88X-D3H||ff4||27/06/2014||sddhelp.sys from os/4 needed|
|Asus P5E3 WS PRO||Igor Vaskov||15/04/2015||everything works ok|
|Asrock Q1900B-ITX||Igor Vaskov||15/04/2015||everything works ok|
|Gigabyte GA-B85M-D3V||Joseph||28/04/2015||sound card does not work ok|
|Asus F2 A55-M||MichelPB||20/04/2015||everything works ok|
|Asus M5A-99x EVO||MichelPB||03/12/2014||tested only|
|Asus M4A87Td/USB3||MichelPB||16/05/2015||everything works ok|
|IBM Thinkpad T23||Barbara||20/05/2015||everything works ok|
|VMWare vSphere 5.1 (ESXi)||Digi||23/06/2015||everything works ok.|
|Asrock A785GMH/128M||MichelPB||08/07/2015||everything works ok.|
|Gigabyte GA-A75M-S2V||MichelPB||27/08/2015||works ok(sound is not tested).|
|ECS KBN-I/2100||fighter4||16/12/2015||works ok(sound is not working).|
|ThinkPad X220i||Oxyd||17/07/2016||everything works ok.|
|Lenovo ThinkPad X61s||Barbara||06/09/2016||everything works ok.|
|Asrock X370 Professional Gaming with AMD Ryzen 1700X CPU||Yoda||26/06/2017||8 cores 16 threads working. No sound, no USB, no LAN/Wlan|
|GigaByte H110M-S2H||David McKenna||09/09/2017||Starting with 4974, everything works ok. Need acpi4.bpd. USB3 only.|
|IBM ThinkPad W530||TeLLie||10-04-2018||All works, except power-off doesn't work.|
|Dell XPS 630i||dryeo||25-04-2018||Desktop freezes with no mouse. CAD allows access to cmd prompt which works, including the mouse.|
|Lenovo ThinkPad T420i||Gabriele Gamba||26/04/2018||everything works but /APIC (works fine with acpi4.bpd) and power management (battery widget and power off)|
|Lenovo ThinkPad W500||Bernhard||04/05/2018||everything works except poweroff and some winos2 programs|
|HP Proliant ML110 G5 (Xeon X3330 quad-core, 8 GB RAM)||Gabriele Gamba||13/05/2018||everything works with acpi4.bpd except power off|
|ASUS M5A88-V EVO (FX-4300, 4 GB RAM)||Hermit||13/03/2020||4 cores working with acpi4.bpd, Not Working: USB 3.0, integrated network adapters|
|Lenovo ThinkPad W520||Bernhard||21/07/2020||everything is working; with new acpi4.bpd and new kernel also power off is working|
Frequently asked questions
|Q:||Can I use ACPI.PSD with the OS/4 kernel, and what version?|
|A:||Yes, you can. But with some restriction:
1) The latest supported version of ACPI.PSD is 3.23.01 2) ACPI.PSD has to be patched (the patch is available for 3.22.03, 3.22.06 and 3.23.01 versions of ACPI.PSD) 3) PSD= line has to contain a switch /ST=0 (for ex. PSD=ACPI.PSD /ST=0)
Compatibility with the latest ACPI.PSD can be easily reached if ACPI.PSD developers wish for it.
|Q:||How can I prevent the debug version of the kernel from jumping into KDB when some program traps?|
|A:||Put this in KDB.INI file in the root of your boot drive:
.b 115200t g g g g g ln k
|Q:||How can I get the kernel log if my test PC does not have a COM port? Can I use a USBCOM device?|
|A:||No, you cannot get a kernel log using a USBCOM device. For more information on getting the kernel log, please refer to the Troubleshooting/Getting the log section. (Note that this means that the debugee system should have a physical COM port. A terminal system, though, can work via USB-to-Serial converter. You can use a laptop without a COM port as a terminal. You will only need a USB port with a plugged-in USB-to-Serial converter, and plug a null-modem cable into it. Note that USB-to-Serial converters usually have only three wires, so you should disable HW flow control.)
If you encounter some error (trap or hang) during the boot, and you have no COM port, you can try redirecting log messages to screen. Just add dbport=0 to os2ldr.ini, instead of a COM port address, and you will see the log messages on the screen in yellow.
Also in case the system is successfully booted you can get the log by typing:
copy kernlog$ my_kernellog [enter]
|Q:||Can I edit config.sys (config.os4) on system boot?|
|A:||Yes, you can. Press Alt-E when you see boot menu, after menu selection you will go to config editor. Note that changes will affect the current boot only and will not be saved to the disk.|
|Q:||Why ACPI poweroff does not work on my machine with OS/4 kernel?|
|A:||Probably, the ACPI version acpi4.bpd reports differs from the version acpi32.dll requires. Some older acpi4.bpd versions reported the ACPI version 3.22. Newer ones report 3.23 and should work fine with acpi32.dll from ACPI.PSD v. 3.23.xx. Future acpi4.bpd should provide a way to set reported ACPICA version in an .INI file, or similar way. Also, don't forget to enable the Desktop->XShutdown->Power-off computer checkbox, plus choose here a poweroff via ACPI, instead of APM.|
|Q:||Should an XCenter widget that shows temperature work?|
|A:||Temperature widget should work. Though, there is an alternative temperature widget written by Andrey Vasilkin (aka Digi). It is supplied with System Load, but it supports Intel processors only.|
|Q:||Why does the battery widget show the status of the battery "E 3" ?|
|A:||A battery widget seems to use APM.ADD, which requires some ACPICA features that are missing from acpi4.bpd, so battery widget does not work.
If you need a battery widget use the older ver of ACPI.PSD/APM.ADD which is compatible with OS/4.
Getting the log
The traditional way of getting the kernel log (and the only way now to remotely debug it), is to connect a terminal (a PC) to the COM port. You will need a terminal program on the other side (I suggest using DTerm) set up to work on the speed of 115200 baud, bits 8n1 and no flow control.
If your debug PC (the one which kernel's log you want to get) doesn't have a COM port, then there's a note at the end of this section for you. If your debug PC has one COM port, it is likely to be the COM port number one and have the 0x3F8 address, so put this setting in the config section of \OS2LDR.INI:
If your PC has more than one COM port, ensure you're using the first one for debugging, or, if not, fix this, or set the proper address for the COM port you use, like 0xEC00 for second COM port (you can see the addresses in your BIOS, or you can use the OS/2 Hardware Manager for that).
Important thing: you should use the debug kernel to get the log.
This is already enough to get the kernel log, so you may just fire up the terminal program and load the debug kernel when you're all set up. Please note, that the log is big enough to not fit in the console window, so you would like to turn on the logging feature in your terminal program (Control-L in DTerm).
Additionally, if you have a full COM cable, you may try putting fullcable=1 in the config section of \OS2LDR.INI, and turning on the hardware flow control in the terminal program (Control-F in DTerm) -- it helps if you notice missing characters in the log.
Also, if you reported a bug, you may be asked to trap the system and enter some commands for the KDB into the terminal, and show your output to the kernel developer. For some KDB commands to work properly, you need the symbol files (at least of the kernel) to be loaded. The symbol files must be in the root of the boot drive, or in the same directory of the program the symbol file is generated for.
Getting the Log from Command line
If you are able to boot OS/2 with the OS/4 kernel you can also generate the log to a file with this command:
copy kernlog$ my.log
It will create the my.log file with the information.
Participating in testing
Testers are highly appreciated. By testing our kernel, you are helping the whole OS/2 community to make OS/2 runnable on every PC in the world. To begin testing, just take the latest debug kernel and try to run it on every PC you can see.
If you didn't run into problems, -- hooray! -- but if you did, that's why there is the #Troubleshooting section...
Getting the binary distributions
The latest kernel distribution should reside on OS/4.
You should find there a ZIP file in the root, starting with os2krnlSVN.
Resources on the WWW
 is an official HTTP server, where you can get the latest OS/4 kernel releases and some useful utilities.
 is a thread on the OS2World forum for technical support.
 is an IRC channel where you can get support.
 is a thread on the OS2World forum about OS/4.
The most easy way to contact OS/4 Team is to join the #os2russian IRC channel on the original EFNet network.
Most of the dialogues in the IRC channel, RU/2 forum are performed in Russian, but if you jump there in English, you will get a conversation.
Also there is a thread in the OS2World forum (which is in English), where you can get support, too.