Virtual OS/2 International Consumer Education
VOICE Home Page: http://www.os2voice.org
February 2004

Newsletter Index
< Previous Page | Next Page >
Feature Index

editor@os2voice.org


Bootable

By Doug Bissett © February 2004

Many people find a need to have an alternate boot system. In the past, it was easy to make the OS/2 utility diskettes, by simply running the utility that was supplied by IBM. Unfortunately, over time, the size of the files that are required to make that work, has increased to the point where there is not nearly enough room on the diskettes, and the build procedure fails. The BootOS2 package, by building a more customized set of boot diskettes, and compressing the files with LXLITE, managed to work, long after the utility quit working. Eventually, BootOS2 also had problems with the large files, which means that only those who are lucky enough to have a 2.88 MiB diskette drive, can still use diskettes as an alternate boot system.

Alternatives:
Okay, so diskettes are, generally out of the picture. That leaves us with the alternative of building, what is known as a "Maintenance partition" (this should be called "Maintenance volume", if you use an LVM based system). Well, IBM's Utility diskette thing doesn't do that, but BootOS2 can. One drawback to having a Maintenance partition, is that you need to allocate disk space to do it. That is not as much of a problem as it once was, because today's disks are huge. The other drawback, is that it is possible to have a problem, where you cannot boot anything, from the hard disk. What then? Well, you can always use the installation diskettes, or CD, to get to a command line, and fix things that way, but that isn't always the best way. It would be really nice, to have a bootable CD, that will help to overcome all of these restrictions.

As it happens, there is a tool, that will build either a Maintenance partition, or a bootAble CD, and, it works equally well with eComStation, and OS/2. Hayo Baan, has created bootAble, at:

http://www.xs4all.nl/~hrbaan/

Note: there is another package, called BOOTABLE.ZIP, at Hobbes. That package is used to create a bootable DOS diskette, using OS/2 to create it. Don't confuse the two.

