Annotation of Net2/arch/i386/boot/readme.mach, revision 1.1

1.1     ! root        1: /*
        !             2:  * Ported to boot 386BSD by Julian Elischer, September 1992
        !             3:  *
        !             4:  * Mach Operating System
        !             5:  * Copyright (c) 1992, 1991 Carnegie Mellon University
        !             6:  * All Rights Reserved.
        !             7:  * 
        !             8:  * Permission to use, copy, modify and distribute this software and its
        !             9:  * documentation is hereby granted, provided that both the copyright
        !            10:  * notice and this permission notice appear in all copies of the
        !            11:  * software, derivative works or modified versions, and any portions
        !            12:  * thereof, and that both notices appear in supporting documentation.
        !            13:  * 
        !            14:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !            15:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
        !            16:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !            17:  * 
        !            18:  * Carnegie Mellon requests users of this software to return to
        !            19:  * 
        !            20:  *  Software Distribution Coordinator  or  [email protected]
        !            21:  *  School of Computer Science
        !            22:  *  Carnegie Mellon University
        !            23:  *  Pittsburgh PA 15213-3890
        !            24:  * 
        !            25:  * any improvements or extensions that they make and grant Carnegie Mellon
        !            26:  * the rights to redistribute these changes.
        !            27:  */
        !            28: 
        !            29: /*
        !            30:  * HISTORY
        !            31:  * $Log: README.MACH,v $
        !            32:  * Revision 1.1  1993/03/21 18:08:16  cgd
        !            33:  * after 0.2.2 "stable" patches applied
        !            34:  *
        !            35:  * Revision 2.2  92/04/04  11:33:55  rpd
        !            36:  *     From 2.5
        !            37:  *     [92/03/30            mg32]
        !            38:  * 
        !            39:  */
        !            40: 
        !            41: ********NOTE: This is not all relevant to the 386BSD version**********
        !            42: 
        !            43:                AT386 Protected Mode Bootstrap Loader
        !            44:                =====================================
        !            45: 
        !            46: 1. Overview of Startup
        !            47:    -------------------
        !            48: 
        !            49:        After the system is rebooted, the BIOS bootstrap routine reads Sector
        !            50:        1, Track 0 into memory at location 0000:7C00H.  If location 0000:7DFEH
        !            51:        (last two bytes of that sector) contains the value AA55H, the BIOS
        !            52:        bootstrap routine will transfer control to 0000:7C00H.  Otherwise, the
        !            53:        boot code in that sector is bad and the boot routine stops.
        !            54:        
        !            55:        For DOS compatibility reason, one extra stage of boot is required if
        !            56:        the boot device is a hard disk.  The first sector of the hard disk will
        !            57:        contain the MOS-DOS boot code and a boot record partition table.
        !            58:        When this sector is loaded into 0000:7C00H, it will relocate itself
        !            59:        to somewhere else and then load the first sector of the active
        !            60:        partition into 0000:7C00H.  Both UNIX and DOS use the command "fdisk"
        !            61: [ 386bsd does not have an 'fdisk' (yet) ]
        !            62:        to install this first sector into the hard disk and to manipulate
        !            63:        the hard disk partitions.
        !            64: 
        !            65:        
        !            66: 
        !            67: 2. The First Stage Bootstrap Loader
        !            68:    --------------------------------
        !            69: 
        !            70:        After startup, the first stage boot is loaded at 0000:7C00H.  This
        !            71:        first stage boot will load itself and the second stage boot into
        !            72:        memory at location 0000:1000H.  For floppy disks, the first cylinder
        !            73:        is reserved as the boot cylinder, and the boot code (first and second)
        !            74:        will be loaded from there.  Currently, only double sided, high density
        !            75:        (15 sectors per track) floppies are supported.  For hard disks, the
        !            76:        first 29 sectors of the active partition is reserved for boot code
        !            77:        which will be loaded by the first stage boot.  All the disk types
        !            78:        recognized by BIOS are supported by this bootstrap loader. 
        !            79: [for 386bsd we load the second stage booter to 9000:0]
        !            80: 
        !            81: 
        !            82: 
        !            83: 3. The Second Stage Bootstrap Loader
        !            84:    --------------------------------
        !            85: 
        !            86:        After the boot code is loaded, the control is passed to the second
        !            87:        stage bootstrap loader "boot2()".  In order to be able to load the
        !            88:        big kernel image (bigger than 512K or 640K, depends on the memory
        !            89:        configuration), the second stage boot loader will run on the protected
        !            90:        mode.  This bootstarp loader does not have any stand alone device
        !            91:        drivers, all the I/O's are through the BIOS calls.  Since the first
        !            92:        stage boot code will no longer be used at this moment, the memory
        !            93:        location of the first stage boot code (0000:1000H to 0000:1200H) will
        !            94:        be used as an internal buffer for BIOS calls.  Immediately after this 
        !            95:        internal buffer is the GDT table for the second stage boot loader. 
        !            96:        Since this boot loader needs to switch back and forth between protected
        !            97:        and real mode in order to use BIOS calls, the limit of the boot code
        !            98:        and boot data segments must not be greater than 64K.
        !            99:        
        !           100:        The boot loader loads the kernel image at memory location above 1 MB
        !           101:        to skip the memory hole between 521K/640K and 1MB.  After the kernel
        !           102:        is loaded, the boot loader stores the information in the stack and
        !           103:        then passes control to kernel.  Currently, the three information passed
        !           104:        fromm the boot loader to the kernel are type of the boot device, size
        !           105:        of the base memory and size of the extended memory.
        !           106: 
        !           107: [ 386bsd receives: howto, bootdev]
        !           108: 
        !           109: [ 386bsd is loaded where-ever the "MByte" bits of the load address specify,
        !           110: so if you link it for FE100000 it will load to 1MB, but if you link
        !           111: it for FE000000 it will load ad 0MB]
        !           112: 
        !           113: [for machines with only 512KB normal ram the kernel will need to  be linked
        !           114: for 1MB and the bootblocks modified to run below 512KB. (8000:0)]
        !           115: 
        !           116: 
        !           117: 4. The UNIX Startup
        !           118:    ----------------
        !           119: 
        !           120:        Since the boot loader loads the kernel image at memory location above
        !           121:        1MB, the kernel has to start as protected mode.  In addition, the
        !           122:        link editor description file (vuifile) has to indicate that
        !           123:        the text and data segments start above 1MB.  Also, the boot loader
        !           124:        passes the infomation to the kernel through the stack.
        !           125: 
        !           126: [MOST of what is mentionned below is NOT relevant to 386bsd]
        !           127: 
        !           128: 5. Disk Layout and Bad Block Handling
        !           129:    ---------------------------------
        !           130:        
        !           131:     The System V/386 Release 3.2 (AT) disk layout will be used as the disk
        !           132:     layout for the MACH System on the AT platform.
        !           133: 
        !           134:     This disk layout is as follows:
        !           135: 
        !           136:        * Reserve the first sector of cylinder 0 for the DOS boot record which
        !           137:          contains the master boot code (446 bytes) and the partition table.
        !           138:          (Refer to DOS Technical Reference Manual page 9-6 to 9-10).
        !           139: 
        !           140:        * Reserve the first 29 sectors of the UNIX partition for the first
        !           141:          and the second stage bootstrap.
        !           142: 
        !           143:        * Reserve the 30th sector of the UNIX partition for the pdinfo and
        !           144:          the vtoc tables.
        !           145: 
        !           146:        * Reserve the 31st to the 34th sectors of the UNIX partition for the
        !           147:          bad track and the bad block mapping tables.
        !           148: 
        !           149:        * Reserve up to 253 consecutive tracks when required, beginning with
        !           150:          the 35th sector of the UNIX partition, for alternate tracks.
        !           151: 
        !           152:        * Reserve up to 253 consecutive blocks, beginning with the first
        !           153:          sector after the alternate tracks area, for alternate blocks.
        !           154: 
        !           155:         SEC
        !           156:          1
        !           157:        ----------------------------------------------------
        !           158:        | X |                                              | CYL 0, TRK 0
        !           159:        ----------------  ..........    --------------------
        !           160:        |                 ..........                       |
        !           161:        ----------------  ..........    --------------------
        !           162:        |                 ..........                       |
        !           163:    ===============================================================
        !           164:     ^   |               BOOTSTRAP                          | CYL N, TRK M
        !           165:     |   ----------------------------------------------------
        !           166:     |   |                              |30 |31 |32 |33 |34 |
        !           167:        ----------------------------------------------------  ---
        !           168:     U   |                 ..........                       |   ^
        !           169:     N   ----------------  ..........   ---------------------   |
        !           170:     I   |                 ..........                       | Alternate Tracks
        !           171:     X   ----------------  ..........   ---------------------   |
        !           172:         |                 ..........                       |   V
        !           173:     P   ----------------------------------------------------  --- 
        !           174:     A   |                 ..........                       |   ^
        !           175:     R   ----------------  ..........   ---------------------   |
        !           176:     T   |                 ..........                       | Alternate Blocks
        !           177:     I   ----------------  ..........   --------------------    |
        !           178:     T   |                 ..........                       |   V
        !           179:     I   ----------------------------------------------------  ---
        !           180:     O   |  Unix root partition starts from here            |
        !           181:     N   ----------------                   -----------------
        !           182:        |                                                  |
        !           183:         ----------------------------------------------------
        !           184:         |                                                  |
        !           185:        ----------------------------------------------------
        !           186:        |                                                  |
        !           187:     |   ---------------------------------------------------
        !           188:     |   |                                                  |
        !           189:     |   ----------------------------------------------------
        !           190:     V   |                                                  |
        !           191:    ===============================================================
        !           192:        |                   ........                       |
        !           193:        ---------------     ........          --------------
        !           194:        |                   ........                       |
        !           195:        ----------------------------------------------------
        !           196: 
        !           197: 
        !           198:        The bad block handling mechanism is as follows:
        !           199: 
        !           200:        * Use the alternate track in the alternate tracks area if the
        !           201:          track containing the target sector is bad.
        !           202: 
        !           203:        * Use the alternate block in the alternate blocks area if the
        !           204:          target sector is bad.
        !           205: 
        !           206: 
        !           207: 
        !           208: 
        !           209: 6. How to make:
        !           210:    -----------
        !           211: 
        !           212:        Since the kernel image is loaded above 1 MB, the kernel must start
        !           213:        as protected mode.  This means that this bootstrap loader will work
        !           214:        only when the corresponding changes on the kernel startup code are done.
        !           215: 
        !           216:        The make command to generate this bootstrap loader is:
        !           217: 
        !           218:        make -f boot.mk fdboot      (floppy boot loader)
        !           219:        make -f boot.mk hdboot      (wini boot loader)
        !           220: [to make 386bsd bootblocks  "make sd wd" (warning: they will be installed
        !           221: in /dev/mdec.. take backups)]

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.