Experiment: Moving the OS/2 Directory Structure

Warning: This is an experiment. OS/2 and eComStation may became unstable and not all the tools had been tested.

This experiment is for the people that will like to move some directories that are installed by default on the root drive. I did this based on a suggestion to improve eCS user experience that I wrote back ago.

OS/2 and eComStation has the following directories installed on the root:


 * DMISL (IBM OS/2 DMTF Service Layer‎) - Success
 * IBMCOM - Success
 * IBMGSK (IBMGSK‎) - Success
 * IBMGSK40 - Success
 * IBMGSK50 - Success
 * IBMLAN - Success
 * LANGUAGE (Language Directory‎)  - Failure
 * MMOS2 - Failure
 * MPTN  - Success
 * MUGLIB - Success
 * PSFONTS - Success
 * TCPIP - Success
 * DESKTOP - Success
 * Maintenance Desktop - Success
 * SPOOL - Success
 * RPM/YUM - Success

This is an experiment running eComStation 2.1 on a Virtual Machine (vbox as host). So let's see what happens:

IBMGSK
IBMGSK is a set of libraries for RSA encription for some programs. It is hard to know if it is ok to move them since (as far as I know) they are only usefull for some programns like IBM Personal Communicator, IBM HTTP Server and maybe IBM DB2 on OS/2.

So moving it for example to \OS2\SYSTEM does not gives problem in this experiment.

Config.sys Changes:
 * LIBPATH=C:\OS2\SYSTEM\IBMGSK50\LIB;C:\OS2\SYSTEM\IBMGSK40\LIB;C:\OS2\SYSTEM\IBMGSK\LIB;
 * PATH=C:\OS2\SYSTEM\IBMGSK50\BIN;C:\OS2\SYSTEM\IBMGSK40\BIN;C:\OS2\SYSTEM\IBMGSK\BIN;
 * SET IKEYMAN40_HOME=C:\OS2\SYSTEM\IBMGSK40
 * SET IKEYMAN50_HOME=C:\OS2\SYSTEM\IBMGSK50
 * SET IKEYMAN_HOME=C:\OS2\SYSTEM\IBMGSK

Testing:
I have not tested if this component is working fine. It surely does not break OS/2 by moving it, but I can not be sure of the software that uses this libraries works.

DMISL
This directory which seems to be the IBM OS/2 DMTF Service Layer‎ and used by the "Problem Determination Tools", looks that there is not problematic to move. But I'm not a "Problem Determination Tools" expert.

It seems that C:\OS2\DMISL.EXE that keep running in the background is locking the "SLDB.DMI" file, so you can not move this one. And if you kill the DMISL.EXE process, it will load again.

The SLDB.DMI file can not be moved, but it will get created automatically on the next boot according the DMIPATH path location (config.sys). So on the next removed you can erase the almost empty C:\DMISL folder.

So moving it for example to \OS2\SYSTEM does not gives problem in this experiment.

Config.sys Changes:

 * SET DMIPATH=C:OS2\SYSTEM\DMISL\BIN

Testing:
I don't use the OS/2's "Problem Determination Tools", so I'm not sure about if it is working 100%. The SLDB.DMI got automatically created in the new location after loading.

LANGUAGE
The Language Directory‎ is required for UNICODE.SYS to work right, and UNICODE.SYS is required for JFS.IFS.

This directory seems to contain:
 * CODEPAGE: It seems to be some IBM character code pages for OS/2
 * KEYBOARD: Thre are .KBL files which seems to required to change the keyboard language.
 * LOCALE: It is empty!
 * FONT: It is empty!
 * Several languages folders - EN, ES, DA, etc: Which it seems to contains the DLL and help file on each language for IBM Enhanced Editor.

The config.sys statement is by default "SET ULSPATH=C:\LANGUAGE"

This directory is giving me some errors if I move it.

When "UNICODE.SYS" loads in the boot procedure it gives some errors that can not found the files if you moved.