The really interesting thing about bootAble, is that it will build a bootable CD, that will boot all the way to the WPS, so you can work in your normal way. It is not 100% complete, but you can do almost everything that you can do with a normal system. You can even include basic networking (Peer doesn't work, but you can do things with FTP, and Peer, probably, will work, if someone can figure out how to do it).

Many people look at bootAble, and give it up because it looks complicated. Well, in some ways it is complicated, so I will run through what you need to do to make it work. I will describe building a bootAble CD, using Chris Wohlgemuth's Audio CD Creator program, but RSJ, or even just using MKISOFS and CDRecord, will work just as well. I assume, that you have the appropriate CD writing software, that it works, and that you know how to use it, but don't let that stop you from reading the rest. Most of what I say here, will also apply to building a maintenance partition on your hard disk.

Setting up bootAble

First, download the bootAble program, and unzip it into a directory of your choice. There is no installer, you just run the program, from the command line. In the new directory, you will find an HTML file (READ THIS!), which is a user's guide, bootAble.cmd, which is the guts of the program, and a number of configuration files. The base configuration is in the bootAble.cfg file, and you may be tempted to just modify that, to suit your own system. Don't do that. What you should do, instead, is create your own configuration file. There is a sample file, called bootAble.myCfg, that demonstrates this approach, and I suggest that you leave that one alone too. I have two systems, and I have a need to update my boot CD for my Thinkpad, so I will build a CD to boot my Thinkpad. One complication, is, that I don't have a CD burner on that system. No problem, I have a LAN connection to my other system, that does have a burner.

Okay, how do I start? Well, what I do, is create a new configuration file, called bootAble.Thinkpad, and enter a suitable description:

/****************************************************************************/
/*                                                                          */
/* Configuration file for bootAble bootable image creation script           */
/*                                                                          */
/* Modifications for IBM Thinkpad                                           */
/*                                                                          */
/*                                                                          */
/****************************************************************************/

Note the comment structure of a REXX program. This whole thing is REXX, so if you know a little bit about REXX, this will make a lot of sense (on top of this, lines starting with a ';' are also regarded as comments in a configuration file). You can get a good idea about what is required, by inspecting the sample configuration files, but this is what I did:

First, look in the bootAble.cfg file. That has all of the required lines, along with descriptions of what the lines are for. What you want to do, is copy the lines that you want to change, into your own file (bootAble.Thinkpad, in my example). (My comments are displayed with a proportional font and are not part of the file. Follow the comments in bootAble.cfg, for more details.) The lines that I changed, or added, are:

****************************************************

/* Set OSBOOTDRIVE if not already set */
if varValue('OSBOOTDRIVE')='' then OSBOOTDRIVE=sysBootDrive()

Note the comment, then a command to determine what my boot drive is (I know that I could just hard code that, but then this would not be portable to other systems).

VIRTUALDRIVE='K:'

You need a virtual diskette drive, that is capable of emulating a 2.88 MiB diskette drive. In the case of my Thinkpad, there is no real diskette drive. I use the VFDISK package, from HOBBES, and it configures as drive K:, on my system.

WRITERDRIVE='E:\BOOTIMAGE'

This is the directory, where I will build the boot image. The directory must exist. This should point to the RSJ write drive address, if you use RSJ, or it should point to the volume where you wish to build a maintenance partition, if that is what you wish to do, or (as in my case) to the directory where you build the image for burning by cdrecord, or with Audio CD Creator.

RESERVEDRIVELETTER='I'

This is what I use on my system, to force the system to leave some disk addresses, between the hard disk, and my CD drive. It also pushes the VFDISK address away from the hard disk addresses. This line will be configured in the new CONFIG.SYS.
Note: The eComStation installer uses RESERVEDRIVELETTER=R, by default, which will make your CD drive be S:, and your VFDISK would, likely, be T:. Be sure to enter what you have, not what I say here.

CDROMDRIVE='J:'

This tells bootAble what address the CD drive will have. This may change, if you have two CD drives, but, almost always, it will be the first letter after what is defined in the RESERVEDRIVELETTER line.

CREATEBOOTCD='YES'

This tells bootAble, that I want to build a bootAble CD, rather than a maintenance partition.

FORMATMAINTENANCE='NO'

I put this in here, just in case I type something wrong. Hopefully, it will help to prevent accidents. Of course, if you are building a maintenance partition, and you want to format it, you would need to change this.
Note: bootAble v2.17 now includes this as default.

REXX='YES'

I want REXX support.

TWODISKBOOT='YES'

I use this, to emulate having two 2.88 MiB diskettes. In fact, one image is, probably, enough for this system, but other systems (especially those with both SCSI, and IDE, disks), will need this. I also include it to show how to do it.  To make this work, you will need the DaniBOOT package (put that into the \OS2\BOOT directory, on your hard disk, so that bootAble can find it).

CDRECORD='YES'

I will be using Audio CD Creator to do the CD burn, but that, in turn, actually uses MKISOFS and CDRecord, so this is 'YES'. This does, in fact, just tell bootAble to build an image of what will be on a boot CD, in a directory.

CDRECORDCLEANDIR='YES'

This cleans out the target directory, before a new build is started. I recommend doing this, so that old stuff doesn't get left sitting around. Of course, if you are using RSJ, you don't want this.

CDBOOTMENU='YES'

Uses Roman Stangel's CDBoot package, to ask if you should boot from the CD, or from the hard disk. This is not required, but it is handy, sometimes, and gives the end result a "professional" look.

CDBOOTMENUFILE='E:\utility\cdboot2\CDBoot.exe'

Tells bootAble, where to find the CDBoot program. (Change the paths etc. to match your system).

LXLITE='NO'

BootAble will compress the files, copied to the CD, using LXLITE, but I suggest not doing this, unless you need the extra space on the CD.

LXLITECOMMAND='E:\utility\lxLite\lxLite.exe'

Where to find the program.

PAUSEBEFOREBOOTIMAGE='YES'

This tells bootAble to pause, after building the diskette images, so you can inspect the results. Very useful, while you are getting it to work properly. Once you are comfortable, that the diskette images are being built properly, change this to 'NO', so you don't need to respond to it.

/* Verbose?                                                                 */
/*   0=No                                                                   */
/*   1=Progress messages                                                    */
/*   2=Progress messages (files copied)                                     */
/*   3=Progress messages and error output of commands                       */
/*   9=Progress messages and all command output                             */
VERBOSE=1

This tells bootAble to simply tell me what it is doing. If you are having problems, you can increase the verbosity, so that it will tell you more details. Note that I included the comments, because I may want to change this later.

/* Additional CONFIG.SYS lines, added at the end of the CONFIG.SYS file     */
/* Use the string variable CRLF between lines                               */
/* By default it changes the number of rows on the screen to 50             */
ADDITIONALCFG=varValue('ADDITIONALCFG')||CRLF||,
'CALL=mode.com co80,25'

By inspecting the bootAble.cfg file, you will see that the default is to produce a 50 line window, which works okay, on most systems, but it is not good on a Thinkpad. You can add more CONFIG.SYS lines, if you need them. Note the varValue(...) part,this makes sure anything specified in other configuration files gets added to, and is not overwritten. Unfortunately, these lines get added to the end of the CONFIG.SYS, so you may need to watch for lines that should come earlier, and manually move them, when the build is paused by using PAUSEBEFOREBOOTIMAGE='YES'. Note: Although the definition in the defaults file bootAble.cfg also uses the varValue approach, its content does not get added (again); default values are only used when no value has been defined in any configuration file.

WPS='YES'

Magic stuff here. This tells bootAble, that you want the CD to boot to the WPS. See bootAble.cfg, for more stuff, that is needed, but since it is already properly defined in the default config file, it is not required in this file.

VIDEODRIVER=2
VIDEORESOLUTION=3
VIDEOCOLORDEPTH=4

These lines define the desired video resolution. See the comments in bootAble.cfg, for more details. Here, I left out the comments, since it is unlikely that I will ever change this.

COUNTRY=001
KEYBOARD=US

The default for North America. Change this as required.

APM='YES'

Tells bootAble to install Advanced Power Management.

FLOPPY='NO'

Tells bootAble to install floppy drive support. My Thinkpad doesn't have one, so I say 'NO'.
NOTE: It seems logical, that if I don't have a floppy diskette drive, that I should disable that in my BIOS. DON'T DO THAT. If your BIOS doesn't support a floppy drive, you will be unable to boot from a CD, if it is using floppy emulation.

PPZIP='YES'

I do have a Parallel Port ZIP drive, so I need to install the driver, to be able to use it.

/* Latest IBM ATAPI driver (no need for IBMIDECD.FLT)?                      */
LATESTATAPI='YES'

After a certain level of the ATAPI driver, IBMIDECD.FLT is no longer required. I think all versions of MCP, and eCS, have this new driver, and it is available for others. READ the docs, to see if you need this.
Note however, that bootAble uses Daniela's drivers by default so this setting is not strictly necessary, unless you choose to use the IBM driver.

/* Number of SCSI adapters?                                                 */
SCSI=1
/* First SCSI card                                                          */
SCSIADDFILE.1=OSBOOTDRIVE'\os2\boot\SYM8XX.ADD'
SCSIOPTIONS.1='/V /!DM<0:6> /!SM<0:6>'

This entry is really for my other system, but I threw it in here, to show how to do it. I only use the SCSI adapter for my scanner.

HPFSAUTOCHECK='YES'

Tells bootAble to add the autocheck parameter to the HPFS driver line. I use 'YES', but 'NO' might be better, in some cases.

JFS='NO'

This would be 'YES', if you are using JFS.

RAMDISK='YES'
RAMDISKDRIVE='L:'

These lines tell bootAble to use a RAMDISK. I use RAMFS (at version 115, at the time of writing). This is required, if you wish to use WPS support. Of course, you also need enough memory to support using a RAMDISK. I use drive letter L: with my main system, so I make it L: here, to avoid confusion. Use whatever you normally use, or make it something reasonable.

USBOHCI=0
USBUHCI=1
USBKEYB='NO'
USBCOM='NO'
USBMOUSE='NO'
USBPRINTER='NO'
USBCDROM='NO'
USBSTORAGE='YES'

The appropriate support for USB.

NETWORKCARDFILE=OSBOOTDRIVE'\ibmcom\macs\e100b.os2'
TCPIP='YES'
TCPIPDHCP='YES'
TCPIPHOSTNAME='larry'
TCPIPDOMAINNAME='wanda'
NETBIOS='YES'
NETBIOSTCPIP='NO'

Okay, more magic. The above lines support basic networking over my LAN (I changed some parameters, since I don't really want the hackers to know what they might be looking for). You should change these entries, to more closely match your existing systems.

PARALLELPORTOPTIONS='/IRQ'

I use the /IRQ parameter on my printer port.

USBSTORAGEOPTIONS='/CDS:0 /FLOPPIES:0 /REMOVABLES:1'

I have one removable USB disk device (An 8 MiB IBM Memory key). This is the parameter, used on your BASEDEV=USBMSD.ADD line, in CONFIG.SYS.

/* Set EXTRADIRECTORIES to zero if not already set                     */
EXTRADIRECTORIES=ifClause(varValue('EXTRADIRECTORIES')<>'',EXTRADIRECTORIES,0)

More magic. Since I may want to add other config files, that may already contain "extra directories", or, maybe not, I need to initialize a counter, if it has not, yet, been initialized.

/* DFSEE extra directory                                                       */
EXTRADIRECTORIES=EXTRADIRECTORIES+1
EXTRADIRECTORY.EXTRADIRECTORIES='dfsee5'
EXTRADIRECTORYFILES.EXTRADIRECTORIES='E:\utility\dfsee5\*'
EXTRADIRECTORYADDTOPATHS.EXTRADIRECTORIES=''
EXTRADIRECTORYRECURSE.EXTRADIRECTORIES='YES'

I want DFSEE on my home built CD. I include the EXTRADIRECTORYRECURSE.EXTRADIRECTORIES='YES' line, since I have used the DFSEE functions to create some "base" files for future use with DFSEE, for each of my systems (see the DFSEE docs, about that).

/* BA2KWS extra directory                                                   */
EXTRADIRECTORIES=EXTRADIRECTORIES+1
EXTRADIRECTORY.EXTRADIRECTORIES='BA2KWS'
EXTRADIRECTORYFILES.EXTRADIRECTORIES='E:\BA2KWS\*'
EXTRADIRECTORYADDTOPATHS.EXTRADIRECTORIES='LIBPATH,PATH'
EXTRADIRECTORYRECURSE.EXTRADIRECTORIES='NO'

I also want BackAgain/2. I really should go to the effort of building an icon, to be included in the Programs folder, when I boot from the CD. See bootAble.norman, for a sample of what is required to do that.

***************************************************

Okay, that is the end of my bootAble.Thinkpad configuration file. It includes most of what I want, but there are three more things that I want to have on my CD. More magic. The other things that I want are included in the sample config files: bootAble.extra (extra files, that can be useful), bootAble.emx (EMX support), and bootAble.norman (Norman antivirus, which only runs at a command line, or as a VIO window, since I couldn't figure out how to get full support). Those config files can be included, along with the bootAble.Thinkpad configuration file, at build time (be sure to read what they have to say).

Now that I have my configuration files (You may need more things, and will, likely, need different parameters), all I need to do, is build the image, then burn it to CD (you may burn directly to CD, using MKISOFS, and CDRECORD, or RSJ. UDF might also work, but I have no way of trying that).

Building the image

This is quite easy. Simply run bootAble.cmd, with the appropriate parameters. The parameters tell it which configuration files to include. The base file (bootAble.cfg), defines the defaults in case other configuration files do not specify them, don't include that one separately. The build command, in this case would be:

BootAble.cmd bootAble.extra bootAble.emxrt bootAble.norman bootAble.Thinkpad

What you will see, is some information about what the program is doing, then it will pause (unless you turned that off), so you can see what was built on the diskette image (look in your virtual diskette drive). You should review the CONFIG.SYS that was built, to see if it looks like it got everything that you need. Then, after you continue, it will build a diskette image, using the SaveDSKF utility (part of the LoadDF package, from Hobbes). Following that, it will clear the virtual diskette, build the second diskette image, and pause again. After continuing, it will build the second diskette image, then add the rest of what you asked for, to the CD image. What you end up with, is a directory, with all of the things that need to be burned to CD, to make a bootAble CD. If you use RSJ, it should all be on the CD, or, if you build a maintenance partition, it should be ready to boot (you may need to add it to Boot Manager, using either FDISK, or LVM, before you can use it).

The next step, is to burn the CD (which I do from my other system). I will use Audio CD Creator to burn the CD, so use Create Data-CD to make a directory that can be used to write a CD, then, I simply copy the contents of the build directory into that directory (you can build the image in it, if it is convenient to do so, but, make sure there are no spaces, anywhere in the complete path to the image directory). Since this is to be a bootAble CD, I need to tell Audio CD Creator to build a bootAble CD. Click on the third icon, from the left (CD settings), and click Boot-CD. Everything else should be default. Write the CD, and test it. I do suggest using CD-RW media, until you get this working the way you want it to work.

You should be able to do this with RSJ, as well, by using the CDBoot command, to tell it to make a bootable CD. Using the direct CD write, using the RSJ output device, will build the CD, as the image is created (this is done, automatically, by bootAble). Of course, the same is true, if you build a maintenance partition. I also suggest, starting simple, to get it working. Then, add features, one at a time, so that it is easier to tell what to look for, if it doesn't work.

*****************************************************************

This is, of course, a specific case, and you will need to modify the configuration to match your own system. Follow the bootAble.cfg file, step by step, but stop at the section that says:

/****************************************************************************/
/**** Configuration (advanced) **********************************************/
/****************************************************************************/

(unless there is something specific that you need to do in there) and copy anything that you wish to change, into your own configuration file, then make the modification. Use comments (with the /* and */, or ";", delimiters), so you know what you are trying to do. If you get errors, inspect the configuration file for typing errors, and use the bootAble.cfg file, and the samples, as a guide to the proper format. One other thing to remember, is that the program will use the DPATH, as defined in your CONFIG.SYS, to search for various components, but you can also define a SEARCHPATH, to tell bootAble where to look for the files.

Results

There are many things that will work with this setup. I can run DFSEE, and BackAgain/2, by using the Drives object to navigate to the executable, then double click it. I can run NORMAN antivirus, from the command line, or from the icon, in the Programs folder (I suspect that it would work normally, if I could determine all of the required entries to put in all of the configuration files, but it would also need Java), and even Mozilla will work, but not properly (tested v 1.3.1). For some unknown reason, the default fonts, used by Mozilla in the menus, and in the windows, don't show up (I suspect that they are just not installed, but I have not been able to find out what is missing). Apparently, the author uses this package, to build a CD, that also contains his system backup, so he has configured his system, so that it has what he needs to do the restore. There are many ways to make use of this program, and you can contribute to the project, by submitting configuration files to the author, who will include them in the package (I contributed the NORMAN configuration file - get the newest one, that comes with v2.17a, or later, the older one doesn't work very well).

The results? Well, here is a screen shot of the Thinkpad, taken with PMView Pro 3.03, running an eComStation 1.14 system created by bootAble (who says eCS isn't OS/2 underneath?):

Screenshot
Thinkpad, booted from a bootAble CD

The hard disk is only accessed, when, and if, you specifically do something with it. In this case, I ran PMView from the hard disk, and saved the picture to the hard disk. I can do all of the good things, like run CHKDSK, or LVM, or edit CONFIG.SYS. I can also use FTP-PM, to access the FTP server on my main system. Note, that the FAT32 file system is installed as a default, so I can use the FAT32 drive, where I have Windows 98 installed.
Note: If you are using an LVM based system (WSEB, MCP, eCS), and boot the CD on a system that has not had the partition(s) converted to compatibility volumes, with drive letters, you will not be able to use the hard disk, in the normal manner, until you do that. Programs like DFSEE, and LVM, will do what they always do with a hard disk that has not been initialized with LVM. For more information about LVM, see:

Notes on using logical volumes and the Logical Volume Manager (LVM)

This is only a sample of what can be done. I expect that many more programs can be set up to work, once somebody figures it out, and makes a config file to do it. [Editor's note: The latest version comes with support for Acrobat Reader 3, PMView and Xworkplace - including German and Spanish NLS.]

References:

BootAble: http://www.xs4all.nl/%7Ehrbaan/
VFDISK: http://hobbes.nmsu.edu/pub/os2/system/drivers/filesys/vfdisk30.zip
CDBoot: http://hobbes.nmsu.edu/pub/os2/apps/mmedia/cd/cd-r/cdboot2v200.zip
LXLite: http://hobbes.nmsu.edu/pub/os2/util/archiver/lxlt133.zip
RAMFS: http://hobbes.nmsu.edu/pub/os2/system/drivers/filesys/ramfs115.zip
DaniBoot: http://hobbes.nmsu.edu/pub/os2/system/drivers/storage/daniboot102.zip
LoadDF: http://hobbes.nmsu.edu/pub/os2/util/disk/loaddf.zip
eComStation: http://www.ecomstation.com
Notes on using logical volumes and the Logical Volume Manager (LVM): http://www.tavi.co.uk/os2pages/lvm.html


Feature Index
editor@os2voice.org
< Previous Page | Newsletter Index | Next Page >
VOICE Home Page: http://www.os2voice.org