OS/2 eZine - http://www.os2ezine.com
Spacer
May 16, 2003
 
Bas Heijermans has been using computers for 24 years - since he was 12. Bas lives in Belgium and has used OS/2 since version 1.1. He ran The OS/2 BBS and was the Belgium OS/2 Fido moderator. IBM awarded him Official OS/2 Ambassidor in 1992 for his support efforts. Today he repairs computers for a living.

If you have a comment about the content of this article, please feel free to vent in the OS/2 eZine discussion forums.

There is also a Printer Friendly version of this page.



Spacer
Previous Article
Home
Next Article


Do you have an OS/2 product or service you'd like to advertise?


OS/2 is Boring, Jubilee XXL Edition, Number 10

It's celebration time!!! Thank you all for the emails I gotten over the last 9 issues encouraging me to continue my ongoing story about OS/2. In this issue I might make some mistakes, but give me some space as I'm going to try the biggest task I have undertaken so far. My idea is that I would like to explain OS/2 in lots of detail and in particular the config.sys. This baby is huge and many users struggle a lot with it, I'm trying to explain what every single line does in my own words and just taken from my memory, so don't kill me if I'm not 100% correct :-)

But first things first before I start on that task. (I sure hope Robert's mailbox is big enough to handle this one :-)


The Beginning of OS/2

I started to play with OS/2 as of version 1.1 and soon updated to 1.2 to get a graphical shell, the PMSHELL, but it wasn't the WPS as most call the shell now. In fact the shell is still PMSHELL and the WPS is an extension to it. But the first PMSHELL wasn't anything like what we have today, it looked and worked EXACTLY like the Windows 3.00 shell, but before Windows 3.00 was even released, you might think: 'How can that be?'

Windows was only in it's 1.xx or 2.xx stages and didn't even look anything like Windows 3.00. The reason for this is that Microsoft and IBM decided that OS/2 had to be the next Operating System, so OS/2 stands for Operating System number 2, as DOS was the first on their list. IBM and Microsoft (from now on called the dude's :-) found after a while that OS/2 wasn't selling as much as they hoped it would. So the dude's decided that people needed to get the feeling for an OS/2 GUI and needed to update their hardware. Most people where running 640KB/1MB on 8086 and 80286 processors in those day's, and thus the dudes thought it would be a good idea to create Windows 3.00 as an example of OS/2 to make everyone want to update their hardware so that they would be able to run OS/2 in a short period of time, this approach worked just like planned.

With one exception, Microsoft saw its chance and decided to push Windows as the solution and it was selling like hot dogs. IBM made its first mistake here, they started selling/pushing Windows 3.00 in the belief that they could sell OS/2 anyway, we are still at OS/2 1.xx here.

At the same time the dude's where working on OS/2 2.xx and 3.xx, IBM 2.00 and Microsoft 3.00, but Microsoft renamed 3.00 to NT and changed the code to Windows only code. IBM didn't care and released OS/2 2.00 with Windows 3.00 support, worked fine, but Microsoft wasn't happy and released 3.1 and made sure the software mostly wouldn't run on 3.00 to make OS/2 look bad. BTW OS/2 2.00 had the first signs of the current PMSHELL with WPS extensions!!

Microsoft had in fact released a lot of software for OS/2 1.xx and made sure that all text-mode apps would run under NT and they still do into Windows 2000!!

IBM updated 2.00 to 2.10 and made sure it would run 3.1 apps just as well, a smart move at the time. But OS/2 still had the problems with systems being too small to run OS/2 well, as most users used 4MB RAM machines and OS/2 really needed 8MB to be just as fast.

The OS/2 updates to 2.11 were only to speed OS/2 some more by moving more parts from 16 bit code to 32 bit code. Then IBM made the best move they ever could have done, they decided to lower the memory map to 4MB and make OS/2 go around Windows 3.1. This version sold like hot dogs for IBM, Microsoft got mad and quickly released Windows 3.11 and it didn't work anymore.

IBM released a patch and users where happy again. At this time OS/2 was gaining big market share as it had about 20 million users around the world when the Windows users were figured at about 80 million or such. Also MS promised IBM that they would release new OS/2 software as soon as it reached 10 million users, later they said the number needed to be 20 million. but as we all know Billy, he never kept his promise.

At the same time Windows 95 was upcoming and IBM made the next mistake, they decided to NOT support Windows 95 applications. This wouldn't have mattered one bit if IBM didn't make it's last and final mistake, IBM's PC department announced to stop shipping PC's with OS/2 preloaded and IBM publicly stated they had adopted Windows. And later IBM did this a few more times, in order to reduce the numbers of OS/2 users so they could kill it in the end.

I will stop here as most know the rest of OS/2, but lucky for us, IBM announced last year that they will never stop OS/2 support, whatever "never" may mean in IBM's words :-)

The later OS/2's 4.xx and up are not major upgrades like 3.00 was, and most know the differences.

Onto the next chapter.

Why is OS/2 sooooooo bloody fast?

I can sum this up in just one word: Assembler!

If you compare the speed of OS/2 to Windows, Unix or Linux, you will find that OS/2 will beat them all on every part.

To name them:

  • Speed, OS/2 is way faster then any of them.
  • Room needed on the harddisk, OS/2 is by far the smallest of them, it's still smaller then Windows 95, don't know for eCS but WSeB is :-)
  • Memory needed, OS/2 can run in as little as 3MB of ram (no not 4MB you only need that for the PMSHELL:-), OS/2 kills with 32MB ram.
  • Networking, no need to say more. It's the fastest server on the planet.
  • Applications are the smallest of them all as the PMSHELL provides all they need to look nice.
  • CPU needed, any simple Pentium or even 80386 will run it just fine. OS/2 runs top speed from PII-233. Try that with the others.
Only in the number of games is where Windows still wins, but OS/2 is a good second.

The reason for all these nice things is that most OS/2 parts are written in assembler, like the kernel and drivers, even major chunks of the PM are written in assembler. Most other OS'es are written in C/C++ and it shows, as they need far faster CPU's and way more memory.

Assembler is the programming language that comes closest to native machine code as you can get, and thus it's very compact and above all the fastest you can have. The problem with assembler is that it's not very portable, just because of this problem, OS/2 on the PowerPC never came off the ground and OS/2 might never be ported to 64-bit either.

Not that this matters a lot as OS/2 has some unique stuff that no other OS has, like the 4GB limit on 32-bit, OS/2 has this too, but not like other OS'es, as OS/2 can use 4GB for every process you start. And you can start 65535 of these, so if we take 3.5GB per process, OS/2 is able to handle 229372,5GB of software, I could be wrong here, but like I said before, I write this article just from memory and I haven't checked all the exact numbers :-)