Failure Reason
It seems that the driver UNICODE.SYS has a hardcoded path to the \LANGUAGE directory.

It was suggest that UNICODE.SYS can be changed with an HEX editor so you can move this directory. . It worked even that it is very limited to same characters size to don't break the UNICODE.SYS integrity.

IBMLAN
This is part of the IBM LAN Server, which is the thing that helps you connect to other OS/2 servers and clients to share files and services.

You can not move the IBMLAN folder if the following services are running: So, I moved some via the WPS, and I also moved the file (net.acc) booting eCS from command line mode.
 * PEER.EXE
 * VNRMINIT.EXE
 * WKSTA.EXE
 * WKSTAHLP.EXE
 * MSRV.EXE

Config.sys Changes

 * DEVICE=C:\OS2\SYSTEM\IBMLAN\NETPROG\RDRHELP.200
 * IFS=C:\OS2\SYSTEM\IBMLAN\NETPROG\NETWKSTA.200 /I:C:\OS2\SYSTEM\IBMLAN /N
 * DEVICE=C:\OS2\SYSTEM\IBMLAN\NETPROG\VNETAPI.OS2
 * LIBPATH=C:\OS2\SYSTEM\IBMLAN\NETLIB;
 * PATH=C:\OS2\SYSTEM\IBMLAN\NETPROG;
 * DPATH=C:\OS2\SYSTEM\IBMLAN\NETPROG;C:\OS2\SYSTEM\IBMLAN;
 * HELP=C:\OS2\SYSTEM\IBMLAN\NETPROG;
 * BOOKSHELF=C:\OS2\SYSTEM\IBMLAN\NETPROG;
 * SET NWDBPATH=C:\OS2\SYSTEM\IBMLAN\NETPROG
 * SET DLSINI=C:\OS2\SYSTEM\IBMLAN\NETPROG\NETGUI.INI
 * RUN=C:\OS2\SYSTEM\IBMLAN\NETPROG\LSDAEMON.EXE
 * RUN=C:\OS2\SYSTEM\IBMLAN\NETPROG\VNRMINIT.EXE

Startup
On the startup procedure on OS/2 it runs with the paramenter "START PEER".
 * C:\OS2\SYSTEM\IBMLAN\NETPROG\NETSTCMD.CMD

WPS
It is a good thing that the OS/2-eCS Desktop is intelligent and point the icons on the desktop to right places.



INI Files
The IBMLVL.INI file needs to be changed to: IBMLVL.INI -> IBM_LS -> PATH to C:\OS2\SYSTEM\IBMLAN

Check my other article Changing the content of a INI File.

Testing
Sadly, I'm no expert on this component, and I don't have several OS/2 machines sharing files with this functionality.

I made some basic "NET USE" commands, logged in without problems to the local machine.

NET START also worked: [C:\]net start Checking IP configuration ... These services are started: REQUESTER               MESSENGER                PEER The command completed successfully.

IBMCOM
The IBMCOM directory is very important since it has all the network adapters device drivers, protocols device drivers (like Netbios, TCPIP) and the software to install them and configure them on the system.

I got some problems to move the folder while OS/2 was running. I copied the content to \OS2\SYSTEM\ and changed the Config.sys. The OS/2 and network services runned fine, but I broke the GUI application.

C:\ibmcom\PROTOCOL\NBTCP.EXE is blocked but it can be copied to the new location.

