[BACK]Return to biosboot.8 CVS log [TXT][DIR] Up to [local] / sys / arch / i386 / stand / biosboot

Annotation of sys/arch/i386/stand/biosboot/biosboot.8, Revision 1.1

1.1     ! nbrk        1: .\"    $OpenBSD: biosboot.8,v 1.22 2007/05/31 19:20:03 jmc Exp $
        !             2: .\"
        !             3: .\" Copyright (c) 2003 Tom Cosgrove <tom.cosgrove@arches-consulting.com>
        !             4: .\" Copyright (c) 1997 Michael Shalayeff
        !             5: .\" All rights reserved.
        !             6: .\"
        !             7: .\" Redistribution and use in source and binary forms, with or without
        !             8: .\" modification, are permitted provided that the following conditions
        !             9: .\" are met:
        !            10: .\" 1. Redistributions of source code must retain the above copyright
        !            11: .\"    notice, this list of conditions and the following disclaimer.
        !            12: .\" 2. Redistributions in binary form must reproduce the above copyright
        !            13: .\"    notice, this list of conditions and the following disclaimer in the
        !            14: .\"    documentation and/or other materials provided with the distribution.
        !            15: .\"
        !            16: .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            17: .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        !            18: .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            19: .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            20: .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            21: .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            22: .\" OR SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            23: .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            24: .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            25: .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            26: .\" SUCH DAMAGE.
        !            27: .\"
        !            28: .Dd $Mdocdate: May 31 2007 $
        !            29: .Dt BIOSBOOT 8 i386
        !            30: .Os
        !            31: .Sh NAME
        !            32: .Nm biosboot
        !            33: .Nd
        !            34: i386-specific first-stage system bootstrap
        !            35: .Sh DESCRIPTION
        !            36: This small program (roughly 512 bytes of code) is responsible for
        !            37: loading the second-stage
        !            38: .Xr boot 8
        !            39: program (typically /boot), which in turn will load the kernel.
        !            40: .Pp
        !            41: .Nm
        !            42: must be installed by
        !            43: .Xr installboot 8 .
        !            44: As part of the installation,
        !            45: .Xr installboot 8
        !            46: patches
        !            47: .Nm
        !            48: with information about the location of
        !            49: .Xr boot 8
        !            50: on disk.
        !            51: Specifically, it writes the filesystem block number of
        !            52: .Xr boot 8 's
        !            53: inode,
        !            54: the offset within this block of the inode,
        !            55: and various filesystem parameters (taken from the superblock)
        !            56: required to convert filesystem blocks to disk sectors.
        !            57: .Pp
        !            58: You must re-run
        !            59: .Xr installboot 8
        !            60: whenever
        !            61: .Xr boot 8
        !            62: is changed, as its inode may change.
        !            63: While it should not be necessary,
        !            64: it may also be advisable to re-run
        !            65: .Xr installboot 8
        !            66: if you move your disk between machines and/or controllers.
        !            67: .Pp
        !            68: When
        !            69: .Nm
        !            70: receives control from either the BIOS or the
        !            71: master boot record (MBR) it will print the message:
        !            72: .Pp
        !            73: .Dl Loading
        !            74: .Pp
        !            75: followed by a dot for every filesystem block it attempts to load.
        !            76: If /boot is loaded successfully,
        !            77: .Nm
        !            78: will put the cursor on the next line just before
        !            79: transferring control to the newly-loaded program.
        !            80: .Pp
        !            81: If possible,
        !            82: .Nm
        !            83: will read disk sectors using calls detailed in the Phoenix
        !            84: Enhanced Disk Drive Specification (EDD, sometimes known as LBA, reads).
        !            85: It will fall back to CHS reads only if EDD calls are not available.
        !            86: However, to allow users to boot on hardware that claims LBA capability,
        !            87: but which requires CHS reads in order to boot,
        !            88: the user may hold down either Shift key during boot.
        !            89: If
        !            90: .Nm
        !            91: detects this, it will force itself to use CHS calls, ignoring
        !            92: any LBA capability.
        !            93: This will of course prevent booting if /boot lies above the 8 GB
        !            94: CHS limit.
        !            95: There is an exported symbol
        !            96: .Dq force_chs
        !            97: of type u_int8_t
        !            98: which may be set to 1 to force CHS reads always.
        !            99: (However, no tool is currently provided to set this flag.)
        !           100: .Sh DIAGNOSTICS
        !           101: .Nm
        !           102: prints a
        !           103: .Sq !\&
        !           104: before the
        !           105: .Dq Loading
        !           106: message if it is being forced to use CHS rather than LBA reads
        !           107: (by the user holding down either Shift key during boot,
        !           108: or having set the
        !           109: .Dq force_chs
        !           110: flag in the boot sector).
        !           111: .Pp
        !           112: .Nm
        !           113: prints a
        !           114: .Sq ;\&
        !           115: after the
        !           116: .Dq Loading
        !           117: message if it is going to use CHS reads for any reason.
        !           118: For example, when booting from floppy or CD-ROM.
        !           119: .Pp
        !           120: .Nm
        !           121: may fail with any of the following error messages:
        !           122: .Bl -tag -width ERR_X__
        !           123: .It Er ERR I
        !           124: Too many indirect blocks.
        !           125: .Nm
        !           126: is capable of reading the direct blocks in
        !           127: .Xr boot 8 's
        !           128: inode (the location of which is patched into
        !           129: .Nm
        !           130: by
        !           131: .Xr installboot 8 )
        !           132: and the first indirect block,
        !           133: but it is not capable of reading further indirect blocks.
        !           134: This error indicates that further such indirect blocks were found.
        !           135: The system will not be able to boot.
        !           136: .Pp
        !           137: This is unlikely to ever happen in practice, as
        !           138: .Xr boot 8
        !           139: has to be quite large for this to be an issue.
        !           140: The smallest possible filesystem block size is 512 bytes
        !           141: (one sector per filesystem block).
        !           142: On such a system, there are 140 filesystem blocks that
        !           143: .Nm
        !           144: can read, so
        !           145: .Xr boot 8
        !           146: can be up to 70 KB.
        !           147: .Pp
        !           148: However, even on floppy disks the filesystem block size is 1024 bytes.
        !           149: This allows
        !           150: .Xr boot 8
        !           151: to occupy up to 268 disk blocks,
        !           152: i.e. to be 268 KB.
        !           153: On hard disks (default filesystem block size 16 KB)
        !           154: 4,108 disk blocks are available, to allow
        !           155: .Xr boot 8
        !           156: to be over 64 MB in size!
        !           157: (Only direct blocks are required for
        !           158: .Xr boot 8 s
        !           159: of up to 192 KB.)
        !           160: .It Er ERR M
        !           161: Bad magic.
        !           162: The ELF
        !           163: .Dq magic number
        !           164: \e7fELF in
        !           165: .Xr boot 8 's
        !           166: header was not found.
        !           167: This indicates that the first block of
        !           168: .Xr boot 8
        !           169: was not read correctly.
        !           170: This could be due to disk corruption,
        !           171: failing to run
        !           172: .Xr installboot 8 ,
        !           173: giving an invalid
        !           174: .Xr boot 8
        !           175: program as the
        !           176: .Ar boot
        !           177: argument to
        !           178: .Xr installboot 8 ,
        !           179: or
        !           180: incorrect geometry translation.
        !           181: .It Er ERR R
        !           182: Read error.
        !           183: The BIOS returned an error indication when
        !           184: .Nm
        !           185: attempted to read a disk sector.
        !           186: This might be any media error, including bad sectors (common on floppy disks),
        !           187: and invalid sectors (can occur with bad geometry translations).
        !           188: .Pp
        !           189: If this error occurs during an LBA boot (no
        !           190: .Sq ;\&
        !           191: after
        !           192: .Dq Loading ) ,
        !           193: then a CHS boot may succeed.
        !           194: To do this, you should reboot, then hold down either Shift key
        !           195: before
        !           196: .Nm
        !           197: starts.
        !           198: You should see a
        !           199: .Sq !\&
        !           200: before
        !           201: .Dq Loading
        !           202: as confirmation that your
        !           203: override was accepted.
        !           204: .It Er ERR X
        !           205: Can't boot.
        !           206: Issued when trying to read sectors in CHS mode,
        !           207: but the BIOS call
        !           208: .Em get\ drive\ parameters
        !           209: failed or gave a value of 0 for the number of sectors per track.
        !           210: In either case, it is not possible for
        !           211: .Nm
        !           212: to calculate the (cylinder, head, sector) values required to
        !           213: read any sectors.
        !           214: .El
        !           215: .Sh NOTES
        !           216: Using
        !           217: .Nm
        !           218: as the MBR,
        !           219: as has been done in the past,
        !           220: is not recommended, and is not supported.
        !           221: Instead, create a single
        !           222: .Xr fdisk 8
        !           223: partition that spans the entire disk.
        !           224: .Pp
        !           225: Despite the support for
        !           226: .Xr boot 8
        !           227: over the 8 GB boundary,
        !           228: good
        !           229: .Xr disklabel 8
        !           230: partitioning practices should still be followed.
        !           231: .Sh FILES
        !           232: .Bl -tag -width /usr/mdec/biosbootxx -compact
        !           233: .It Pa /usr/mdec/mbr
        !           234: Master Boot Record block
        !           235: .It Pa /usr/mdec/biosboot
        !           236: primary bootstrap
        !           237: .It Pa /boot
        !           238: secondary bootstrap
        !           239: .It Pa /usr/mdec/pxeboot
        !           240: PXE bootstrap
        !           241: .It Pa /bsd
        !           242: .Ox
        !           243: kernel
        !           244: .It Pa /bsd.mp
        !           245: .Ox
        !           246: kernel for multi-processor machines
        !           247: .It Pa /bsd.rd
        !           248: .Ox
        !           249: kernel for installation/recovery
        !           250: .El
        !           251: .Sh SEE ALSO
        !           252: .Xr boot 8 ,
        !           253: .Xr boot_i386 8 ,
        !           254: .Xr disklabel 8 ,
        !           255: .Xr fdisk 8 ,
        !           256: .Xr installboot 8 ,
        !           257: .Xr pxeboot 8
        !           258: .Sh HISTORY
        !           259: .Nm
        !           260: was originally written by Michael Shalayeff for
        !           261: .Ox 2.1 .
        !           262: However it was based on bootstrap code from older versions of this
        !           263: operating system, other operating systems, other programs, and
        !           264: other people's work.
        !           265: .Pp
        !           266: It was significantly revised in December 2003 by Tom Cosgrove,
        !           267: in order to support LBA disk access (via the Phoenix Enhanced Disk
        !           268: Drive Specification API).
        !           269: At that time the internal table of disk blocks was removed, and
        !           270: .Nm
        !           271: modified to read filesystem block numbers from the inode.
        !           272: .Sh BUGS
        !           273: .Nm
        !           274: should perform and verify a checksum across the entire loaded
        !           275: .Xr boot 8
        !           276: image,
        !           277: rather than just checking the magic number in the first block.
        !           278: .Pp
        !           279: There is no BIOS error number reported nor is the location of the error
        !           280: reported.
        !           281: .Pp
        !           282: You can pick your motherboard, and you can pick your BIOS,
        !           283: but you can't pick your motherboard's BIOS.

CVSweb