I'm also pretty sure OS/2 will be pretty slow if you try such attempts:-) Not that anyone would ever run that much but one must set a limit somewhere.

Another thing is that OS/2 can run multiple CPU systems, IBM tested up to 256 CPU's with OS/2 but they said the theoretical limit is 1024, but this has never been tested either.

Because OS/2 is multithreaded from the ground up, unlike Linux, Unix and Windows, it will increase your power by about 90% when adding another CPU to your system, heck Windows slows down 10% if you use normal (=not threaded) software :-)

To end this, I don't even know if IBM themselves know the exact limits on OS/2's capabilities. So far I have seen only estimates and guesses. In short, OS/2 is the best designed and programmed OS ever if you forget about OS/400.

Onto the next chapter again.

The config.sys!

This is the part I wanted to write this time, but my mind started to rumble a little before I came to this part.

Let me make this clear, you can always type e.g. HELP IBM1S506.ADD and OS/2 will explain it to you, but it's not clear all the time what they mean, so I try to go over my config.sys in my own words the way I understand it. This may help new OS/2 users to understand OS/2 better.

Here it goes:

IFS=C:\OS2\JFS.IFS /AUTOCHECK:* /CACHE:4096
IFS=C:\OS2\HPFS.IFS /CACHE:2048 /CRECL:64 /AUTOCHECK:CDEXF

