Creating an Emergency Boot Floppy for Windows 2000 Server

Materials:
Working complete PC
Blank Diskette
Student Diskette, "New Boot A Ver 2.0+"
Student CD-ROM, "Room 6359"
Objectives:
The student will become familiar with:
The Windows NT family boot process,
How to create a floppy diskette that will launch the OS on the HDD,
The function of the BOOT.INI file,
How to edit the BOOT.INI file,
The BOOT.INI ARC Syntax.
Competency:
The student will learn how to create a diskette that will launch the OS on the HDD when the low level boot sequence structures have become corrupt. The student will become familiar with the BOOT.INI file's function, and the ARC syntax in order to create an NTLDR boot menu that will allow the diskette to launch an OS residing on any partition of an HDD on the local system.
Preparation

This floppy is designed specifically for supporting the RAID-1 Mirror created in this exercise. Below is an explanation of the ARC (Advanced RISC Computing) syntax used in the BOOT.INI file. See also the Diagnostic Boot Methods or Windows 2000 and the BOOT.INI Switches for related information.

Procedures
  1. First open My Computer and right click on the 3 ½" Floppy Drive A: icon. In the popup menu that appears, choose "Format..."



  2. While Format can do error checking of the integrity of the diskette it is better to use CHKDSK.EXE for this since it is a more powerful utility and this is a mission critical diskette. Therefore place a check in the "Quick Format" box:



  3. Upon clicking the "Start" button this warning message will appear:



  4. Click "OK" and the progress bar should move quickly as the system only rewrites a new empty FAT12 and root directory to the diskette. Then issues this message:



  5. Click "OK" Now the floppy diskette should be thoroughly examined by at least CHKDSK.EXE. Open a DOS box and type in the command directing it to check the A: drive. When complete the screen looks like this:

    C:\WINDOWS>chkdsk a:
    The type of the file system is FAT.
    Volume Serial Number is 2D4C-0E01
    Windows is verifying files and folders...
    File and folder verification is complete.
    Windows has checked the file system and found no problems.

        1,457,664 bytes total disk space.
        1,457,664 bytes available on disk.

              512 bytes in each allocation unit.
            2,847 total allocation units on disk.
            2,847 allocation units available on disk.
    C:\WINDOWS>_

  6. Now open the root of the C: drive and be sure that hidden files have been made visible. (See Windows 98 Show All Files tutorial but the property sheet for this is found in Tools > Folder Options... for Windows 2000). Select the files "ntldr", "boot.ini", and "ntdetect.com" from the root of the C: drive. You must include the file "ntbootdd.sys" if it exists (indicating that a SCSI controller needs this driver in order for the system to boot up) and right click on any one of the selected files and select "Send to 3 ½" Floppy Drive A:" in the popup menu that appears:



  7. After the files are copied to the floppy diskette, open the 3 ½" Floppy Drive A: and select the "boot.ini" file. It may be "Read-Only" so change it if necessary. (See the Windows 98 Modifying MSDOS.SYS tutorial for more details). Now right click it and select "Open" The file will appear in Notepad.exe:



  8. Copy and paste the line below [operating systems] so that you have two identical lines in the section. Then make the changes to it so that it reads the same as the line highlighted in the next picture. The system is using a second IDE drive configured as the Secondary Master that is the mirror drive. There is no Primary Slave HDD so this is the second drive in the BIOS discovery order. See the ARC Syntax rules below for more information. Save these changes and exit Notepad.exe.



  9. At this point the boot diskette has been completed and should be able to successfully boot up the operating system from either the original C: drive or the mirror on the other drive. See also the tutorial on Creating a mirror of the C: drive.

ARC Syntax of BOOT.INI

