Multiboot WorkAround for Win98/Fat32 Swap Drive - IDE controller (dual fifo) Problem
----------------------------------------------
Author's Note:
 
"Ever found an article in the internet regarding adding a Win98 (one dedicated harddisk) in a multiboot system." One of my first longest original idea article. All rights reserved. All trademarks here are owned by their own respective companies. Compressed and reformatted to a one-page mail!
 
This article can be downloaded here.
----------------------------------------------

INTRODUCTION:

Multibooting, ideally, is better-off done on a single hdisk. Specially, when you want to include any of those Micro$oft's Win9x OSes. Why so?

Only Micro$oft's OS are the ones which think that they are the center of the universe. For them to participate in a multiboot, they must be placed on the MASTER HDISK. Althought i havent verified if they also would like to be on PRIMARY PARTITIONS?! So when planning to make a multiboot system with more than one HDISK. You should always place the Windows OS on the PRIMARY MASTER HDISK.

But what if in certain conditions one of these Windows OS cant be placed on the PRIMARY MASTER HDISK?

This article aims to educate people that MultiBooting in a non-ideal situation is possible. Although delimiting on a certain topic which is making a workaround for the Win9x/FAT32 dual fifo problem.


BACKGROUND:

To make discussions a little easier, lets use a hypothetical situtation so that readers can deduce their own version of the solution for their own purposes.

Given the following setup:

        PRIMARY IDE CONTROLLER [IDE 0]:
             MASTER  -  8 Gbyte Seagate
             SLAVE    -  40 Gbyte 7200 rpm Seagate

        SECONDARY IDE CONTROLLER [IDE 1]:
             MASTER  -  HP CD-Writer
             SLAVE    -  Asus 50x CD-Rom

Given the following non-ideal situation:

        PRIMARY IDE CONTROLLER [IDE 0]:
             MASTER  -  8 Gbyte Seagate
                       PRI Partition [1Gbyte] - FAT16 - MSDOS ver 7.00 [included in Win98]
                       EXT Partition [7Gbyte]
                                1st Logical Drive [2Gbyte] - FAT16 - WinNT 4 WorkStation
                                ======= rest is open for other OS =======
                                2nd Logical Drive [2Gbyte] - FAT16 - Win2000 Pro
                                3rd Logical Drive [2Gbyte] - Linux Native - Linux RedHat
                                3rd Logical Drive [1Gbyte] - FAT16 - Data?
                                ======= end of hypothetical multiboot system =======

             SLAVE    -  40 Gbyte 7200 rpm Seagate*
                       PRI Partition [20Gbyte] - FAT32 - Win98 SE
                       EXT Partition [20Gbyte]
                                1st Logical Drive [20Gbyte] - FAT32 - DATA

*The ASUStek P2B-f mainboard has a limit of <32Gbyte for HDISK space. After flashing with the latest BIOS, only 2 partitions are possible for the 40Gbyte HDISK. Making more than 2 partitions makes the HDISK unreadable for the FDISK utility.

Given the following Installation Notes:

  • Windows98SE was installed first by configuring the STANDARD CMOS SETUP. Changing the IDE 0 MASTER attribute from USER to NONE!
  • DATA [the 2nd partition of the 40Gbyte Hdisk] was formatted from the MS-DOS prompt of Win98SE. Making it a FAT32 drive
  • MS-DOS ver 7.00 was installed by configuring the STANDARD CMOS SETUP. Changing the IDE 0 SLAVE attribute from USER to NONE! Changing the ADVANCE CMOS SETUP to boot from floppy first. Win98 BootDisk was used to boot and format this 1Gbyte partition. Afterwhich the files from the Virtual RAMDRIVE are copied, comprising the DOS Utility Files.
  • Booting from MS-DOS ver 7.00, the 1st Logical Disk Drive [2Gbyte] was formatted using the FORMAT Utility. Installing WinNT by executing the following commands: WinNT /b /s:[cd-drive]:\i386 /t:[winnt drive]. And NOT converting to NTFS as the choice in installing.
  • From here on, you can install Win2000Pro first. Then install Linux RedHat after.
  • Lastly, return the STANDARD CMOS SETUP attributes of MASTER & SLAVE HDISK to both USER (or you could always auto-detect them!).

Given the following conditions:

  • The 40Gybte [FAT32/Win98] is solely for huge applications. Probably editing videos, and the like. Games, perhaps?
  • The 40Gybte cant be reformated or changed file system in any way. Probably because of time constraints applications here would take up time to be re-installed again. So it would not be an option to reformat this!
  • Of course, the Win98 would be the DEFAULT Operating System.
  • 3rd party applications are always welcome as long as it would be DOS-based and would not change nor harm the Windows 98 system.