Lines that start with IFS are Installable File Systems, this means that they make OS/2 read e.g. HPFS, JFS, FAT32, EXT2 or whatever filesystem you install a driver for. The only exception is FAT12 and FAT16 they are seen automatically.

PROTSHELL=C:\OS2\PMSHELL.EXE

This is your basic shell, if you change it to e.g. CMD.EXE it will boot into a command prompt. They change this PMSHELL.EXE to PROGRAM.EXE in ATM's to boot the ATM software instead of the GUI we like to see.

SET USER_INI=C:\OS2\OS2.INI
SET SYSTEM_INI=C:\OS2\OS2SYS.INI

These two are what the registry is to windows, they keep all your GUI information and extra info that programs use in the WPS.

SET OS2_SHELL=C:\OS2\CMD.EXE

The first command-shell that must be loaded before the PMSHELL can be loaded

SET AUTOSTART=PROGRAMS,TASKLIST,FOLDERS,WARPCENTER

This line tells the WPS what parts should be started when the GUI is coming to life. As you can see I removed Connections, that will remove the attempt of OS/2 to recreate the connections, but can be very annoying from time to time. There are better ways to get them.

SET RUNWORKPLACE=C:\OS2\PMSHELL.EXE

Don't get confused here, as this isn't the PMSHELL, the PMSHELL.EXE has in fact 2 functions, the first is the PMSHELL basic GUI, when it is loaded a second time, it will give you the WPS extensions. You can put e.g. minishell.exe in here (found on hobbes) to give you a totally different graphical shell.

SET COMSPEC=C:\OS2\CMD.EXE

This is your command-prompt shell for OS/2 text mode, some like to use 4OS2.EXE instead of the default command-line. Like command.com for DOS.

SET RESTARTOBJECTS=STARTUPFOLDERSONLY

Starts only programs that you put in the startupfolder, very handy if you program and your software crashes when testing, as they would crash when you restart, this will avoid that.

LIBPATH=D:\HOMEPAGE;D:\NETSCAPE\PROGRAM;C:\IBMLAN\NETLIB;C:\MUGLIB\DLL;. C:\OS2\DLL;C:\MPTN\DLL;C:\IBMCOM\DLL;C:\IBMGSK50\LIB;C:\IBMGSK40\LIB C:\IBMGSK\LIB;C:\IBMI18N\DLL;C:\TCPIP\DLL;C:\OS2\MDOS;C:\;C:\OS2\APPS\DLL C:\JAVA131\JRE\DLL;C:\JAVA11\DLL;C:\IBMINST;D:\DRIVERS;D:\UTILS;D:\EMX\DLL D:\WEBMAIL2\DLL;C:\BA2PRO;

DLL find path.

SET PATH=C:\MPTN\BIN;C:\IBMCOM;D:\HOMEPAGE;C:\IBMGSK50\BIN;C:\IBMGSK40\BIN D:\NETSCAPE\PROGRAM;C:\IBMLAN\NETPROG;C:\MUGLIB;C:\IBMGSK\BIN;C:\TCPIP\BIN C:\OS2;C:\OS2\SYSTEM;C:\OS2\INSTALL;C:\;C:\OS2\MDOS;C:\OS2\APPS C:\JAVA131\JRE\BIN;C:\JAVA11\BIN;D:\DRIVERS;D:\UTILS;D:\EMX\BIN;C:\BA2PRO;

Executable find path.

SET DPATH=C:\MPTN\BIN;C:\MPTN;C:\IBMCOM;C:\IBMLAN\NETPROG;C:\IBMLAN C:\MUGLIB;C:\OS2;C:\OS2\SYSTEM;C:\OS2\INSTALL;C:\;C:\OS2\BITMAP;C:\OS2\MDOS C:\OS2\APPS;C:\IBMINST;D:\DRIVERS;D:\UTILS;

