diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2004-03-08 22:53:58 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2004-03-08 22:53:58 +0000 |
commit | cbf2c190f8fda29ee29fd7e74146db12ac5177e1 (patch) | |
tree | dc14d1ba6b9d804451e71cdf535bf500b8826c50 /share/man/man8 | |
parent | 7c12247b197f12d80afce1ad5e254a6cb7627577 (diff) |
from boot_i386.8 -- now tom can tweak it to be even more true
Diffstat (limited to 'share/man/man8')
-rw-r--r-- | share/man/man8/man8.amd64/Makefile | 5 | ||||
-rw-r--r-- | share/man/man8/man8.amd64/boot_amd64.8 | 187 |
2 files changed, 189 insertions, 3 deletions
diff --git a/share/man/man8/man8.amd64/Makefile b/share/man/man8/man8.amd64/Makefile index f081c719bb8..6f079a433f2 100644 --- a/share/man/man8/man8.amd64/Makefile +++ b/share/man/man8/man8.amd64/Makefile @@ -1,7 +1,6 @@ -# $OpenBSD: Makefile,v 1.1 2004/02/16 19:04:42 miod Exp $ +# $OpenBSD: Makefile,v 1.2 2004/03/08 22:53:57 deraadt Exp $ -# TODO: boot_amd64.8 -MAN= MAKEDEV.8 +MAN= MAKEDEV.8 boot_amd64.8 MANSUBDIR=amd64 .include <bsd.prog.mk> diff --git a/share/man/man8/man8.amd64/boot_amd64.8 b/share/man/man8/man8.amd64/boot_amd64.8 new file mode 100644 index 00000000000..b3d8eb7b100 --- /dev/null +++ b/share/man/man8/man8.amd64/boot_amd64.8 @@ -0,0 +1,187 @@ +.\" $OpenBSD: boot_amd64.8,v 1.1 2004/03/08 22:53:57 deraadt Exp $ +.\" +.\" Copyright (c) 1997 Tobias Weingartner +.\" +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.Dd September 4, 1997 +.Dt BOOT_AMD64 8 amd64 +.Os +.Sh NAME +.Nm boot_amd64 +.Nd amd64 system bootstrapping procedures +.Sh DESCRIPTION +.Ss Cold starts +The +.Tn "PC AT" +clones will perform a POST (Power On Self Test) upon being booted cold. +This test will find and initialize memory, keyboard, and other devices. +It will search for and initialize any extension ROMs that are present, +and then attempt to boot the operating system from an available boot +drive. +Failing this, older IBM systems come up in ROM BASIC. +.Pp +The newer +.Tn "PC AT" +clones attempt to boot off the drive specified in the BIOS setup, or +if it is an older BIOS, it will start with checking for a disk in floppy +drive A (otherwise known as drive 0) first, and failing that, attempt to +boot the hard disk C (otherwise known as hard disk controller 1, drive 0). +.Ss Warm starts +The BIOS loads the first block (at physical location: track 0, head 0, +sector 1) off the boot device into memory, and if the last two bytes in the +block match the signature 0xAA55, the BIOS considers the block a valid +bootable drive. +The BIOS then proceeds to call the machine code program in this block. +If the BIOS is current, it will also pass the boot drive +to the boot block in register %dl. +.Pp +There are two different types of boot blocks on devices. +There is the +MBR (master boot record) and the PBR (partition boot record). +A digression +into a little piece of history will quickly give light as to why this is so. +In the beginning, the PC +.Dq architecture +came with single or dual floppy +drives, and no hard drives. +The only type of bootable sectors on any device were the PBRs. +They were responsible for loading the rest of the operating +system from the correct device. +When hard disks came out, it was felt that +such a huge space should be able to be partitioned into separate drives, +and this is when the MBR was invented. +.Pp +The MBR relocates itself upon being loaded and invoked by the BIOS. +Embedded within the MBR is a partition table, with four partition table +entries. +The MBR code traverses this table (which was loaded with the +MBR by the BIOS), looking for an active entry, and then loads the MBR or +PBR from the disk location specified by the partition table entry. +So in reality, the MBR is nothing more than a fancy chaining PBR. +.Pp +Note: The MBR could load another MBR, which is the case when you are booting +off an extended partition. +In other words, the first block of an extended +partition is really an MBR, which will then load the corresponding MBR or PBR +out of its extended partition's partition table. +.Ss Geometry translation +.Em WARNING : +This portion of the +.Dq PC BIOS Architecture +is a mess, and a compatibility nightmare. +.Pp +The PC BIOS has an API to manipulate any disk that the BIOS happens to +support. +This interface uses 10 bits to address the cylinder, 8 bits to +address the head, and 6 bits to address the sector of a drive. +This restricts any application using the BIOS to being able to address only +1024 cylinders, 256 heads, and 63 (since the sectors are 1 based) sectors +on a disk. +These limitations proved to be fine for roughly 3 years after +the debut of hard disks on PC computers. +.Pp +Many (if not all) newer drives have many more cylinders than the BIOS API +can support, and likely more sectors per track as well. +To allow the BIOS the ability of accessing these large drives, the BIOS would +.Dq re-map +the +cylinder/head/sector of the real drive geometry into something that would +allow the applications using the BIOS to access a larger portion of the +drive, still using the restricted BIOS API. +.Pp +The reason this has become a problem is that any modern OS will use its own +drivers to access the disk drive, bypassing the BIOS completely. +However, +the MBR, PBR, and partition tables are all still written using the original +BIOS access methods. +This is for backwards compatibility to the original IBM PC! +.Pp +So the gist of it is, the MBR, PBR, and partition table need to have BIOS +geometry offsets and cylinder/head/sector values for them to be able to +load any type of operating system. +This geometry can, and likely will, +change whenever you move a disk from machine to machine, or from controller +to controller. +.Em They are controller and machine specific . +.Ss Boot process options +On most +.Ox +systems, booting +.Ox +from the BIOS will eventually load the +.Ox -specific +amd64 bootstrapping code. +This versatile program is described in a separate document, +.Xr boot 8 . +Other bootstrapping software may be used, and can chain-load the +.Ox +bootstrapping code, or directly load the kernel. +In the latter case, refer to your bootloader documentation to know which +options are available. +.Ss Abnormal system termination +In case of system crashes, the kernel will usually enter the kernel +debugger, +.Xr ddb 4 , +unless it is not present in the kernel, or it is disabled via the +.Em ddb.panic +sysctl. +Upon leaving ddb, or if ddb was not entered, the kernel will halt the system +if it was still in device configuration phase, or attempt a dump to the +configured dump device, if possible. +The crash dump will then be recovered by +.Xr savecore 8 +during the next multi-user boot cycle. +It is also possible to force other behaviours from ddb. +.Sh FILES +.Bl -tag -width /usr/mdec/biosboot -compact +.It Pa /bsd +default system kernel +.It Pa /usr/mdec/mbr +system MBR image +.It Pa /usr/mdec/biosboot +system primary stage bootstrap (PBR) +.It Pa /usr/mdec/boot +system second stage bootstrap (usually also installed as +.Pa /boot ) +.El +.Sh SEE ALSO +.Xr ddb 4 , +.Xr boot 8 , +.Xr halt 8 , +.Xr init 8 , +.Xr installboot 8 , +.Xr reboot 8 , +.Xr savecore 8 , +.Xr shutdown 8 +.Sh BUGS +The +.Dq PC BIOS Architecture +makes this process very prone to weird and +wonderful interactions between different operating systems. +.Pp +There is no published standard to the MBR and PBR, +which makes coding these a nightmare. +.\" .Pp +.\" Somebody *please* write me a decent BIOS, and make them (the masses) use it! |