COHERENT manpages
This page displays the COHERENT manpage for booting [How booting works].
List of available manpages
Index
booting -- Technical Information How booting works Booting is the method by which COHERENT is loaded from a hard disk or floppy disk and set into action. The term comes from the old expression about pulling one's self up by one's bootstraps. This article discusses the events that take place while booting the COHERENT system. You do not need to read this article to know how to boot COHERENT, as all booting details are handled by COHERENT automatically. However, if you are interested in the details, or want to tailor the system to your needs, it will help. Two I/O devices are involved in booting. The first device is called the boot device; it contains the program necessary to invoke the COHERENT system and start it running. The second device is called the root device; it contains the root file system after the system is running. In most cases, these two devices are the same physical device. Initial Startup When you boot from a hard disk, your computer's BIOS loads the master boot from the first sector of your hard disk into memory. The master boot then loads the secondary boot from the first sector of your boot partition. When you boot from a floppy disk, however, the BIOS loads the secondary boot directly. This program, called the bootstrap or secondary boot, is very small (only 512 bytes), so it cannot do very much. Therefore, its main purpose is to read in a larger, more complex program called the tertiary boot, or /tboot. It is /tboot that actually performs the work of loading the COHERENT system into memory. If the secondary boot does not find a file called /tboot, it print a `?' to prompt for the boot image you want it to load. This indicates a severe error because it means that the tertiary boot can not be found. If the secondary boot finds /tboot, it loads it into memory and lets it take over booting. The first thing /tboot does is search for a file called /autoboot in the root directory of the device being booted. If /tboot finds /autoboot, it first pauses for five seconds, so you can abort the process and boot another kernel if you wish. If you do not abort booting within five seconds, /tboot then loads /autoboot into memory and runs it. If, however, /tboot cannot find /autoboot, it prompts you to type the name of the COHERENT image to boot, usually /coherent. You can type the commands dir or ls if you do not remember the name of the image you wish to boot. Note that /autoboot is usually a link to /coherent. If you need to find the file name of the kernel you are now running (usually /coherent), use the program fifo(), which is kept in library libmisc. See the Lexicon entry libmisc for details. After it loads the system image /autoboot from the root device, the system initializes all devices, as well as starting the idle process and program /etc/init. The idle process uses any leftover computer time. init controls the operation of the system from this point on. It first executes the command /etc/brc (i.e., ``boot run commands''), which can run commands like fsck. brc can request a reboot, remain in single-user mode, or enter multi-user mode automatically. init then calls the shell to handle commands from the system console. The shell responds by prompting with #, and expects regular commands. At this point, the system is in single-user mode, which means that no other users can log in to the system. The shell is running in superuser mode and only the console's user is logged in. At this point, you can enter commands to the system in a normal fashion. One difference from normal, multi-user operation is that the system is in single-user mode, to allow special processing to take place before other users log in. Being in single-user mode gives you the opportunity to run fsck to check the file system and perform other administrative tasks before other users log into the system. When administrative activities are finished, you should type <ctrl- D>. This terminates single-user operation; init then opens the system to other users. The file /etc/rc contains shell commands that the system executes just before making the system available to other users. This file typically includes commands to delete temporary files and mount standard devices. It also performs any installation-specific commands you require. As system administrator, you maintain this file. You must be sure that it is properly updated and never removed. One command that must be included in /etc/rc is /etc/update, which periodically calls sync() to update buffered data to the disk. init also maintains the file /etc/utmp, which notes users' login and logout. Features of the Master Bootstrap The COHERENT master bootstrap allows you to boot different operating systems from different partitions of any hard drive. It is more powerful than similar programs of other operating systems, and we strongly recommend that you use it. If you do not use the MWC bootstrap, you may have to use floppy disks to boot up MS-DOS and COHERENT. If you have two hard drives and you are placing COHERENT on the second drive, you must use the MWC bootstrap. The bootstrap can be configured in three ways: 1. No active partition. With this configuration, you have the greatest degree of flexibility. When you boot your system, the following prompt appears on the screen: Select Partition 0-7 This means that you must press the number key that corresponds to the partition that holds the root partition of the operating system you wish to boot. (For example, if you wish to boot COHERENT and its root partition is on partition 2, then press the `2' key in response to this prompt.) If you have one hard drive, only partitions 0 through 3 are relevant to you. The bootstrap waits indefinitely until you tell it what to boot. 2. COHERENT is active partition. Under this configuration, the system will automatically boot COHERENT unless you press the number key that represents the root partition of another operating system (e.g., MS-DOS) while the A-drive light is on. 3. MS-DOS (or another operating system) is active partition. Under this configuration, the system automatically boots MS-DOS unless you hit the number key that represents the root partition of another operating system (e.g., COHERENT) while the A-drive light is on. Under some hardware configurations, particularly faster 80386 machines, having an active partition can cause difficulties when you try to boot a non-active partition. It often is difficult to press the appropriate number key at the right time, and the right time itself can vary. For this reason, the default setting of the master bootstrap is to have no active partition. If at any time you wish to reconfigure the bootstrap, you need only to run the fdisk utility under COHERENT and access option 1 (Change active partition) of the option menu. Make the desired change and then save the updated partition table. Files Used During Startup The following files are used when the system is in single-user mode: /etc/drvld.all Device tables to load. This usually names the keyboard driver to use, should you be using the keyboard driver vtnkb. /etc/init Initiate a process on each terminal line, call login when appropriate. /etc/brc Shell commands for booting. /etc/checklist List of partitions for fsck to check. /bin/sh Bourne shell. /bin/ksh Korn shell. The following files are needed after the system has entered multi-user mode: /bin/login This file holds the program that controls logging in. /etc/getty This file holds the executable program that permits a user to log in on a port. /etc/logmsg This file holds the text of the login prompt. /etc/motd This file holds the message of the day. /etc/mount.all Shell script to mount partitions. /etc/rc This file holds a series of shell commands that coherent executes when it enters multi-user startup. /etc/ttys This file is holds information about terminals. Its contents are read by getty to ensure that it sets the port to the correct baud rate and terminal type. /etc/utmp This file holds information about who is logged in right now. It is read by the command who. Building a Bootable Floppy Disk Building a bootable floppy disk for COHERENT requires a few more steps than are required to build a bootable floppy for MS-DOS. The task is not particularly painful, it simply requires a little more attention to detail. The following details the steps required to build a version of COHERENT that can be booted off a floppy disk. Note that the following describes an extremely minimal configuration, which can be used only in single-user mode. 1. Format the Floppy Disk To begin, format the floppy disk with the command /etc/fdformat. After you format the floppy disk, use the command /etc/mkfs command to write a blank file system onto it. 2. Write a Bootstrap to the Floppy Disk To make the floppy disk bootable, you must copy a special program, or bootstrap, into the first sector (or boot block) of the floppy disk. (This is the same program that is called the secondary boot in the above sections.) If a floppy disk is to be bootable, a set of instructions must be present in the boot block that tell the system the name of the kernel -- that is, the file on the floppy disk to be loaded and executed. To write the bootstrap to the floppy disk, you must copy it to the device that the floppy disk is in. This ensures that the bootstrap is copied to the first sector, or boot block, of the floppy disk. For example, to copy the bootstrap for a 1.2-megabyte floppy disk in floppy drive 0 (or A), type the command: cp /conf/boot.fha /dev/fha0 To copy the bootstrap for a 1.44-megabyte floppy disk to floppy drive 0, type the command: cp /conf/boot.fva /dev/fva0 3. Write Tertiary Boot After you have copied the boot sector, you must mount the floppy device and copy /tboot to it. To mount a 1.44-megabyte floppy disk to floppy drive 0, type the command: /etc/mount /dev/fva0 /f0 Copy /tboot with the following command: cp /tboot /f0 Warning: Never mount the floppy disk before you copy the bootstrap to it! See the Lexicon article on floppy disks for the table of floppy disk devices to use with the above commands. 4. Copy the Necessary Files Once the bootstrap is properly written to the floppy disk, it is now time to copy the essential files to it. Type the following commands: mkdir /f0/etc mkdir /f0/dev mkdir /f0/bin mkdir /f0/tmp cp /tboot /coherent /coherent.sym /f0 cp /etc/init /etc/brc /etc/profile /f0/etc cp /dev/* /f0/dev cp /bin/sh /bin/sync /f0/bin If you are using either of the loadable keyboard drivers nkt or vtnkb, also execute the following commands: mkdir /f0/drv mkdir /f0/conf mkdir /f0/conf/kbd cp /etc/drvld.all /f0/etc cp /drv/* /f0/drv cp /conf/kbd/* /f0/conf/kbd The above files will let you run COHERENT in single-user mode, which is all that you need when you boot COHERENT from a floppy disk. Note that the files /etc/brc and /etc/drvld.all are scripts that you must modify to suit your needs. The file /etc/brc is a key file in the booting process, so be prepared to modify its contents. The significance of this will be reviewed in depth in the next section. Warning: After you have finished copying files to the floppy disk, execute the command umount to unmount the floppy disk. If you do not, the files will be damaged or lost! 5. The Boot Sequence, Modifications To Make the Disk Work When the computer system powers up and accesses the floppy disk, it reads the boot sector of the disk, which in turn looks for the file /tboot and executes it. /tboot looks for the kernel named /autoboot, reads it, and executes it. If /tboot cannot find /autoboot, it prompts you to type the name of the kernel to boot. The kernel loads and invokes /etc/init which, in part, looks for and executes the statements in /etc/brc, which, in turn, typically loads loadable drivers and runs /etc/fsck to check the file systems. If you wish to run fsck on the floppy disk, you must copy it from the hard drive. What is truly important is the exit status of /etc/brc. If its exit status is not zero, the system remains in single-user mode. If its exit status is zero, the system attempts to enter multiuser mode. The above-listed files are the bare minimum for a single-user floppy disk. To build a floppy disk with the minimum files needed, your /etc/brc file should look like this: /etc/drvld.all exit 1 This forces an exit status of one and causes COHERENT to spawn a single-user shell, /bin/sh. From the shell prompt, you can do whatever you wish, but you are limited to the commands and functions copied to the floppy disk. /etc/brc is not the only file that may need modification. The kernel (/coherent or /autoboot) must have the values rootdev and pipedev patched for the floppy disk's major and minor device numbers. This patching can be done with the commands /bin/db or /conf/patch. To patch the kernel on the floppy disk mounted on /f0 for a 5.25-inch, high-density disk as the root and pipe device, type: /conf/patch /f0/coherent rootdev=makedev\(4,14\) /conf/patch /f0/coherent pipedev=makedev\(4,14\) For a 3.5-inch, high-density disk, type: /conf/patch /f0/coherent rootdev=makedev\(4,15\) /conf/patch /f0/coherent pipedev=makedev\(4,15\) Finally, note that when you boot your floppy disk, the disk must not be write protected. This is because COHERENT must be able to write temporary files into directory /tmp; if it cannot do so, booting will fail. Uses of a Bootable Floppy Disk A bootable floppy disk can be a lifesaver should something occur to corrupt the COHERENT file system on the hard drive. A properly prepared floppy can be used to recover a damaged file system by running /etc/fsck. You can also use it to copy files from the hard drive should you decide to re-install COHERENT on the hard drive. Multiuser-mode floppy disks can also be built for the fun of seeing such a system run from a floppy disk. The capacity of such a system is limited, of course, but it can be done. See Also Administering COHERENT, boot, libmisc, tboot Notes Some users have attempted to use Norton Utilities or similar tools to rearrange the partition table, only to find that COHERENT no longer boots. That is because the kernel has embedded within it the name of the partition on which it and its root file system live. By using Norton Utilities to shuffle the partition table, the kernel will no longer be able to find any of the files or utilities it needs to boot your system. If you still wish to shuffle your disk's partition table, be sure to change the name of the root device within the kernel before you change the partition table.