Data files find path.

SET PROMPT=$i[$p]

To set your command prompt, in OS/2 text mode.

SET HELP=C:\MPTN;C:\MPTN\HELP;D:\HOMEPAGE;C:\OS2\HELP;C:\IBMLAN\NETPROG C:\TCPIP\HELP;C:\BA2PRO;

Help find path.

PRIORITY_DISK_IO=NO

This one will let you set the priority to harddisk access, when set to yes it will give your foreground application a faster access to the harddisks, when set to NO all applications get equal speed on the harddisk.

FILES=40

Dos command, to determine the maximum number of open files for a DOS box.

BASEDEV=IBMKBD.SYS

Your keyboard driver, what would you do without it?

DEVICE=C:\OS2\BOOT\TESTCFG.SYS

Driver to test PnP cards for their addresses, also used by the hardware manager if I'm not mistaken.

DEVICE=C:\OS2\BOOT\DOS.SYS
DEVICE=C:\OS2\BOOT\PMDD.SYS

Drivers for the DOS environment.

COUNTRY=032,C:\OS2\SYSTEM\COUNTRY.SYS

Driver to tell your system in what country you live.

CODEPAGE=850,437

Sets the codepage for your applications.

DEVINFO=KBD,US,C:\OS2\KEYBOARD.DCP

Keyboard mapping, if set wrong, your keys won't be the right ones if you type :-)

SET TZ=CET-1CDT,3,-1,0,3600,10,-1,0,3600,3600

TimeZone setting, can be used by many applications, see the last article I wrote, OS/2 is boring Part 9.

BUFFERS=90

Buffers command for in the DOS box. This improves file access performance.

IOPL=YES

This one determines if your applications can access hardware directly or not, not much used anymore today.

REM DISKCACHE=64,LW,16

Cache for FAT partitions, rem'ed here to disable it as I don't use FAT partitions.

MAXWAIT=3

This setting determine the maximum time an application can hog the system before OS/2 takes over and reduces its priority. Can be handy to set lower on slow systems, but on modern systems it's not needed to change.

MEMMAN=SWAP,PROTECT
SWAPPATH=C:\OS2\SYSTEM 32000 32000

Both can be set to change the behavior of OS/2 swapping, I change the min-free and swap-amount to get a better performance.

BREAK=OFF

Turn CTRL-BREAK on or off for applications, not really needed but can be handy in some cases.

THREADS=1024

Maximum pre-allocated memory for a number off threads this case 1024, if set too low, it will slow your system down a lot.

PRINTMONBUFSIZE=1024,1024,1024

This sets your buffer for LPT1,LPT2,LPT3 - don't set it too low or it can slow your system down when printing.

SET KEYS=ON

Turns on additional editing keys at the command prompt.

SET BOOKSHELF=C:\IBMLAN\NETPROG;C:\OS2\BOOK;C:\BOOKS;C:\TCPIP\HELP;

Where online help books are located, you can find them in the info folder.

BASEDEV=TIMER0.SYS

This is the driver for the internal hardware timers. There are some replacements available that offer some additional features for joysticks and games.

RUN=C:\OS2\SYSTEM\LVMALERT.EXE

Support program for the Logical Volume Manger, introduced since WSeB.

RUN=C:\OS2\EXTENDFS.EXE *

As far as I know, used by LVM to enable you to increase JFS volumes if needed.

REM SET DELDIR=C:\DELETE,512;D:\DELETE,512;E:\DELETE,512;

Can be set to let you undelete files that are deleted by mistake. But this can slow down the system a lot, therefore this is set disabled by default.

BASEDEV=PRINT01.SYS

Your LPT printer driver, only used for local printing ports.

BASEDEV=IBM1FLPY.ADD

Your floppy driver.

BASEDEV=IBM1S506.ADD
REM BASEDEV=DaniS506.ADD

