Creating OS/2 2.11 boot diskettes with a bare but functional TCP/IP

I posted an article to Usenet's comp.os.os2.misc on August 11, 1994 that contained some instructions describing how to create an OS/2 boot diskette set with TCP/IP enabled. By the following morning I had received such favorable feedback that I edited the original article and packaged it for upload to ftp.cdrom.com and ftp-os2.nmsu.edu.

The boot disk set contains a very limited subset of the TCP/IP utilities--namely arp, rexec, ifconfig, route, and ping. This was all I needed. Other utilities (namely telnet) will probably need other DLLs from the TCP/IP kit. If you have the Developer's Toolkit you can run EXEHDR /V on the desired TCP/IP utilities and see what DLLs are required. Then add those DLLs to the third diskette of this set along with the TCP executables.

I have a laptop computer with OS/2 on it. Recently I moved the Windows stuff off the boot partition onto the second partition (for utilities in \windows\msapps and nowhere else). Since space is at a premium I wanted to decrease the size of the boot partition (since all the Windows stuff is on D: now) and increase the size of the second partition.
 * &#%^@ Microsoft Office which wants to dump 345932435 gigabytes of

My problem was how the heck to backup and restore this machine without reinstalling OS/2. Right now I use TCP/IP, rexec, and gtak to back up to a 5GB tape drive attached to my Sun server, so I thought I'd try to build a boot diskette set that would enable me to restore everything from a tape.

I was successful!

Disk 1 of the set is just a copy of disk 1 from the 2.11 service pak.

Disk 2 is a copy of disk 2 from the SP with the following files. You may need other files if you have SCSI peripherals or if your machine is a MicroChannel machine.  ansicall.dll     438   1-29-94   0:45 bkscalls.dll     401   1-29-94   0:46 bmscalls.dll     398   1-29-94   0:47 bvhinit.dll     9443   1-29-94   0:07 bvscalls.dll     454   1-29-94   0:49 clock01.sys     3619   1-29-94   2:18 cmd.exe        91136   1-29-94   2:29 config.sys       843   8-10-94  14:46 country.sys    25610   1-29-94   2:52 doscall1.dll   91402   2-02-94  23:01 harderr.exe    14824   1-29-94   0:53 hpfs.ifs      133698   1-28-94  23:23 ibm1flpy.add   28526   1-29-94   1:11 ibm1s506.add   22781   1-29-94   1:13 ibmint13.i13    9728   1-29-94   1:18 kbd01.sys      29525   1-29-94   2:49 kbdcalls.dll     858   1-29-94   1:00 keyboard.dcp    5177   1-29-94   2:45 moucalls.dll    1010   1-29-94   1:00 msg.dll          508   1-29-94   1:40 nampipes.dll    1024   1-29-94   1:40 nls.dll          466   1-29-94   1:39 npxemltr.dll   25280   1-29-94   3:12 os2char.dll    56080   1-29-94   0:52 os2dasd.dmd    33610   1-29-94   1:06 print01.sys     9134   1-29-94   3:17 quecalls.dll   15282   1-29-94   1:42 screen01.sys    6124   1-29-94   3:21 sesmgr.dll     32806   1-29-94   0:53 viocalls.dll    1825   1-29-94   0:52 vtbl850.dcp    10478   1-29-94   1:59 

Also, to make this work, you need to get TSHELL from an EWS site (ftp.cdrom.com will do). Put that on diskette 2, also.

tshell.exe     17547  12-13-93  17:33

I then took selected files from my TCP/IP installation and put them on the diskette. If you keep the same directory structure it makes things a lot clearer:

\ibmcom\protman.os2 \ibmcom\protocol.ini             <--- If you are running multiple requesters edit this file to contain only references to your network adapter and to TCP/IP. \ibmcom\macs\pe3ndis.os2         <--- This is my ethernet adapter driver. \ibmcom\macs\pe3os2v2.nif        <--- This is the NIF file for my                                       ethernet adapter. I don't know if                                      it's required. \ibmcom\protocol\lanpdd.os2 \ibmcom\protocol\lanvdd.os2 \ibmcom\protocol\netbind.exe \ibmcom\protocol\tcpip.nif \tcpip\bin\arp.exe \tcpip\bin\cntrl.exe \tcpip\bin\ifconfig.exe \tcpip\bin\ifndis.sys \tcpip\bin\inet.sys \tcpip\bin\ping.exe \tcpip\bin\rexec.exe \tcpip\bin\route.exe \tcpip\dll\so32dll.dll \tcpip\dll\tcp32dll.dll \tcpip\dll\tcpipdll.dll \tcpip\etc\hosts                 <--- To make things easier, edit this file and put IP->hostname mappings for the host from which you'll be restoring. \tcpip\etc\protocol              /__ These files are absolutely necessary. \tcpip\etc\services              \