Config.sys Changes

 * DEVICE=C:\OS2\SYSTEM\IBMCOM\PROTOCOL\LANPDD.OS2
 * DEVICE=C:\OS2\SYSTEM\IBMCOM\PROTOCOL\LANVDD.OS2
 * DEVICE=C:\OS2\SYSTEM\IBMCOM\LANMSGDD.OS2 /I:C:\OS2\SYSTEM\IBMCOM /S
 * DEVICE=C:\OS2\SYSTEM\IBMCOM\PROTMAN.OS2 /I:C:\OS2\SYSTEM\IBMCOM
 * DEVICE=C:\OS2\SYSTEM\IBMCOM\PROTOCOL\TCPBEUI.OS2
 * DEVICE=C:\OS2\SYSTEM\IBMCOM\PROTOCOL\NETBIOS.OS2
 * DEVICE=C:\OS2\SYSTEM\IBMCOM\MACS\PCNTND.OS2
 * LIBPATH=C:\OS2\SYSTEM\IBMCOM\DLL;
 * PATH=C:\OS2\SYSTEM\IBMCOM;
 * DPATH=C:\OS2\SYSTEM\IBMCOM;C:\OS2\SYSTEM\IBMCOM\MACS;
 * CALL=C:\OS2\SYSTEM\IBMCOM\PROTOCOL\NETBIND.EXE
 * RUN=C:\OS2\SYSTEM\IBMCOM\LANMSGEX.EXE
 * RUN=C:\OS2\SYSTEM\IBMCOM\PROTOCOL\NBTCP.EXE

Locked Files
Check out that to move the directory there are the following locked files:
 * tcpip32.dll
 * tcpmri.dll

NIF Files
I'm checking if in case of installing new network adapters and protocols, it will be required to change the .nif file point to the new path of the network adapter and protocols.

INI Files
The IBMLVL.INI file needs to be changed to: IBMLVL.INI -> IBM_LANX -> PATH to C:\OS2\SYSTEM\IBMCOM

Check my other article Changing the content of a INI File.

Testing
The MAC and protocols runs fine with Config.sys. The GUI tool (Adapters and Network) got broken, but was because the IBMLVL.INI file was not poiting the right path. Once it was updated it started working again.

I had been told that possible GenMAC may contain hardcoded path to system directories. I will need to check on that.

MUGLIB
MUGLIB from what I can see is the tools and libraries required to log on to a network machine with IBMLAN manager.

It seems that there is no major problem on moving it.

The following files are locked after boot:
 * muglrqst.exe
 * DLL\mailslot.dll
 * DLL\mug.dll
 * DLL\netapi.dll
 * DLL\mnetapi32.dll

Config.sys Changes.

 * LIBPATH=C:\OS2\SYSTEM\MUGLIB\DLL;
 * PATH=C:\OS2\SYSTEM\MUGLIB;
 * DPATH=C:\OS2\SYSTEM\MUGLIB;

INI Files
IBMLVL.INI (hidden on the C: root) has a reference to MUGLIB path. IBMLVL.INI -> IBM_UMP -> PATH



Testing
After moving it a run a "NET USE" that loaded the login window and I was able to login to the same computer.

MPTN
MPTN is a important part of the TCP/IP and networking feature of OS/2-eCS. It contains several protocols drivers and network executable programs (link ping.exe)

I was able to move it without any issue.

The followin process are running after boot:
 * dhcpcd.exe

Some locked files when trying to move it:
 * \BIN\cntrl.exe
 * \DLL\so32dll.dll
 * \DLL\tcp32.dll
 * \DLL\tcpip32.dd
 * \DLL\tcpmri.dll