IDE drivers, can be replaced by Dani driver, found on Hobbes or in eCS.

I personally still prefer the original IBM driver for its proven stability.

BASEDEV=XDFLOPPY.FLT

Not used anymore, but is the floppy filter to allow you to read 1.8M formatted floppy's.

BASEDEV=I2OXPORT.SYS
BASEDEV=I2OSOSM.ADD

Drivers to allow programmers to write quickly drivers to access special cards, like A/D converters and such. Not much used, but some are very happy with them:-)

BASEDEV=OS2DASD.DMD

General storage manager, without it you can't access any storage device even if you have the correct driver install. This is the layer that most storage drivers talk to and it passes it to the rest of OS/2 and software.

BASEDEV=OS2LVM.DMD

Driver for LVM support, needed to handle the new LVM partition manager created partitions.

BASEDEV=CHKDSK.SYS Driver to speedup disk checking after a crash, without it, you wait a lot longer, used by HPFS. Also allows chkdsk to check volumes larger than 8G without running out of memory.

SET EPMPATH=C:\OS2\APPS;

Path used by the EPM editor.

PROTECTONLY=NO

If you set this one to YES, you have no more DOS or Windows support, it will only allow you to run OS/2 software. But there is a catch, if you disable it, most video drivers won't install properly anymore!!

SHELL=C:\OS2\MDOS\COMMAND.COM C:\OS2\MDOS

Command.com direction for DOS box.

FCBS=16,8

Dos setting for file control blocks (a precursor to file handles), not used much any more.

RMSIZE=640

Determine the size for the memory in the DOS box.

DEVICE=C:\OS2\MDOS\VEMM.SYS

Virtual EMM driver for the DOS box.

DOS=LOW,NOUMB

Can be set to HIGH,UMB to get more base memory in the DOS box, can be handy if you still use DOS programs.

DEVICE=C:\OS2\MDOS\VXMS.SYS /UMB
DEVICE=C:\OS2\MDOS\VDPMI.SYS
DEVICE=C:\OS2\MDOS\VDPX.SYS

More DOS box helper drivers.

BASEDEV=OS2SCSI.DMD

SCSI manager driver, without it, SCSI devices can't talk to OS/2.

BASEDEV=AIC7870.ADD

Adaptec 2940 series SCSI controller driver.

DEVICE=C:\OS2\BOOT\OS2CDROM.DMD /Q
IFS=C:\OS2\BOOT\CDFS.IFS /Q /W
DEVICE=C:\OS2\MDOS\VCDROM.SYS
BASEDEV=IBMATAPI.FLT

Drivers to give OS/2 IDE CDROM support, the CDFS.IFS driver is needed for any CDROM or you won't be able to read them.

DEVICE=C:\OS2\MDOS\VMOUSE.SYS

Dos box mouse support drivers.

DEVICE=C:\OS2\BOOT\POINTDD.SYS

Mouse pointer driver for the GUI.

DEVICE=C:\OS2\BOOT\MOUSE.SYS

The actual mouse driver for PS/2 and serial mice, can be some other driver for e.g. Logitech mice.

DEVICE=C:\OS2\BOOT\COM.SYS
DEVICE=C:\OS2\MDOS\VCOM.SYS

Serial port drivers, do you notice that the V starting version is always for the DOS box? [V is for Virtual - Ed.]

RUN=C:\OS2\SMSTART.EXE

Helper software for harddisk SMART monitoring.

SET CLASSPATH=C:\IBMGSK\CLASSES\SRIP.JAR;C:\IBMGSK\CLASSES\SGUIDE.ZIP C:\IBMGSK\CLASSES\CSSGKEY.JAR;C:\java11\lib\classes.zip;.\. C:\OS2\JAVAAPPS\LVMGUI.ZIP;C:\TCPIP\java;

Paths for Java libraries.

RUN=C:\OS2\SYSTEM\LOGDAEM.EXE
DEVICE=C:\OS2\LOG.SYS