PROBLEM:

How do i participate my Windows98 [on a dedicated hdisk] in a multiboot system?


REVIEW OF RELATED LITERATURE:

Arc Naming:
Advanced RISC Computing (ARC) has conventions that are used to define the path to a Windows NT installation on Intel x86-processor-based computers. The path to each Windows NT installation is described in a single line in the BOOT.INI file for x86-based computers. There are two basic forms in which an ARC path can appear, one form starting with MULTI() and the other form starting with SCSI(). Both forms are used on x86-based computers, however, only the MULTI() will be covered here.

multi(X)disk(Y)rdisk(Z)partition(W)\<winnt_dir>

where:
     multi = IDE channel            X can be (0 for primary & 1 for secondary)
     disk = ID of the target disk; MULTI() invokes the INT 13 call & does not need the DISK() parameter info            Y always (0)
     rdisk = disk number on IDE channel            Z can be (0=1omaster, 1=1oslave, 2=2omaster, 3=2oslave)
     partition = partition number            W can be (1 for 1opartition , 2 for 2opartition and so on...)


SWAP-ping Hdisk:
Here's an excerpt from XOSL FAQ:

Booting Windows or DOS from a second or later hard disk

Q: I now have 2 IDE hard disks. When I boot Windows from the 2nd hard disk, my hard disk runs in DOS compatibility mode, and Windows is slow as hell. There is also a message that says that my MBR may be infected by a virus or something. Is there a way to make my Windows on second hard disk NOT boot in DOS compatible mode when I boot it with XOSL ?

A: Don't select Swap hard disk, just hide all (or at least primary) FATxx partitions on the 1st hard disk when booting 2nd hard disk Windows.

Swapping Hdisk simply means that you change the heirarchy of the HDISK. Master becomes Slave and Slave becomes Master when you SWAP Hdisk once. This can be done thru BIOS [if your BIOS supports it] or through 3rd party applications like bootloaders.

Here are some of the DRAWBACKS when you enable swap disk on a Win9x SLAVE HDISK [meaning this slave becomes the master] through a 3rd party application:

  • Windows would run in DOS compatibility mode making its performance 'slow as hell'
  • Windows reports that MBR may be infected with a virus
  • Windows cannot detect the IDE controllers, which results in missing cdrom drives.
  • Windows System [Control Panel --> System] reports that there is a Primary IDE controller (dual fifo) and/or Secondary IDE controller (dual fifo) problem


Using DEBUG.exe:
One proposed solution that i found on the internet was using DEBUG.EXE. Stating that while in the SLAVE HDISK command's prompt [which is FAT32/Win98 in our case] we do the following:

Pay special attention to the line starting with l - it reads "el" "zero" "two" "zero" "one". All of the 0 characters are zeros.

  debug
  n win98se.lin
  l 0 2 0 1
  r cx
  200
  w 0
  q

Some even say that this is the correct code:

  debug
  n win98se.lin
  l 100 2 0 1
  r cx
  200
  w 0
  q

You should end up with a win98se.lin file. We need to get the win98se.lin file from the Win98 drive and copy it to the root of C: [which is DOS/FAT16 in our case, remember the 1Gbyte]. Then you'll need to make the c:\boot.ini file writable. Add the following line at the end:

c:\win98se.lin="Microsoft Windows 98SE"

and then save and close the file. Reboot your computer and choose the new Win98 option. It should boot Windows98 now!

Heh! That's what they say, 'IT SHOULD BOOT!' But what if it didnt work, huh?! Try it for yourself, if that works then dont bother reading the next few chapters, thanks for taking time reading this. But if it didnt like in my experiment, then read on...


BOOTLOADER:
Boot Loaders will allow the selection of the OS desired to boot to and load parts of it into memory. The boot loader loads the kernel, regardless of filesystem. Good boot loaders also recognise some executable fileformats.

i.e. GRUB

Ignoring the use of a boot loader means writing your own loader to read in your kernel file from the file system.


BOOTMENU:
Boot Menu allows the selection of the OS desired to boot to but does not load parts of it into memory.

i.e. SYSTEM COMMANDER


LIMITATION:

This experiment will only cover installation of 3 Operating Systems, namely: Windows98SE, WindowsNT, and DOS. Setting up multiboot menu options for the 3 OSes will be the task as well.

Due to time constraints, setting up of Windows2000Pro and Linux would not be covered here. You can always check out Ruel's Guide for more details.