Config.sys Changes

 * DEVICE=C:\OS2\SYSTEM\MPTN\PROTOCOL\SOCKETSK.SYS
 * DEVICE=C:\OS2\SYSTEM\MPTN\PROTOCOL\AFOS2.SYS
 * DEVICE=C:\OS2\SYSTEM\MPTN\PROTOCOL\AFINETK.SYS
 * REM DEVICE=C:\OS2\SYSTEM\MPTN\BIN\VDOSTCP.VDD
 * DEVICE=C:\OS2\SYSTEM\MPTN\PROTOCOL\FWIP.SYS
 * LIBPATH=C:\OS2\SYSTEM\MPTN\DLL;
 * PATH=C:\OS2\SYSTEM\MPTN\BIN;
 * DPATH=C:\OS2\SYSTEM\MPTN;
 * HELP=C:\OS2\SYSTEM\MPTN;C:\OS2\SYSTEM\MPTN\HELP;
 * SET NLSPATH=C:\OS2\SYSTEM\MPTN\MSG\NLS\%N;C:\TCPIP\msg\ENUS850\%N;
 * SET ETC=C:\OS2\SYSTEM\MPTN\ETC
 * RUN=C:\OS2\SYSTEM\MPTN\BIN\CNTRL.EXE
 * CALL=C:\OS2\CMD.EXE /Q /C C:\OS2\SYSTEM\MPTN\BIN\MPTSTART.CMD >NUL
 * REM RUN=C:\OS2\SYSTEM\MPTN\BIN\VDOSCTL.EXE

Script Changes
I changed "MPTSTART.CMD" to: @ECHO OFF IF NOT EXIST C:\OS2\SYSTEM\MPTN\BIN\SETUP.CMD GOTO NBSETUP INETWAIT 1>NUL IF ERRORLEVEL 1 GOTO END CALL C:\OS2\SYSTEM\MPTN\BIN\SETUP.CMD :NBSETUP IF NOT EXIST C:\OS2\SYSTEM\MPTN\BIN\NBSETUP.CMD GOTO END CALL C:\OS2\SYSTEM\MPTN\BIN\NBSETUP.CMD :END

Testing
I tested the GUI programs to check my assigned IP, plus some of the commands to test it was working.

TCPIP
This folder contains some important TCP/IP components and some other useless binaries from IBM's network on the 90's.

It seems that I was able to move it without any negative impact on the OS.

Config.sys changes

 * REM DEVICE=C:\OS2\SYSTEM\TCPIP\bin\vdostcp.sys
 * LIBPATH=C:\OS2\SYSTEM\TCPIP\DLL;
 * PATH=C:\OS2\SYSTEM\TCPIP\BIN;
 * HELP=C:\OS2\SYSTEM\TCPIP\HELP;
 * BOOKSHELF=C:\OS2\SYSTEM\TCPIP\HELP;
 * SET NLSPATH=C:\OS2\SYSTEM\MPTN\MSG\NLS\%N;C:\OS2\SYSTEM\TCPIP\msg\ENUS850\%N;

Scripts changes
tcpstart.cmd needs to be changed pointing to the new path.

Testing

 * Firefox keeps working :)
 * "TCP/IP Configuration" GUI keeps working.

PSFONTS
This directory contains the fonts used by the system

Moving this directory was interesting. If you just move it, it will break a lot things that uses the default OS/2-eCS font on the system.

So, to move it, first I uninstalled the fonts, moved the folder and reisntalled the fonts.

I did this by using the "Fonts" folder on the "System Setup". If you select all the fonts in PSFONTS you can right click them to uninstall them. After that I moved the older and drag and drop the font files on th3 font folder to install them again.

Here are Alex's Taylor comments about the PSFONTS directory:

''"OS/2 (i.e. Presentation Manager) doesn't care in the slightest what directory fonts are installed in, as the complete path to each font file is specificed in the PM_Fonts section of OS2.INI. You can install fonts to anywhere you like, even to multiple directories on multiple drives.

Now, some applications which want to do their own font lookups might default to looking in ?:\PSFONTS - for example I think Ghostscript and/or maybe gsview are by default configured to search for fonts in ?:\PSFONTS and a couple of other well-known paths, and don't use OS2.INI to search for fonts.

Some early and/or app-specific versions of fontconfig also defaulted to looking in ?:\PSFONTS, and I think one or two older versions of Java did as well. Fortunately, current fontconfig/mzfntcfgft versions are smart enough to check the INI file."''

INI Files
With the procedure I tried it was not necessary to change INI files, but just notice that fonts, once it get installed, it seems to be registered on OS2.INI OS2.INI -> PM_Fonts It list each font installed with the path stored on the field.

