  Multiboot with GRUB Mini-HOWTO
  Ivan Kanis, ivank@juliva.com
  v1.0, 2001-01-15

  This document describes how to install Windows 98, Windows 2000, DOS
  and Linux using GRUB.

  1.  Why ?

  I wanted to be able to boot all operating systems without having to go
  through multiple menus. I know I can install NT on top of win9x on top
  of DOS. I would have to go through the NT menu then the win9x menu in
  order to boot DOS. I wanted to be able to boot all these operating
  systems at once.


  This turned out to be quite a challenge. The problem with Microsoft
  operating system is that they all want to boot from the primary
  partition. This is where GRUB comes in. It can hide primary
  partitions. You can use up to 3 partitions to install Microsoft
  operating systems. GRUB will hide the other 2 partitions so that the
  operating systems will not see it. This means you will need another
  partition to share data between DOS, Win9x and Windows 2000. The 4th
  partition is used for the extended partition.


  I also wanted a menu system and GRUB provides a nice one.


  Another nice feature of GRUB is that it supports reiserfs so I don't
  need to keep my /boot file in a separate ext2 partition.


  2.  Installation procedure

  2.1.  Preparing boot floppies

  You will need 3 floppy disks. Make the first floppy a DOS bootable
  disk. Copy fdisk.exe and sys.exe onto this floppy disk.



       FORMAT /S A:
       COPY FDISK.EXE A:
       COPY SYS.EXE A:



  Use your second floppy disk to make a Windows 98 emergency disk. You
  will use the third floppy for GRUB shortly.


  2.2.  Installing linux

  Install your favorite distribution of linux. You will need to use
  fdisk to partition your hard disk. Calculate ahead of time how much
  disk space each of your operating systems will take.


  Here is how I partitioned my hard disk:



     Device Boot    Start       End    Blocks   Id  System
  /dev/hda1             1         6     48163+  16  Hidden FAT16
  /dev/hda2             7        19    104422+  16  Hidden FAT16
  /dev/hda3            20       593   4610655   1b  Hidden Win95 FAT32
  /dev/hda4           594      3737  25254180    5  Extended
  /dev/hda5           594       848   2048256    6  FAT16
  /dev/hda6           849      2123  10241406    7  HPFS/NTFS
  /dev/hda7          2124      2140    136521   82  Linux swap
  /dev/hda8          2141      2523   3076416   83  Linux



  My first partition is for booting Windows 2000. 10MG should be plenty
  to do that. This partition will only contains the file necessary to
  boot NT such as boot.ini, ntldr, ntdetect.com, etc... NT will reside
  in partition 6 in my example. This partition is Hidden FAT16.


  The second partition is for DOS. I deemed 100M sufficient. This is
  FAT16 too


  The third partition is for Win9x. I gave it 5G and made it FAT32 for
  performance.


  Next create the extended partition for the remaining of your hard
  disk. This shows up as partition 4 on fdisk.


  Create a 2GB partition. This partitions is used to share data between
  all operating systems. Make sure that all the sum of all above
  partitions are less than 8GB. This is a DOS limitation.


  Next create your Windows 2000 partition. I gave it 10G since this
  breed of windows is a bloated pig. I made it a HPFS/NTFS partition for
  speed.


  Next add your swap partition and linux partition. Make sure you do not
  have a separate partition for /boot. Things look better in GRUB if you
  keep /boot in the root partition.


  After you have installed linux go ahead and format the fat16
  partitions:


       mkdosfs /dev/hda1
       mkdosfs /dev/hda2
       mkdosfs /dev/hda6



  2.3.  Installing GRUB

  Make sure you have the latest version of GRUB. I am using version
  0.5.96.1. The version that came with my distribution was out of date
  and gave me a lot of grief. You can download the latest version at
  http://www.fsf.org.

  Now you'll want to install GRUB on the floppy disk. You don't want to
  install it on the hard disk yet because Windows 2000 will overwrite
  it.



       grub-install '(fd0)'



  Create the following menu.lst for GRUB. This file lives in /boot/grub.



  #
  # Sample boot menu configuration file
  #

  # Boot automatically after a minute.
  timeout 60

  # By default, boot the second entry.
  default 1

  # Fallback to the first entry.
  fallback 0

  title Windows 2000
  unhide (hd0,0)
  hide (hd0,1)
  hide (hd0,2)
  rootnoverify (hd0,0)
  chainloader +1
  makeactive

  # For booting Linux
  title  Linux
  root (hd0,7)
  kernel /boot/vmlinuz-2.2.17 root=/dev/hda8 video=matrox:vesa:261

  title Windows 98
  hide (hd0,0)
  hide (hd0,1)
  unhide (hd0,2)
  rootnoverify (hd0,2)
  chainloader +1
  makeactive

  title DOS 6.22
  hide (hd0,0)
  unhide (hd0,1)
  hide (hd0,2)
  rootnoverify (hd0,1)
  chainloader +1
  makeactive

  # For booting Linux
  title  Linux (single user)
  root (hd0,7)
  kernel /boot/vmlinuz-2.2.17 root=/dev/hda8 video=matrox:vesa:261 single

  title Partition 2 (floppy)
  hide (hd0,0)
  unhide (hd0,1)
  hide (hd0,2)
  chainloader (fd0)+1

  title Partition 3 (floppy)
  hide (hd0,0)
  hide (hd0,1)
  unhide (hd0,2)
  chainloader (fd0)+1



  Check that you can boot linux with the floppy disk. If you are having
  trouble you can drop in GRUB's command line and figure out what is
  going on. GRUB is very well documented, if you have any trouble please
  take a look at the documentation.


  2.4.  Installing windows 2000:

  I had to initialize the first partition before installing windows
  2000. Insert the DOS startup disk and reboot your computer. Once you
  get to the DOS prompt do the followings:



       FDISK /MBR
       SYS C:



  Now you can go ahead and install windows 2000. At some point Windows
  2000 will prompt you for the partition on which you want to install.
  The partition you created with fdisk should show up as damaged or
  unformatted partition. Go ahead and select it.


  To hide the Windows 2000 menu edit a file called boot.ini that should
  be in the C: drive. Change the timeout value from 30 to 0.



       [boot loader]
       timeout=0
       default=multi(0)disk(0)rdisk(1)partition(1)\WINNT
       [operating systems]
       ...



  2.5.  Installing DOS.

  Insert the GRUB disk. When you see the menu insert the DOS boot disk.
  Select partition 2 (floppy) from the menu.Hit enter. This will boot
  the floppy disk and hide partition 1 and 3.


  Run FDISK and check that the C: drive is partition 2. Next install
  DOS:



       SYS C:



  2.6.  Installing Windows 98

  Insert the GRUB disk. When you see the menu insert the Windows 98
  Emergency disk. Select partition 3 (floppy) from the menu.Hit enter.
  This will boot the floppy disk and hide partition 1 and 2.



  Run FDISK and check that the C: drive is partition 3. Next install
  Windows 98:



       SYS C:



  2.7.  The final touch

  Test that everything is working from GRUB:


  You should be able to boot from all 4 operating systems from the GRUB
  floppy disk.


  If everything looks right you can go ahead and install GRUB on your
  hard disk. From linux type:



       grub-install /dev/hda



  You should now be able to boot all 4 operating systems from the GRUB
  menu. Enjoy!


  3.  References

  I have found these links useful while setting up my system.

  ·  GNU GRUB <http://www.gnu.org/software/grub/grub.html>

  ·  The Linux-DOS-Win95-OS2 mini-HOWTO
     <http://www.linuxdoc.org/HOWTO/mini/Linux+DOS+Win95+OS2.html>

  4.  Feedback

  I would like to hear about your experience (good or bad) with this
  document. If you have some instructions for adding another OS please
  send them to me so that I can add them.