REQUIREMENTS:

Based on the given conditions and setup stated above, here are the prerequisite requirements:

  • The BIOS should support booting conditions like [D,A] or [E,A] or [F,A]. In short, support booting from other hard drives.
  • The motherboard's BIOS should be updated. Try checking out tutorials like FLASHING BIOS and the like.
  • Download XOSL. Read thoroughly on how and why XOSL works.


SIMULATION:

Given that the following requirements are met, lets proceed with the experiment.

  1. Check the BIOS. Make sure that both hdisk are detected. It's status would be USER on both the Master and Slave.

  2. [1st DRIVE SWAP] Go to ADVANCE CMOS SETUP and change the BOOT SEQUENCE from [C,A] to [D,A]. (Remember that by doing this, we will end up booting with our Win98.)

  3. From Windows98 open an MS-DOS window. Type in the command prompt C:\FDISK /status

                                Fixed Disk Drive Status
     Disk   Drv   Mbytes   Free   Usage
       1          38162            100%
             C:   19085
             E:   19077
       2           8221            100%
             D:    1004
             F:    2000
    

    Drive C = Win98/FAT32 Slave Primary Active Partition
    Drive D = DOS/FAT16 Master Primary Active Partition
    Drive E = Win98(formatted)/FAT32 Slave 1st Logical Disk Partition
    Drive F = WinNT/FAT16 Master 1st Logical Disk Partition
    (Notice that everytime we do a drive SWAP drive letters change.)

  4. Unzip the XOSL to an arbitrary folder, maybe C:\XOSL. Open a new MS-DOS Window. Type in C:\XOSL\XOSL\Install.

  5. Leave all the settings to default. Remember to choose Install to a DOS Partition. And when asked what drive letter, type in D. (Always consult the FDISK /status report because there, it was reported that our DOS is in drive letter "D".)

    NOTE: If and if XOSL would not install in an MS-DOS window in Windows98. You can always Restart in MS-DOS mode and install XOSL from there.

  6. [Setting-up XOSL] From hereon, XOSL would be the first one to load during boot-up process. Setting-up would not be discussed here THOROUGHLY. (I already stated to learn more about XOSL at their site and on how to use it.)

  7. In making the boot menu in XOSL. You should only make 2 choices. Number one choice would most obviously be labeled as "Windows 98." Just choose the partition with the volumelabel "Win98" or drive C. Leave all checkboxes at default.(Remember our FDISK /status report)

  8. [2nd DRIVE SWAP]Number two choice would be labeled as "WinNT and DOS". Choose drive D or the one with the volumelabel "DOS." Don't forget to check the SWAP DRIVE option. (Reason as to why point this option to the DOS and not to the WinNT is because the NT BOOTLOADER is located in the DOS drive. Pointing this option to the WinNT will render this option useless. Experiment, enjoy?!)

  9. Click SAVE and CLOSE. Now 2 options appear in your BOOT MENU. (Further customization can be done at own will, just make sure the attributes ive assigned will still be there in order to make this work!)

  10. Restart and try each option. Congratulations!


ASSESSMENT:

So how does that differ from other BOOTLOADER installation procedures? I dont see anything different?

Our goal is to avoid using SWAP DRIVE on Windows98. Sure enough, we should also avoid using SWAP DRIVE on other OS. So where's the trick?!

First of all, we installed XOSL in Windows98. Remember that in order for us to boot in Win98, we have to enable SWAP DRIVE in the BIOS. (Making the Boot Sequence [D,A] or [2nd hdisk, Floppy].) After installing and setting-up XOSL Bootloader we checked SWAP DRIVE in the Menu Option "WinNT & DOS." By doing this we are counteracting the first SWAP DRIVE, thus giving us the proper HEIRARCHY of drives.

BIOS [1st SWAP]       --->       XOSL       --->       Win98 [under 1st SWAP]       or       WinNT & DOS [2nd SWAP]


CONCLUSION:

Bear in mind that by doing a 2nd SWAP to an already swapped drive would mean changing it back to its original heirarchy.


RECOMMENDATION:

Setup the multiboot system first. If possible dont customize any of the bootloaders that would come in package like LILO and NT LOADER. After setting up the system, follow the guide ive presented and make more options in your boot menu (of course, you'll have to experiment on which drive to point the menu options created!).

Enjoy, having a multiboot system and yet enjoying your good-ol' windowz box!

----------------------------------------------
z3r0kul
R&D Department
ERROR 404 Development Team

This idea was developed out of serendipity, 3 days of trial & error and inspiration to my honey!
----------------------------------------------