home *** CD-ROM | disk | FTP | other *** search
- ********************************************************************************
-
- This program uses methods different than those documented by FDISK
- to boot your computer. You should read the following text to
- understand how BOOTANY works and what it will do for you.
-
- ********************************************************************************
-
-
- This package consists of the following files:
-
- BOOTANY - The NMAKE file for BOOTANY.SYS
- BOOTANY.ASM - The source code to an assembler program which can be
- used as a replacement for the master boot program on
- hard disks with multiple partitions.
- BOOTANY.SYS - The binary image used as the new master boot program.
- BOOTANY.H - Definitions and structures used by the C programs.
- BOOTANY.INC - Definitions and equates used by BOOTANY.ASM and
- BSTRAP.ASM
- BOOTIO.ASM - The source for the program which reads or writes the
- Master Boot Record.
- BSTRAP - The NMAKE file for BSTRAP.COM
- BSTRAP.ASM - The source for the program which installs BOOTANY.SYS
- onto your hard disk.
- BSTRAP.COM - The executable file which will install BOOTANY.SYS
- INSTBOOT.BAT - A batch file which when executed installs BOOTANY.SYS
- on your hard disk.
- PREFDISK - The NMAKE file for PREFDISK.EXE
- PREFDISK.C - The source for the program to run before FDISK.
- PREFDISK.EXE - Program to invalidate partition table entries before
- running FDISK.
- PREINST - The NMAKE file for PREINST.EXE
- PREINST.C - The source for the program to validate all partition
- Table entries
- PREINST.EXE - Program to validate all partition table entries before
- Running BSTRAP
- READ.ME - This file
- SHOWBOOT - The NMAKE file for SHOWBOOT.EXE
- SHOWBOOT.C - The source for the program which displays the master
- partition table
- SHOWBOOT.EXE - Program to display the master partition table
-
-
-
- Section 1 - How the ROM BIOS Boots an Operating System
-
- When an IBM PC or compatible computer boots (via <CTRL><ALT><DEL> or
- by turning the power on), the last operation the ROM BIOS boot strap
- program does is to read the first sector of the A: drive or if no disk
- is present in A:, the first sector of the C: drive. After the sector is
- read to the 512 bytes starting at address 0000:7C00, the boot strap
- program validates the sector by insuring that the last 2 bytes
- (0000:7DFE) contain the hex value 55AA. If they are, the boot strap
- program branches to 0000:7C00. It is important to note that up until
- this point NO operating system services have been created or are
- available. This is why some programs (like Flight Simulator) can be
- started at system boot, and also why the PC is capable of running
- multiple operating systems.
-
-
- Section 2 - The Master Boot Record
-
- On a floppy diskette formatted with the DOS command "FORMAT A: /s",
- the first sector will contain EB34xx in the first three bytes. This
- is a jump instruction which bypasses the next several bytes. Following
- this will be an 8 character system id. On machines using IBM DOS this
- will be the characters "IBM " followed by the version of DOS. And
- of course the last two bytes of the sector will contain hex 55AA. This
- is the DOS boot program.
-
- On hard disks, which must be set up with FDISK, other than the last
- two bytes containing hex 55AA and the first byte containing an
- executable instruction, this first sector is quite different. It is
- called the Master Boot Record.
-
- Starting at byte 446 (hex 1BE) is the Partition Table. It contains
- 4 entries, so your hard disk can be divided into at most 4 partitions.
- Each entry has the following format:
-
- Offset Size Field Purpose
- +0 1 BootIndicator Indicates if partition is startable
- hex 00 Non-startable partition
- hex 80 Startable partition
- +1 1 BeginHead Side on which partition starts
- +2 1 BeginSector Sector at which partition starts
- +3 1 BeginCyl Cylinder at which partition starts
- +4 1 SystemId Identifies partition type
- hex 00 Empty partition entry
- hex 01 DOS FAT-12
- hex 02 XENIX
- hex 04 DOS FAT-16
- hex 05 Extended partition
- hex 06 DOS > 32M
- hex 07 HPFS
- hex 64 Novell
- hex 75 PCIX
- hex DB CP/M
- hex FF BBT
- +5 1 EndHead Side on which partition ends
- +6 1 EndSector Sector at which partition ends
- +7 1 EndCyl Cylinder at which partition ends
- +8 4 RelativeSectors # Sectors before start of partition
- +12 4 NumberSectors # Sectors in partition
-
-
- The master boot program (starting at byte 0) copies itself to a
- different location in memory and then inspects the partition table
- looking for a startable partition. If more than one startable partition
- exists or any BootIndicator is not hex 80 or 0 than "Invalid Partition
- Table" will be written on the screen and the program will enter an
- endless loop. After successfully validating the table, the program then
- obtains the Begin Head, Sector, and Cylinder for the startable partition
- and reads it from disk to 0000:7C00. It validates that the hex 55AA is
- present and then jumps to location 0000:7C00. From this point on
- startup is identical to booting from a floppy.
-
-
- Section 3 - OS/2
-
- OS/2 supports the use of multiple partitions on a hard disk just as
- DOS does. In fact, FDISK is again how OS/2 partitions are defined.
- What is slightly strange though, is that HPFS partitions must be
- defined using FDISK as DOS primary or secondary partitions. This
- means that they are initially defined as FAT partitions. However,
- when OS/2 formats that partition as HPFS it updates the Partition
- Table to indicate a type of 07.
-
- During installation, OS/2 tries to install itself in the first DOS
- partition it finds - even if its too small or something is already
- there. If it doesn't find a DOS partition it will look for the first
- HPFS and install itself there. OS/2 installation also marks the
- installed OS/2 partition as the "Active" partition. The BOOT program
- accompanying OS/2 1.2 changes the active partition to the OS/2 or
- DOS partition. Re-booting the computer causes the appropriate
- operating system to be started.
-
-
- Section 3 - Multiple "Primary" partitions.
-
- Primary partitions basically are those with system ids other than 0 or
- 5. A 0 system id indicates that the partition entry is not in use. Type
- 5 is a special type of partition which I will discuss a little later.
- Type 5 partitions cannot be marked startable.
-
- DOS and OS/2 (and presumably other operating systems) behave similarly
- with regards to how they handle multiple primary partitions. If a PC
- contains multiple hard disks, each must contain a primary partition
- valid for the target operating system for it to be recognized. If both
- disks also contained a secondary, after boot the drive configuration
- would be:
-
- C: First hard disk's primary partition
- D: Second hard disk's primary partition
- E: First hard disk's secondary partition
- F: Second hard disk's secondary partition
-
- If the primary partition on the first drive became unavailable, the
- operating system could (and woould) boot off of the second drive's
- primary partition. Unknown partition types are completely ignored by the
- operating system so a hard disk with no known primary partition will be
- skipped.
-
- When a single drive is configured with multiple primaries similar
- logic is encountered. First all unknown partitions are ignored by
- the operating system. Secondly, only the first known primary and valid
- secondaries become accessable. If the following configuration were
- used,
-
- Partition SystemId
- 1 07
- 2 07
- 3 06
- 4 05
-
- and a boot of OS/2 was attempted, OS/2 would mark partition 1 as C:,
- ignore partitions 2 and 3, and then would look at the extended
- partition for more logical drives. If partition 2 were marked as the
- startable partition some bizarre behaviour would be encountered. OS/2
- would be started using the boot program from partition 2, however C:
- would be partition one and partition 2 would be inaccessable, most
- likely causing strange results.
-
-
- Section 4 - Secondary partitions.
-
- Secondary partitions allow the creation of DOS or HPFS partitions
- which can be shared among operating systems or versions of an
- operating system. For example, an extended partition may be defined
- as having both an HPFS partition and a FAT partition. DOS will be
- able to manipulate the FAT partititon while all versions of OS/2
- can work with both the FAT and the HPFS partitions. Thus version
- specific data may be kept on the primary partitions while common
- data may be kept on an extended partition.
-
- Secondary (or extended) partitions are those defined as type 5. FDISK
- only allows them to be created if a primary partition is defined,
- however, the available OS/2 documentation states that secondary
- partitions may be created without a primary if the (phsysical) drive
- is not startable.
-
- A secondary partition contains a collection of "extended volumes"
- which are linked together by a pointer in the extended volumes'
- start-up record. Each extended volume contains an extended start-up
- record, located in the first sector of the volume. The extended
- start-up record contains the normal 55AA signiture at the end. The
- extended start-up record also contains a partition table, the format
- of which is identical to the master partition table. The code in
- the extended start-up record, if there is any, starts at location 0
- and probably writes a message indicating an attempt to start a
- non-startable partition. A partition entry of type 5 allows chaining
- to the next extended volume.
-
- An extended volume is only allowed to have one block device driver,
- therefore only 1 entry will be used to map a logical drive. One
- other entry may be used to chain to the next extended volume.
-
- Section 5 - How BOOTANY works.
-
- BOOTANY is a fairly simple program. It has to be to fit within the
- 445 bytes available for code in the master boot record.
-
- First, BOOTANY must be installed. As part of the installation, the
- installer associates function keys 1, 2, and/or 3 with a specific entry
- in the partition table and a short description of the partition. As
- each partition is defined it will be validated to insure it was marked
- startable. If it was not it can be marked startable by the install
- program. Only startable partititons should be defined as primary
- partitions.
-
- After all the partitions have been defined to BOOTANY, the install
- program will proceed to move the SystemId in each bootable partition
- entry to the BootIndicator field in the same entry. The SystemId
- will then be set to hex 80 (an undefined value). If the system
- were then to be booted from a floppy, NO valid partitions would
- exist.
-
- After installation, every time the computer is rebooted from the
- hard disk a short menu will appear. The menu consists of the
- defined function keys along with their textual description. Whichever
- function key was used at the previous boot will be displayed as the
- default. If no key is depressed within 5 seconds, the default system
- will be booted.
-
- After selection of a boot partition, BOOTANY will validate that the
- partition is startable (the BootIndicator is non-zero). If it is the
- first sector of the partition will be read to 0000:7C00. The last two
- bytes will be compared to hex 55AA. If they match, the previously booted
- partition entry will be modified so that the BootIndicator contains the
- SystemId value and the SystemId is hex 80. The partition entry to be
- booted will next be modified so that the System ID is restored and the
- BootIndicator is set to hex 80.
-
- This procedure insures that there is only one valid primary partition at
- a time, thus avoiding the situation described in the last paragraph of
- Section 3 above.
-
-
- Section 6 - Installing and booting multiple operating systems.
-
-
- Sample installation for OS/2 1.2, OS/2 2.0 and DOS 4.0
-
- 1. Start with an empty but low-level formatted hard disk.
- 2. Using DOS FDISK create a primary partition to be used by DOS 4.0 as
- its FAT C: drive. (2 Meg minimum) Make sure the partition is marked
- startable.
- 3. Install DOS onto drive C:
- 4. Run PREFDISK.EXE to invalidate the partition just created.
- 5. Using DOS FDISK create a DOS primary partition to be used by OS/2 1.2 as
- its HPFS C: drive. (14 Meg minimum) Make sure the partition is marked
- startable.
- 6. Install OS/2 onto drive C:
- 7. Boot DOS from floppy and again run PREFDISK to invalidate the partition
- just created.
- 8. Using DOS FDISK create a primary partition to be used by OS/2 2.0 as
- its HPFS C: drive. (14 Meg minimum) Make sure the partition is marked
- startable.
- 9. Install OS/2 onto drive C:
- 10.Run INSTBOOT replying as indicated: (entered text is shown in [])
-
- <CTRL><BREAK> may be used to end the install at any time
-
- What partition should be installed to F1? (1-3, 0 to end) [1]
-
- Enter partition description to be assigned to F1 (15 chars max) [OS/2 1.2 HPFS]
-
- What partition should be installed to F1? (1-3, 0 to end) [2]
-
- Enter partition description to be assigned to F1 (15 chars max) [OS/2 2.0 HPFS]
-
- What partition should be installed to F1? (1-3, 0 to end) [3]
-
- Enter partition description to be assigned to F1 (15 chars max) [DOS 4.0 FAT ]
-
- Do you want Num Lock turned off at boot? [Y]
-
- Boot record updated.
-
- 11.Press <CTRL><ALT><DEL>
-
- At restart the computer will respond with:
-
- F1 . . . OS/2 1.2 HPFS
- F2 . . . OS/2 2.0 HPFS
- F3 . . . DOS 4.0 FAT
- F4 . . . ROM BASIC
-
- Default: F?
-
- 12.Select F3 and run FDISK to Install a secondary partition and logical FAT
- and/or HPFS drives as desired.
-
- 13.Reboot the computer. The default will now be F3 since DOS was
- previously booted.
-
-
- To install a new operating system
-
- 1a.Boot the operating system which will have its partition entry
- changed, or
- 1b.Boot DOS, run PREFDISK to invalidate all partitions and then run
- FDISK to install a new partition.
- 2. Install the new operating system in the vacant partition.
- 3. Run INSTBOOT replying as needed.
- 4. Reboot the computer.