For x86 based systems the Windows NT/2000/XP operating systems rely during the boot sequence on reading the BOOT.INI file in order to find and load the operating system starting with the file NTOSKRNL.EXE. The syntax used to specifiy the location of the operating system kernel is called the ARC (Advanced RISC Computing) syntax. While designed for RISC machines a variant has been developed for use on x86 based systems. The two major ARC pathtypes that can be specified in the BOOT.INI are: multi(x) and scsi(x).

  • multi(x)

    When the ARC path begins with multi(x), NTLDR will rely on the BIOS INT13 calls to access the drive and find the operating system files and load them into memory. This means that SCSI host controllers that load INT13 BIOS handlers during the POST may function using the multi(x) syntax. The basic test for this functionality is that if DOS will boot off of the SCSI drive without having to load a driver in order to access the drive, then that drive's SCSI host controller is loading an INT13 BIOS handler during the POST. If DOS must load a driver in order to access the drive, then the multi(x) path will probably fail.

    The full multi(x) path looks like this: multi(x)disk(y)rdisk(z)partition(z)\WINNT. Each of these parts of the path have a specific meaning which in turn dictates what values should be used for x, y, z, and w.

    • multi(x) refers to the controller number. When using the standard BIOS INT13 calls on an x86 system the following rules usually apply: for IDE controllers this value is always zero even though there are two controllers (the Primary and the Secondary) no BIOS INT13 call distinguishes between the two. For a SCSI controller that is loading basic INT13 handlers during the POST Microsoft Documentation mentions that only the first two drives of the first SCSI BIOS (host controller) to intercept the BIOS INT13 call will respond properly using the multi(0) designation.
    • disk(y) must always be set to disk(0) if the multi(0) is used. The logical disk ID is not needed since it is not used by the BIOS INT13 call. In the case of SCSI controllers and the scsi(x) syntax this is not the case.
    • rdisk(z) refers to the physical disk of the controller. These numbers correspond directly to the BIOS discovery order. This means that if there are two hard drives attached to the IDE controllers then the first drive will be numbered zero and the second drive in this discovery order will be numbered one. Valid values are 0-3.
    • partition(w) refers to the partition as listed in the master boot record. These are the four partitions defined in the partition tables found in the MBR which the BIOS boot strap loader code can identify and access. These therefore cannot refer to logical drives within extended DOS partitions which can only be found and interpreted by the DOS/WIN operating system kernels. A primary DOS partition is written into the MBR and can be accessed. If created properly under FDISK.EXE it will be partition(1). NTFS partitions can be created as peers within the MBR partition tables and would be numbered 1-4. There is no partition(0)! And all partition types will be enumerated except unused (empty) partition table entries and extended DOS partitions.

    Here are examples of the usage of multi(x) paths:

    • multi(0)disk(0)rdisk(0)partition(1)\WINNT - The WINNT directory resides on the first drive of the IDE controller (i.e. the Primary Master).

    • multi(0)disk(0)rdisk(1)partition(1)\WINNT - The WINNT directory resides on the second partition on the second physical drive.

  • scsi(x)

    Using the scsi(x) syntax the x refers to the controller and is significant. It should also be noted that NTLDR will immediately load and use the real mode driver NTBOOTDD.SYS which must be in the root of the boot disk where NTLDR itself is located. This file is the expanded and renamed *.SYS driver provided by the controller's manufacturer or one that is provided by Microsoft in the installation (I386) folder for the controller. So using the scsi(x) syntax instructs NTLDR to access the boot drive by loading this driver and then make access to the drives through it. If there are more than one SCSI controller installed on the system, then each will be numbered starting with zero. It is not clear in the documentation if: all SCSI controllers on the system receive a number, or if only supported (by the driver) controllers are the only ones that will be enumerated. It is also not clear from the documentation what controller will be enumerated first (i.e. which controller will be numbered zero?) Therefore, under these circumstances it would be wise to put several different ARC path instructions into the BOOT.INI that will allow the operator to attempt to boot from any of the choices until one works (Ugh!).

    The full scsi(x) ARC path syntax is: scsi(x)disk(y)rdisk(z)partition(w)\WINNT.

    • scsi(x) refers to the controller. In the presence of more than one SCSI controller it is not clear in the documentation the controller enumeration order. Be prepared to set up a BOOT.INI that can offer choices to all possible values.
    • disk(y) refers to the disk's SCSI device ID number on the SCSI bus.
    • rdisk(z) refers to the SCSI logical unit number (LUN). This is usually zero but it is not always zero. In the presence of two controllers the second controller may be configured manually or by drivers to assign a LUN of 1.
    • partition(w) refers to the partitions defined in the MBR of the SCSI drive just like in the multi(x) syntax and can valid values of 1-4 - there is no partition(0)!

    Here are a few examples of scsi(x) ARC paths:

    • scsi(0)disk(0)rdisk(0)partition(1)\WINNT - The WINNT directory resides on the first partition of SCSI drive ID#0 of the first SCSI controller (which needs driver support: NTBOOTDD.SYS)
    • scsi(1)disk(6)rdisk(0)partition(1)\WINNT - The WINNT directory resides on the first partition of SCSI drive ID#6 of the second SCSI controller.
Back to Top

Copyright©2000-2004 Brian Robinson ALL RIGHTS RESERVED