MMOS2
MMOS2 is the folder where the multimedia related support get stores. Audio drivers, codecs, video/audio playback software and sound/movies samples.

Moving this can break a lot of things.

INI Changes
OS2.INI OS2.INI -> CWMM

MMPM.INI MMPM.INI -> MMPM2_AlarmSounds (It has like ten values with paths to change)

MMPM2.INI MMPM2.INI -> systemvalued -> workpath

UNIMIXPM.INI UNIMIXPM.INI -> Program -> Name

Config.SYS Changes

 * DEVICE=C:\OS2\SYSTEM\MMOS2\ssmdd.sys /S:64 /P:64 /H:256 /Q:1024 /E:1024
 * DEVICE=C:\OS2\SYSTEM\MMOS2\r0stub.sys
 * DEVICE=C:\OS2\SYSTEM\MMOS2\MMPLAYER\midi.sys
 * DEVICE=C:\OS2\SYSTEM\MMOS2\vcshdd.sys
 * DEVICE=C:\OS2\SYSTEM\MMOS2\UNIAUD32.SYS
 * DEVICE=C:\OS2\SYSTEM\MMOS2\UNIAUD16.SYS /C
 * LIBPATH=C:\OS2\SYSTEM\MMOS2\DLL;C:\OS2\SYSTEM\MMOS2\FREEDB;
 * PATH=C:\OS2\SYSTEM\MMOS2\FREEDB;C:\OS2\SYSTEM\MMOS2;C:\OS2\SYSTEM\MMOS2\MMPLAYER;
 * DPATH=C:\OS2\SYSTEM\MMOS2;C:\OS2\SYSTEM\MMOS2\INSTALL;
 * HELP=C:\OS2\SYSTEM\MMOS2\HELP;
 * BOOKSHELF=C:\OS2\SYSTEM\MMOS2;
 * SET DSPPATH=C:\OS2\SYSTEM\MMOS2\DSP;
 * SET MMBASE=C:\OS2\SYSTEM\MMOS2;
 * RUN=C:\OS2\SYSTEM\MMOS2\mmfix.exe
 * RUN=C:\OS2\SYSTEM\MMOS2\mididmon.exe
 * RUN=C:\OS2\SYSTEM\MMOS2\mmhelpdd.exe
 * RUN=C:\OS2\SYSTEM\MMOS2\qrymmcd.exe

Failure
1.- CWMM seems to keep pointing to the original C:\MMOS2. This DLLs keeps pointing to the original location on the next reboot: - C:\MMOS2\MEDIAFLD\BIN\mediafld.dll - C:\MMOS2\MMCLASS\cwmm.dll - C:\MMOS2\MMCLASS\BIN\mmres_en.dll I still haven't found which INIs or where does it points to this DLLs.

2.- There used to be some audio problem with UniAud driver that made the sound to loop. It was fixed on eCS, but after moving MMOS2 the problem showed up again.

3.- On "System Setup" -> Sound, the sound schemes keeps pointing to the wrong location. There seems that I forgot to move the location from OS2SYS.INI.



Desktop
This is the directory that stores all the files you save on the WPS Desktop of eComStation. The Desktop folder was easy to move. With a Drag and Drop to the location you want to store it, seems to work fine.

I haven't found yet any software that breaks for doing this.

Changes on INI
On the OS2SYS.INI there is value thats point the desktop path, but when I moved, it pointed to the two paths:

OS2SYS.INI -> FolderWorkareaRunningObject



So I removed the old C:\Desktop location from that value.

Maintenance Desktop
The maintenance desktop is the desktop that is used when you boot in maintenance mode (Alt+F1 and after that F4).

To move the C:\MAINTENANCE DESKTOP directory I did something similar to the things I did with "Desktop". But this time I booted in Maintenane Mode and Drag And Dropped to the new location. On this case I moved it to C:\OS2\Maintenance Desktop