Drivers to manage system and other logging facilities.

AUTOFAIL=YES

Very nice setting, as it will disable many FAIL screens, e.g. try to open the floppy when no disk is present. When not set you get a warning, when set it will just do nothing and go on.

SET SCUSEPRETTYCLOCK=ON

Gives you a nicer clock in the task-bar, as the default one is pretty ugly :-)

PAUSEONERROR=NO

Very handy for servers, as it will continue booting even when you have errors in the config.sys or drivers.

BASEDEV=USBUHCD.SYS
BASEDEV=USBD.SYS /REQ:USBUHCD$
DEVICE=C:\OS2\BOOT\USBPRT.SYS

USB drivers for OS/2, can be downloaded from IBM to support USB devices.

CLOCKSCALE=4

New setting, allows you to change the Kernel if I'm not mistaken, can speed up OS/2 a lot on faster CPU's!

EARLYMEMINIT=YES

New setting, will allow OS/2 to initialize all system memory before all drivers are loaded, beware - not all drivers like this. But can speed up the system a lot.

Man!! (Woman!!) my fingers hurt. This article is way too long already. but I'm still not finished just yet. Anyway, you might have noticed I skipped a lot of lines like VGA and network lines, but there are too many and mostly can't be altered anyway. My only goal was to give you some better understanding of how the OS/2 config.sys works, for me it's all common stuff, but very hard to explain exactly how it works. [See OS/2's online help for detailed info on most of these settings - Ed.] As I see pictures in my head about OS/2 and not the explanation, that makes it very hard to translate it into words. It's like riding a car, at first it's very hard, but later you do it without thinking what you do, try it yourself, drive your car and think what you do all the time, like first-timers, I bet you hit the first tree you come across :-)

Enough of this config.sys.next chapter.

And now, networking again? Yes again.

Here is how my server works, this is taken from a file called deamons.cmd (made that one up myself :-) I start this file from the Startup.cmd with the command: "Start deamons.cmd" If you don't have a startup.cmd, create one, as it will autostart as soon as the GUI is loaded.

inetcfg -s synattack 1
inetcfg -s syncookie 1
inetcfg -s keepalive 600
inetcfg -s ipforward 0

These first settings are to prevent hackers and speed up your OS/2 TCP/IP stack. [You need TCP/IP 4.1 or above for them to work - Ed.] It will prevent buffer overflows, if OS/2 can have such, but better safe then sorry:-) After there I start the rest of my server like this in the same deamons.cmd file:

d:
rem DHCP server
cd\dhcpserver
start "DHCP Server" /min dhcpsd
rem Name Cache server
start "Caching Nameserver" /min named
rem Web/2 server
cd\www-server
start "Web2 HTTP Server" web
rem FTP-server
cd\ftpserver
start "FTP Server" /min ftpd
rem Python Zoneedit client
cd\python
start "Zoneedit" /min nieuwip.cmd
rem MAIL Server
f:
cd\popserver
start "Weasel Mail Server" /min weasel
rem Webmail2
d:
cd\webmail2\webmanager
start /min webmanager
rem Squid Proxy server
cd\squid
start "Squid Proxy Server" /min squid2 -D
exit

This to give you an example of how I start my server, most stuff that you see started here has been discussed in my other OS/2 is Boring articles. Come to think of it, is it really Boring? Heck no! But I still like the title and I do like to tackle other OS'es a lot on the features they lack :-)

I have seen so far just 1 OS that can compete with OS/2 and that's Sun's Solaris - not on ease of use, but on speed and stability. I have an old SparcStation4 70MHz with 160MB ram here, and you won't believe how fast it is. Linux doesn't come close to it, nor does Windows. Sooooo slow are those. But then that old Sun machine can't run Windows nor OS/2, only Solaris or Linux.

Now I'm done, see you next time dudes. I hope you had fun reading this, if you came this far :-) Bye!

Previous Article
Home
Next Article

Copyright (C) 2003. All Rights Reserved.