Replace config.sys on disk 2 of the boot set with the following. Note if you are doing this for a microchannel machine or a machine with SCSI-based boot drive this is probably not correct--you will need to add the proper statements to get your machine to boot and make sure the proper files are on the diskette. Space is very tight and there's not much to delete. This is actually a hacked version of config.sys from SP disk 2, so if you have extra devices in your machine that's probably a good place to start.

 buffers=32 iopl=yes memman=noswap protshell=a:\tshell.exe set os2_shell=cmd.exe diskcache=64,LW protectonly=yes libpath=.;a:\;a:\os2\dll;a:\tcpip\dll; ifs=hpfs.ifs /c:64 pauseonerror=no codepage=850 devinfo=kbd,us,keyboard.dcp devinfo=scr,ega,vtbl850.dcp set path=.;a:\;a:\os2;a:\os2\system;a:\os2\install;a:\tcpip\bin; set dpath=.;a:\;a:\os2;a:\os2\system;a:\os2\install set keys=on basedev=print01.sys                    \ basedev=ibm1flpy.add                    >--- These files are different basedev=ibm1s506.add                   /     for a MicroChannel machine. basedev=ibmint13.i13 basedev=os2dasd.dmd device=a:\ibmcom\protman.os2 /i:a:\ibmcom SET ETC=a:\TCPIP\ETC SET TMP=a:\TCPIP\TMP DEVICE=a:\IBMCOM\PROTOCOL\LANPDD.OS2 DEVICE=a:\IBMCOM\PROTOCOL\LANVDD.OS2 RUN=A:\IBMCOM\PROTOCOL\NETBIND.EXE DEVICE=A:\tcpip\bin\INET.SYS             <-- Make sure the pathnames match DEVICE=A:\tcpip\bin\IFNDIS.SYS               the locations of ifndis and inet DEVICE=A:\IBMCOM\MACS\PE3NDIS.OS2        <-- Put your ethernet driver here. RUN=a:\TCPIP\BIN\CNTRL.EXE SET TZ=mst7                              <-- Put your timezone here. 

Now you should be able to boot your computer with disk 1 and disk 2, issue an 'ifconfig lan0 ' and a 'route add default 1'. Then you can issue a 'ping' to test to make sure networking is working.

The problem I ran into was that at this point there was no more room left on the diskette for 'tar.exe' from the gtak package, or for that matter format, fdisk, an editor, or anything else I would deem essential for an emergency boot diskette.

After a bit of thought I theorized that except for the TCP/IP DLLs, all of the system DLLs probably had been loaded into memory (since MEMMAN is NOSWAP), and would not need to be reloaded at any time. This meant that I could create a third diskette with all the necessary TCP utilities and DLLs as well as important stuff like 'sysinstx.com' and 'fdisk.com'.

So that's what I did, and here is the result. I duplicated the contents of the TCP/IP directories from disk 2, so they are only listed as a directory entry here.

 TCPIP             8-10-94   7:59 chkdsk.com     68656   1-29-94   2:16 cmd.exe        91136   1-29-94   2:29 <-- for TSHELL so you can start another session. fdisk.com     108196   2-11-94  17:27 format.com     66832   1-29-94   2:42 sysinstx.com   39472   1-28-94  22:02 t2.exe         10542  12-01-93  22:10 tar.exe       167476   2-24-93  20:30 tcpstart.cmd     130   8-11-94   7:51 <-- contains 'ifconfig' and 'route' commands to set up TCP/IP. thelp.hlp      14596  12-01-93  22:10 uhpfs.dll     181408   1-28-94  23:59 450,560 bytes free 

be bootable, OS/2 system files OS2BOOT, OS2KRNL, OS2LDR, OS2LDR.MSG, and (probably) OS2VER *must* be on the drive that is being designated bootable. Also UHPFS.DLL *must* be present on the floppy in drive A: if the future boot drive is HPFS. If either of these conditions are not satisfied, sysinstx just says "The format of the disk is HPFS. An internal error occurred." How's that for heart failure?
 * Note well** that for sysinstx.com to work and enable the system to

This means you should probably wait to make the partition bootable until after you have restored the data onto it.

Now all it takes is to change the current drive to the newly formatted partition and execute

rexec -b hostname "dd if=/dev/tapedrive" | tar -p -pp -xvf -

(you can include the proper blocksizes on the command line if you're not using the defaults)

An hour or so and one "sysinstx bootdrive:" later, you're up and running again, Desktop and all!

In some feedback to my original posting, Albert Crosby  observed

> I wonder if the SYSINSTX is necessary - I can format a new drive with > a FAT and a HPFS partition, get an archived os/2 install on the fat > partition, and unzip it on to the HPFS partition and have a working > system. Since your TAR is a backup of your boot drive on the same > format drive with the same letter, I expect you could skip the SYSINSTX.

You're mileage may vary, but I had the same experience he did. The first time I tested this process I was totally unable to get sysinstx to function, yet I could still boot my machine even after a repartition and reformat.

On one other occasion with a different machine, however, I was not able to boot without running sysinstx.

One more item: when using GTAK, make sure that you specify "-p -pp" on the command line both when backing up and restoring. This will make sure that all hidden and system files as well as extended attributes for all files are saved in the archive, and then restored properly.

I hope this helps some people. I had a lot of trouble with it, but trial and error and a good bit of banging my head against the wall prevailed.

If you have any questions about this procedure, feel free to email me at the address below.

| Charles R. (C. R.) Oldham | North Central Association              | | cro@socrates.ed.asu.edu or| Commission on Schools                  | | aocro@acvax.inre.asu.edu | Arizona State University, Box 873011, _ | | Voice: 602/965-8700      | Tempe, AZ 85287-3011                 X_>| | Fax:  602/965-9423       | #include "disclaimer.h"    <> |