Changes on INI
On the INSTALL.INI there is value thats point the desktop path, but when I moved, it pointed to the two paths:

INSTALL.INI -> FolderWorkareaRunningObject



Spool
The spool is folder required for the printers.

I had changed the path of this folder on "System Setup->Spooler".



Changed on INIs
The Spooler path is also located on OS2SYS.INI

OS2SYS.INI -> PM_SPOOLER -> DIR



Moving UNIXROOT - RPM/YUM
If you are using RPM and YUM on OS/2-eCS you have the current directories on the root: This are the Linux FHS structure.
 * \var
 * \usr
 * \etc
 * \tmp

On this experiment I moved all this directories under C:\Programs\FHS. I just moved the directories, some files that were in use by the OS/2 did not get moved, but copied to the new location. After making the movement of the directories I changed the following things:

Changed on the Config.sys
LIBPATH=C:\Programs\FHS\usr\lib; PATH=C:\Programs\FHS\usr\sbin;C:\Programs\FHS\usr\bin; SET LOGFILES=C:\Programs\FHS\var\log RUN=C:\PROGRAMS\RSJCD\CDWFSD.EXE -p "C:/Programs/FHS/var/temp" -c20000 -b2048 -t2 -i3 -s0 SET TMP=C:\Programs\FHS\var\temp SET TEMP=C:\Programs\FHS\var\temp SET TMPDIR=C:\Programs\FHS\var\temp SET UNIXROOT=C:\Programs\FHS;

RPM
You need to update the "C:\Programs\FHS\tmp\yumbt\yum-console.cmd" script and the "Shadow" that calls it.

Update the "Shadow/Shortcut" for YUM Bootstrap Console:



Update the "C:\Programs\FHS\tmp\yumbt\yum-console.cmd" script: 'set UNIXROOT=C:\Programs\FHS' 'set PYTHONHOME=' 'set PYTHONPATH=C:\Programs\FHS\tmp\yumbt\usr\lib\python2.6;C:\Programs\FHS\tmp\yumbt\usr\share\yum-cli;C:\Programs\FHS\tmp\yumbt\usr\lib\python2.6\site-packages;C:\Programs\FHS\tmp\yumbt\usr\lib\python2.6\lib-dynload;' 'set BeginLIBPATH=C:\Programs\FHS\tmp\yumbt\usr\lib;C:\Programs\FHS\usr\lib;%beginlibpath%;' 'set PATH=C:\Programs\FHS\tmp\yumbt\usr\bin;C:\Programs\FHS\tmp\yumbt\bin;C:\Programs\FHS\usr\bin;%path%;' return

WarpIn Change
Warpin may break since it does not longer points to the connect WarpIn.log path.

Check WarpIn Preference and check the Log path:



Testing
I tested that the Qt applications were still working, since Qt4 was installed with RPM/YUM on this machine. I checked the paths of %TEMP%, %ETC%, %UNIXROOT%, %VAR% to be sure they are pointing to the right location. After that I run the YUM Bootstrap Console, tried commands like "yum list" and I installed Qt4 Creator with all its dependencies and it worked and was installed to the new location.

Config.x
Remember to update X:\OS2\BOOT\config.x with the new paths/libpats/run/etc. This is the config.sys file that loads when you boot OS/2-eCS in command line mode with Alt+F1 and F2 option.

Config.m
Remember to update X:\OS2\BOOT\config.m. This is the config.sys file for the "Maintenance Desktop" when you boot OS/2-eCS with Alt+F1 and F4 option.

Things that I will like to test

 * DOS/WIN16: I don't use DOS and Win16, so maybe it will be a good idea to check if something broke on that part.
 * I will like to test the PEER function, share files and printer with other OS/2 machine and connect a IBM LAN Domain server with OS/2, just to be sure that it keeps working.