Chapter 4 Booting and Boot Managers: LILO, loadlin, etc. This chapter describes various methods of booting a Linux system. To have a better understanding of what is involved, we will first illustrate some technical details of booting a PC. 4.1 Booting a PC After turning on your computer, the first thing that happens is that the BIOS (Basic Input Output System) takes control, initializes the screen and key- board, and tests the main memory. Until this task is completed, no external devices or external storage media are known to the system. Once the basic system has finished its internal setup, it starts to verify the hardware around it. Date, time, and information about some of the most important external devices are read from the CMOS settings (usually referred to as the CMOS setup). After reading the CMOS, the BIOS should recognize the first hard disk (including details such as its geometry). It can then start to load the operating system (OS) from there. To load the OS, the system loads a 512-byte data segment from the first hard disk into main memory and executes the code stored at the beginning of this segment. The instructions contained there determine the rest of the boot process. This is the reason why the first 512 bytes of the hard disk are often called the Master Boot Record (MBR) ( MBR). Even though the whole process is rather complicated and this description is over-simplified, it should be clear that up to this point (loading of the MBR), the boot sequence is independent of the installed operating system, is identical on all PC's, and all the PC has to access peripheral hardware is those routines (drivers) stored in the BIOS. Master Boot Record The layout of the MBR has been certified by an independent convention. The first 446 bytes are reserved for program code.1 The next 64 bytes offer space for a partition table for up to four partitions.2 The last two bytes have to 1 The code itself ­ and its capabilities ­ depend on the system that created the MBR. 2 Without this partition table, no filesystem can exist-you cannot use the hard disk. 103 4. Booting and Boot Managers contain a special "magic number" (AA55). Any MBR which replaces this number by a different number is rejected. Boot Sectors Boot sectors are the first sectors on a hard disk partition.3 They offer 512 bytes of space and are designed to contain code which is able to launch an operating system on this partition. Boot sectors of formatted DOS, Win- dows, and OS/2 partitions do exactly that. In contrast, Linux boot partitions are empty at the very start. A Linux partition cannot be started directly, although it may contain a kernel and a valid root filesystem. A valid boot sector follows the conventions and enters the "magic number" of the MBR into the last two bytes. Booting DOS or Windows 95 The MBR contains information that determines which partition of a hard disk is "active", i. e., which partition should be searched for the operating system to be booted.4 The executable code in the MBR (first stage of the boot loader) tests whether the marked partition contains a valid boot sector. If this is the case, the second stage of the boot loader can be started from there. DOS system programs can now be loaded and you will see the usual DOS prompt. In DOS, only primary partitions can be marked active. Therefore, you cannot use logical partitions inside an extended partition as bootable DOS partitions. 4.2 Different Boot Concepts The simplest boot concept affects only one machine with one operating sys- tem installed. A widely deployed PC configuration is DOS or Windows 95 as the only system installed. The boot sequence for this case has already been outlined. A similar concept can be used for Linux,5 if Linux is the only operating system being used. In this case, one could theoretically skip the installation of LILO. The big disadvantage of doing this is that you can't pass additional parameters to the system kernel at boot time. As soon as there is more than one operating system installed, there are a number of new boot possibilities. Booting another OS from a floppy disk The first OS can be booted from the hard disk. Other operating systems can be booted by using boot disks. * Requirements: the floppy drive must be bootable. * Advantage: you can skip the potentially tricky boot loader installation. 3 except for the extended partition which serves as a "container" for other partitions 4 This implies that DOS has to be installed on the first hard drive. 5 You would have to write the Linux kernel directly onto a "raw" partition and launch this from the MBR. This is rather uncommon, however. 104 4.3. An Overview of LILO * Disadvantage: you have to ensure that you are not running out of working boot disks. * It might be an advantage or disadvantage that your Linux is not capable of booting without a boot disk, depending on what it is to be used for. * The boot process will take slightly longer. Boot chaining of additional systems The same OS is always booted and others can optionally be started from within the first OS. * Requirements: adequate programs for chain booting of operating sys- tems must be available. * An example is the loading of Linux from DOS using loadlin or starting a NetWare server from DOS with server.exe. Installing a boot manager Theoretically, this allows you to use an arbitrary number of operating systems on a single machine. The choice of systems is done at boot time. Changing operating systems requires a reboot. * Requirements: the boot manager must work smoothly with all installed operating systems. * Examples of co-existing boot managers (at least under certain circum- stances) are OS/26 and the DOS boot loader boot.sys. The following section describes the installation and configuration of a boot manager, using the Linux boot manager LILO. A complete description of LILO's features can be found in [Alm94].7 This is followed by a description of loadlin. 4.3 An Overview of LILO LILO-here we go... The Linux boot loader is usually installed in the MBR (details below, page 107 and Section 4.5 page 114). When started, LILO already has access to both real mode hard disks, and due to its installation, is able to find all the data it needs from the raw hard drives8 without needing any information on par- titioning. Because of this, operating systems can be booted from the first as well as from the second hard drive. The entries in the partition table that the standard DOS MBR uses to mark the active partition are ignored when using LILO in the MBR. An important difference to the standard DOS boot sequence is that you can select any of the installed systems at boot time when using LILO. After loading the MBR into memory, LILO is started and you are asked to select one of the installed operating systems (see on the following page). 6 more in Section 4.7.3 page 119 7 This file can be printed by entering earth:/usr/doc/packages/lilo # lpr user.dvi or viewed with earth:/usr/doc/packages/lilo # xdvi user.dvi 8 A raw device is a device that is accessed directly without using a filesystem. 105 4. Booting and Boot Managers What is LILO? LILO is a versatile boot manager. It can launch an operating system in the following ways: * by loading the boot sector of a partition and starting an operating system from this partition. This is what other boot managers also do. * by loading the Linux kernel and starting Linux. This cannot be done by most other boot managers. Furthermore, LILO provides an important option of being able to pass a command line to the kernel. For security reasons, this can be protected totally, or partially, with a password. How Do You Boot with LILO? When LILO is launched, it displays the text LILO and a greeting message (which you yourself entered during installation). Thereafter, a command prompt appears: boot: Here, you select your operating system by entering its name, which is then booted. The name of the operating system has previously been set by you during installation. At this point, you can pass a parameter line to the Linux kernel. You can also get a list of all the operating system names available by pressing TAB . The Components of LILO The LILO machinery consists of the following components:9 * the beginning, or first step, of the LILO code in a boot sector which activates the system boot * the heart of the LILO code, localized in /boot/boot.b * a map file, normally /boot/map, where LILO enters the location of Linux kernels and other data during its installation * optional: a message file whose contents are displayed as a welcome mes- sage before the LILO boot selection. Its usual location is: /boot/message (or similar) * the different Linux kernel and boot sectors that LILO should offer Any write access (even through file movements) on any of these files corrupts the map file, thus requiring you to reinstall LILO (Section 4.5 page 114). This is only relevant when you change to another kernel. 9 By the way, the boot sectors installed by LILO contain a typical virus boot sequence. DOS virus scanners typically claim to have found the AIRCOP boot sector virus in files such as /boot/any_b.b or /boot/any_d.b. Also, you should disable any BIOS protection of the MBR. 106 4.3. An Overview of LILO Where LILO Can Be Installed This is referring to the above-mentioned first step of LILO. Before going into detail, we would like to point out a very important general restriction: All LILO components must be located on the first 1024 cylinders of the hard drive. This is because these are the only cylinders available when the BIOS starts the system. With older BIOSes and IDE drives one can also be restricted to either of the first two hard drives (/dev/hda and /dev/hdb). If there are any (E)IDE hard drives installed, your SCSI devices will be not able to boot either. This is rather annoying as the 1024 cylinders limit is reached much more quickly with SCSI devices (8 GB) than with IDE devices (504 MB to 2 GB). Note that this is a limitation of the PC BIOS, not of Linux or LILO. Many newer BIOSes allow access to additional devices, for example, in con- nection with EIDE hard drive controllers for up to 4 EIDE devices. Many modern SCSI host adapters even allow SCSI devices to be "pushed to the front" in order to make them bootable. If you want to make use of this feature with LILO, have a look at the disk options on 112. For the sake of simplicity we will combine all this under the heading "1024 cylinder limit". It should all be considered before a first-time installation (Section 2.6.1 page 47) - afterwards it is too late, and may cause a lot of extra work. For more information, see section 4.8.2. The following locations are possible to store the LILO boot sector. * on a floppy disk. This is the most secure, but also the slowest alternative for booting with LILO (see Section 4.6 page 116). Choose this alternative if you do not want to change boot sectors. * in the boot sector of a primary Linux partition on the first hard drive. This leaves the MBR untouched. Before it can be booted, the partition has to be marked active, with fdisk. If Linux is fully installed on logical drives or partitions on the second hard drive, there is only the boot sector of the extended drive of the first drive left (if there is one). Linux fdisk can also activate such a partition. If you want to boot multiple systems from hard disk, this is quite long- winded. Every time you want to boot you have to activate the corre- sponding boot sector beforehand. The next two variants are much less cumbersome. * in the Master Boot Record. This variation offers the highest flexibility. Moreover, this is the only alternative possible if all of the Linux partitions reside on the second hard drive and there is no extended partition on the first drive. Every setting of the MBR must be edited with extreme care since errors may have severe consequences. The safety aspects are described in Section 4.5 page 114. * If you have used another boot manager until now and you want to continue using it. Depending on its flexibility and power, there are several variations. A common case: you have a primary Linux partition on the 107 4. Booting and Boot Managers second hard drive where you boot Linux. Your boot manager is able to boot this partition via a boot sector. Then you can activate your Linux partition by installing LILO into this boot sector and telling your boot manager that it is active. Be careful if you try to make a logical Linux partition bootable by in- stalling LILO onto it. Success is not guaranteed at this point in time, even if your other boot manager is able to launch logical partitions. Try it if you like. The safest way is to try it with a tiny Linux installation to see if it will work. Perhaps you will be lucky. The recommended way is still to create a primary and bootable Linux partition. 4.4 Configuring LILO LILO is a flexible boot manager that offers many ways of adapting a configu- ration to one's needs. The most important options and meanings are described below. If you want to go into more detail, look at [Alm94]. Configuration of LILO is done in /etc/lilo.conf. If you are installing LILO for the first time, we recommend you use YaST to configure LILO. You can fine-tune, by editing /etc/lilo.conf, at a later stage. /etc/lilo.conf should only be readable for `root', as it might con- tain passwords (see Section 4.4.2 page 111; this is the default setting with SuSE Linux. If in doubt, just check, by invoking the following command as root:) earth: # chmod 0600 /etc/lilo.conf It is recommended you keep any existing old (and working) lilo.conf backed up in a safe place. Your settings only take effect when you reinstall LILO after changing /etc/lilo.conf (see Section 4.5 page 114). 4.4.1 Structure of lilo.conf /etc/lilo.conf starts with a global section followed by one or more system sections for each operating system LILO should start. A new section is started by a line beginning with either image or other. The order of entries in /etc/lilo.conf only matters in as much as the first one in the list is booted by default if no user interaction is taken -this can be set to delay= and timeout=. A sample configuration for a machine with both DOS and Linux is shown in File contents 4.4.1 on the next page. There are two Linux kernels (an older and a newer one) on /dev/hdb3, as well as MS-DOS (or Windows 95/98) on /dev/hda1. Anything between a `#' and the end of line is regarded as a comment. Spaces and comments are ignored by LILO and can be used to improve readability. Now we go through the most important lines step by step: * Global section (Parameter part) 108 4.4. Configuring LILO # LILO Configuration file # Start LILO global Section boot=/dev/hda # LILO Installation target backup=/boot/MBR.hda.970428 # Backup file for the old MBR # Apr 28 1997 #compact # faster, but won't work on all systems. #linear # Generate linear sector addresses # instead of sector/head/cylinder addresses. message=/boot/greetings # LILO's Greeting prompt password = q99iwr4 # Example LILO password timeout=100 # wait at prompt for 10 s before default # is booted vga = normal # normal text mode (80x25 characters) # End LILO global section # Linux bootable partition config begins image = /vmlinuz # Setting root = /dev/hdb3 # Root partition for kernel read-only label = Linux # Linux bootable partition config ends # Second Linux bootable partition config image = /vmlinuz.old root = /dev/hdb3 read-only label = Linux.old # 2nd Linux bootable partition config ends # DOS bootable partition config begins other = /dev/hda1 label = DOS loader = /boot/chain.b table = /dev/hda # DOS bootable partition config ends File contents 4.4.1: Sample configuration in /etc/lilo.conf 109 4. Booting and Boot Managers ­ boot= The device on whose first sector LILO should be installed. may be: a floppy disk drive (/dev/fd0), a partition (e. g., /dev/hdb3), or a whole disk (e. g., /dev/hda). The last means installing LILO in the MBR. Default: if this option is missing, LILO is installed on the current root partition. ­ prompt Forces the LILO prompt to be displayed. The default is: no prompt (compare with delay further down). This is recommended if LILO needs to manage more than one system. In addition, timeout should be set to guarantee an automatic reboot if nothing is entered at the prompt. ­ timeout= Sets a timeout for the prompted option, thus enabling an automatic reboot if no entry occurs in the given time. is the remaining time in 0.1 s. increments. Pressing Shift starts the timeout over. Default: infinite, e. g., no automatic reboot. * Linux section ­ image= Here the name of the kernel image to be booted, including its directory location, should be entered. With your new system, this is most proba- bly /boot/vmlinuz, or /vmlinuz for older SuSE Linux systems. ­ label= This name has to be unique in /etc/lilo.conf. Otherwise, you can freely choose a name for the system (e. g., Linux). Maximum length is 15 characters. You should use only letters, numbers and underscore for names-no blanks or special characters.10 The default is the filename of the kernel image (e. g., /boot/vmlinuz). By entering this name at the LILO prompt, you select which system to boot. It is recommended that, if there are many systems installed, you keep track of them in a special message file (message=). ­ root= This is to give the kernel the name of the root partition (e. g., /dev/ hda2) of your Linux system. This is recommended for security rea- sons. If this option is omitted, the kernel takes its own root partition.11 * Other systems ­ other= other tells LILO to start the partitions of other systems such as DOS (e. g., /dev/hda1). ­ loader= To load a boot sector that belongs to another operating system, LILO constructs a pseudo MBR in its map file. At boot time, LILO first 10 For more on the specific rules for which characters to use, see [Alm94], 3.2.1. 11 This can be seen using the command rdev . 110 4.4. Configuring LILO starts this pseudo MBR, which in turn starts the other boot sector. This option specifies the file where the code for the pseudo MBR is to be found. Default: /boot/chain.b (usually, this is correct). Sometimes another OS that needs to be booted from the first hard drive (e. g. DOS) is supposed to boot from another hard drive using LILO. There are additional options that cause the hard drives to swap according to their device numbers: map-drive= and to=. See: File con- tents 4.4.2 ( on the current page). The loader os2_d.b serves to load OS/2 from the second hard drive. 12 New in LILO-Version 20: "switching" devices has to be set explic- itly now (see File contents 4.4.2 ) # Booting DOS from the second hard drive # DOS bootable partition config begins other = /dev/hdb1 label = DOS loader = /boot/chain.b map-drive = 0x80 # first hd: BIOS number 0x80 to = 0x81 # second hd: BIOS number 0x81 map-drive = 0x81 to = 0x80 table = /dev/hdb # DOS bootable partition config ends File contents 4.4.2: /etc/lilo.conf Extract: Booting DOS from 2nd hard drive ­ table= sets the source device for the partition table written into the pseudo MBR (normally /dev/hda or /dev/sda). ­ label= Name (your own choice) for the system. Recommended, because the default-the raw device name-is less informative. 4.4.2 Other LILO configuration options The previous section covered the entries required in /etc/lilo.conf. Other useful options are discussed below. Those options that are marked as image options belong to the appropriate sec- tion of the operating system. The others are intended for the global parameter section of /etc/lilo.conf. * backup= 12 any_b.b (Booting from B:) and any_d.b (Booting from second hard drive) are obsolete from LILO-Version 20. 111 4. Booting and Boot Managers The file where LILO backs up the boot sector. The default is /boot/boot.xxxx, where xxxx is the internal device number of the installation partition.13 We do not recommend you using a cryptic name (see our example above). You will not be able to use the implemented uninstall feature of LILO; but we think it is better to this carefully by hand, anyway. (see Section 4.5 page 115) If the backup file exists, LILO does not create a new one. Make sure you use a name not already in use. * compact This option is recommended if you want to install LILO onto a floppy disk. If enabled, LILO tries to read more sectors at a time, resulting in a faster boot process. This does not work on every machine. We do not recommend that you set this as the normal way is safer and it only provides a difference of one or two seconds. * disk= bios= cylinders= heads= sectors= Here you can tell LILO precisely which BIOS device number and geometry it should use. This is scarcely ever needed. There is one major exception: IDE-SCSI system: If you own a BIOS that is capable of switching the boot devices SCSI prior to IDE and you want to use this feature, you need to tell LILO the switched order from the perspective of the BIOS. This is achieved by an extra entry in the global section of lilo.conf. An example for a system with one SCSI and one IDE disk may be seen in File contents 4.4.3. # Enable LILO to correctly access /dev/sda and /dev/hda # at boot time if their boot order is interchanged in # the BIOS: disk = /dev/sda # The SCSI disk is regarded as ... bios = 0x80 # ... first BIOS disk; disk = /dev/hda # the IDE disk is regarded as ... bios = 0x81 # ... second BIOS disk. File contents 4.4.3: lilo.conf Extract: Boot order: SCSI prior to IDE * linear This option causes all references to sectors to be written as logical instead of physical addresses. This option might be useful if LILO does not recognize the geometry of the hard disk correctly. Still, it does not make the 1024 cylinders limit obsolete. In practice, this is scarcely ever needed. 13 To be found in the kernel sources in /usr/src/linux/init/main.c, function parse_ root_dev(). 112 4.4. Configuring LILO The linear option does not remove the 1024 cylinders boundary! More- over it only works below an extended ("65535 heads limit") boundary, which with modern hard drive architecture is even more rigorous than with old hard drives: 512 MB / 1 GB / approx. 2 GB for 16 / 32 / 63 sectors per head. * message= Points to a text file that should be shown on screen at system boot up. It should not contain more than 24 lines and can present an overview of the LILO boot selection to augment the information available by pressing TAB . Recommended. If this option is set, the message file is then part of the LILO boot ma- chinery and, after every change to this file, LILO has to be reinstalled (Section 4.5 on the next page). * password= May be located either in a global or system-specific section. Provides secure access to LILO services, or booting the corresponding system, by means of a password. If you take this seriously, you should remove the password from lilo.conf after you have used it for the first time. As `root', you can set a new password for LILO any time you like (you just need to reinstall it afterwards) It is recommended to also set the option restricted, otherwise it could be possible to launch a shell, see manpage for lilo.conf (man lilo.conf)! * read-only This option tells the kernel to initially mount the root partition read-only, which is normal when starting Linux systems. If this is omitted, the kernel uses its internal settings.14 * delay= If the prompt is not explicitly set, you can order a prompt by press- ing ( Shift , Ctrl , Alt ). The delay= option sets the time to elapse before LILO boots the first system in its list. The default is 0, that is, no waiting. The delay option has no effect if a prompt is specifically requested by prompt. * vga= Selects VGA mode at startup. Valid modes are normal (80x25), ext (80x50) or ask (ask at boot-time). * append="" Image option for Linux kernel. Enables kernel parameters and hardware components to be specified, in the same way that this is possible at the LILO prompt. The kernel first gets the append line, then the prompt. append="mcd=0x300,10". 14 This can be seen using the command rdev-R . Installation kernels and freshly compiled ones have read-only set by default. Thus you do not normally need this option. 113 4. Booting and Boot Managers 4.5 Installing and Uninstalling LILO During a new Linux installation, or at a later time, YaST will lead you through the steps of how to install LILO interactively. In this section, we assume that some action is required that goes beyond what YaST can accomplish, and we take a closer look at how LILO works during the installing and uninstalling process. The installation of a boot manager is tricky! Ensure in advance that you are 100% able to boot Linux and other mounted systems. You must have fdisk installed on a crash recovery disk, otherwise you might find yourself in the awkward situation of not being able to access your hard disk at all! Installation After Changing the Configuration If any of the LILO components have changed, or you have modified your configuration in /etc/lilo.conf, you will have to reinstall LILO. This is easily done by launching the "Map Installer" like this: earth: # /sbin/lilo What happens now is that LILO writes a backup of the target boot sector, writes its first step into it and creates a new map file (see also Section 21 page 106). LILO now announces each installed system-for an example see Output 4.5.1. Added Linux* Added Linux.old Added DOS Screen output 4.5.1: Output after launching LILO When the installation is complete, the machine can be rebooted: earth: # shutdown -r now During reboot, the BIOS first performs its system test and directly afterwards you will see LILO and its command prompt, where you can enter parameters and select a boot image from the recently installed configurations. TAB shows you a list of all systems installed. Installation After Recompiling a Kernel If you want to include a freshly created kernel into your LILO boot setup, the Linux kernel Makefile offers an all-in-one solution. All the commands to configure and create the kernel are put together in the file /usr/src/ linux/Makefile; here the INSTALL PATH=/boot is specified (see Section 13.5 page 321). This Makefile has a target called bzlilo which, after a kernel compilation, automatically copies the currently in- stalled kernel /boot/vmlinuz (this used to be /vmlinuz) to /boot/ vmlinuz.old, the new kernel to /boot/vmlinuz, and then re-installs LILO. This can be done by entering the command: earth:/usr/src/linux # make bzlilo 114 4.5. Installing and Uninstalling LILO instead of make zImage. This is only useful if you have edited /etc/lilo. conf in advance, and if your current kernel really is located in/boot/ vmlinuz. The new, as well as the old, kernel should now be listed. See File contents 4.4.1 page 109 for an example of the resulting /etc/lilo.conf. At the LILO prompt, you can launch either of the two kernels. This makes your boot more secure, because you can still boot your old kernel even if the new one fails. For more on creating a new kernel, see Chapter 13 page 317. Uninstalling LILO Uninstalling a boot manager is tricky! Please ensure in advance that you are 100% able to boot Linux and other systems with their respective boot disks. You should have fdisk installed on every boot disk, otherwise you might find yourself in the unfortunate situation of not being able to access your hard disk at all! Perhaps one day it will be necessary for you to uninstall LILO :-( This is accomplished by writing back the target boot sector where LILO has been installed. This is not a problem in Linux if there is a valid backup (see Section 4.4.2 page 111, Option backup). A boot sector backup is no longer valid if the partition in question has got a new filesystem (for DOS users: has been formatted). The partition table of an MBR backup becomes invalid if the hard disk in question has been repartitioned in the meantime. Obsolete "backups" are time-bombs. It is best to delete them as soon as possible. Unpacking old and invalid backups into system sectors is a direct route to data loss! It is very simple to get back a DOS, Windows 95/98 or OS/2 MBR. Just enter the MS-DOS command (available since 5.0) C:\> FDISK /MBR or on OS/2 C:\> FDISK /NEWMBR These commands only write the first 446 bytes (the boot code) into the MBR and leave partitions untouched.15 For other restorations, first make a backup of the LILO sector in question- just to be on the safe side. Now you should check (at least twice :-) ) whether your old backup file is the correct one and if it is exactly 512 bytes in size! Finally, write it back, but do not confuse if= and of=! * If LILO resides in partition yyyy (e. g., hda1, hda2,. . . ): earth: # dd if=/dev/yyyy of=New-File bs=512 count=1 earth: # dd if=Backup-Date of=/dev/yyyy 15 Assuming that the MBR (Section 4.1 page 103) has valid code. If not, it is considered invalid and the partition table is moved to "null". 115 4. Booting and Boot Managers * If LILO resides in the MBR of zzz (e. g., hda, sda): earth: # dd if=/dev/zzz of=New-File bs=512 count=1 earth: # dd if=Backup-Date of=/dev/zzz bs=446 count=1 The last command is "cautious" and does not overwrite the partition table. Again, do not forget: with fdisk you should mark the desired starting partition as bootable. By the way, note how easy and fast a boot sector backup is done. We recommend you do this frequently! 4.6 Creating a Linux Boot Disk A Linux boot disk consists (somewhat simplified) of one or more Linux ker- nels, possibly managed by LILO. It serves to start up your system even if it is not possible to boot directly from hard disk (possible reasons: overwritten MBR, misconfigured boot manager, errors while installing, etc.). A boot disk such as this loads only the kernel. Everything else, including working system programs and init start scripts) must be provided by the installation on the hard drive. The connection between the boot disk and the system on the hard drive is established by the fact that in the kernel the root partition in question is set as the root device. Do not confuse this with the SuSE boot disk which is used for installation and emergencies. If you need to create a new SuSE boot disk, you copy the appropriate image from the directory disks on the SuSE CD-ROM to a floppy disk (see Section 16.5 page 389 ). Boot Disk Without LILO If your kernel does not need any hardware parameters, the easiest way to create a boot disk is to just write the actual kernel onto a raw disk and to adjust the root device (if this has not been done before). earth: # dd if=Your_Kernel of=/dev/fd0 bs=18k earth: # rdev /dev/fd0 Your_Root_Partition earth: # rdev -R /dev/fd0 1 The last command makes sure that the kernel initially mounts root as read- only (the startup scripts expect this). Boot Disk with LILO You can create a much more capable boot disk with a greeting, prompt, ker- nel parameters and other LILO goodies, by transferring the complete LILO booting start machinery onto the disk (see Section 21 page 106). For this, the disk needs a filesystem; the Minix filesystem is best suited for this. To do this, proceed as follows: * Create a Minix filesystem on a new and empty floppy disk and mount the disk to, for example, /mnt, with the commands: earth: # /sbin/mkfs.minix -c /dev/fd0 1440 earth: # /bin/mount /dev/fd0 /mnt 116 4.7. Sample Configurations * Now copy your kernel files and the LILO file /boot/boot.b to /mnt, for example, onto the floppy disk. * Optional: create a message file /mnt/message. * Create lilo.conf on /mnt. You need to adapt this to your needs (give the correct name of the kernel, etc.). See File contents 4.6.1 for an example. # LILO Configuration file bootdisk # Start LILO global Section boot=/dev/fd0 # Installation: Floppy install=/mnt/boot.b # Of course LILO and map=/mnt/map # map file onto floppy! message=/mnt/message # optional prompt timeout=100 # Wait at prompt: 10 s vga = normal # # End LILO global section ## Linux bootable partition config begins image = /mnt/First_Kernel # default root = /dev/Your_Root_Device # Here is your root partition! label = linux # Linux bootable partition config ends ## System sections for more kernel here: File contents 4.6.1: lilo.conf for a bootdisk * Install LILO with this lilo.conf: earth: # /sbin/lilo -C /mnt/lilo.conf * Unmount the floppy-that's it! earth: # /bin/umount /mnt * Do not forget to check your boot disk at the next system start to check whether it works or not :-) 4.7 Sample Configurations If Linux is the only operating system on your machine, there is nothing to do, since everything needed has already been done by YaST. Now we will give you some example configurations. Please have a look at /usr/doc/howto/mini/Linux+*.gz, here you will see some config- uration files for LILO. 4.7.1 DOS/Windows 95/98 and Linux Requirements: There must be at least a primary partition for each of DOS/Windows 95/98 and Linux which is below the 1024 cylinders limit (Section 22 page 107). 117 4. Booting and Boot Managers For this case, we have already discussed a configuration (File contents 4.4.1 page 109) - only the settings for root=, image= and other= have to be adapted. LILO is installed in the MBR. You should omit the Linux.old if you do not have an old kernel installed. Save your /etc/lilo.conf and be sure you have a Linux boot disk. Windows 95/98 feels especially inclined to eliminate "foreign" MBRs. If you can still boot Linux using your boot disk, this problem is quickly solved with the command earth: # /sbin/lilo which will complete your LILO installation. 4.7.2 Windows NT and Linux on One Hard Disk 1. If Windows NT and Linux need to co-exist on the same hard disk, you should use the NT boot manager for booting. This can either start the kernel images or the boot sectors themselves. Execution of the following steps prepares everything for a peaceful coexistence of Linux and Win- dows NT: * Install NT. * Partition the NT disks (using FAT so that Linux can write on it). * Install Linux as usual (in our example, the root partition is on /dev/ sda3). Mount either the DOS partition or an error free DOS floppy disk (for example, on /dos). * Install LILO, but install it in Linux' root partition (/dev/sda3), not in the MBR (/dev/sda). You may still configure a selection of Linux kernels for LILO. See File contents 4.7.1 for an example lilo.conf. # LILO Configuration file # Start LILO global Section boot=/dev/sda3 # Target of installation backup=/boot/boot.sda3.970428 # Backup previous boot sector; # 28. Apr 1997 prompt timeout=100 # Wait at prompt: 10 s vga = normal # force sane video state # End LILO global section # Linux bootable partition config begins image = /vmlinuz # default image to boot root = /dev/sda? # Here the root partition! label = Linux # Linux bootable partition config ends File contents 4.7.1: lilo.conf for booting a Linux root partition * Copy the LILO boot sector to a location where NT can find it; e. g.: earth: # /bin/dd if=/dev/sda3 bs=512 count=1 of=/dos/bootsek.lin This step as well as the following has to be performed after every kernel update. 118 4.7. Sample Configurations * Boot NT. Copy bootsek.lin from data disk to main directory of NT's system drive (if it is not already there). * In boot.ini (first setting attributes), supplement at the end: c:\bootsek.lin="Linux" * After the next boot (if everything went smoothly), there should be an entry in NT's boot manager. 2. Another possibility: install LILO in the MBR and claim that it's DOS to Windows NT (as in our previous example). NT 3.5* does not recognize Linux' partition types 82 and 83. Make sure that no NT program tries to "repair" your partition table. This would result in loss of data! Always have valid backups of the LILO boot sector at hand. 4.7.3 OS/2 and Linux 1. Use the OS/2 boot manager for booting. It can launch unlimited primary and logical partitions provided they are below the 1024 cylinders limit. The user is responsible for the partitions. This boot manager is configured by OS/2's fdisk. Preparation on the Linux side: consists merely of making a partition bootable (usually this is the root partition) with LILO. You can use the same lilo.conf as in the Windows NT example, but there is one thing that you have to consider in advance. . . Preparation on the OS/2 side: OS/2 not only uses the conventional and obvious entries for existing partitions in MBRs on hard disks, but also uses "waste" space in these sectors for additional information.16 If these are inconsistent, OS/2's fdisk considers these partitions faulty and re- fuses to provide boot manager services. The fdisk commands of other systems do not know how to handle these extra partitions. . . Conflicts are inevitable. Therefore: before installing Linux, load OS/2 (the installation system is sufficient) and create the Linux partitions with OS/2's fdisk, at least the logical drives. This initially creates additional OS/2 partitions, which might get in the way. Solution: immediately after creating the partitions, load the Linux installation system (or the rescue disk from the SuSE Linux CD) and change the partition types to 83 (Linux native) using fdisk. Now these partitions will be ignored by OS/2. 2. 2nd option: Install LILO as the main boot manager on a primary partition on the first hard drive.17 This special case is also considered in our next example, where DOS is additionally involved. 16 A new Support Data Base article is about to be written: keyword "OS/2". 17 It is not a good idea to install in the MBR, as repartitioning with another fdisk could erase the MBR and thus remove LILO. 119 4. Booting and Boot Managers 4.7.4 DOS, OS/2 and Linux 1. If you have used the OS/2 boot manager for DOS and OS/2 and want to continue using it, simply add Linux to its start menu as described in the previous example. 2. If you have LILO installed as the main boot manager on a primary par- tition of the first hard disk, then the following, intentionally complicated example for lilo.conf (File contents 4.7.2) assumes that the DOS and Linux boot partitions are primary and on the first hard drive, whereas OS/2 resides on the second hard drive-all of them below the 1024 cylin- ders limit. OS/2 is on the second drive. This is why a special loader (/boot/os2_b.b instead of /boot/chain.b) is used. The MBR code might be either from DOS or OS/2 (it doesn't matter which). The LILO boot partition (/dev/sda4) must be marked as active, with any fdisk. # LILO Configuration file # Start LILO global Section boot = /dev/sda4 # LILO in Linux root partition backup = /boot/boot.sda4.970428 message = /boot/message # Greeting message prompt delay = 100 vga = normal ## Linux bootable partition config begins image = /vmlinuz label = linux root = /dev/sda4 # Linux bootable partition config ends ## OS/2 bootable partition config begins other = /dev/sdb5 table = /dev/sdb label = os2 loader = /boot/os2_b.b # OS/2 bootable partition config ends ## DOS bootable partition config begins other = /dev/sda1 table = /dev/sda label = dos # DOS bootable partition config ends File contents 4.7.2: LILO with DOS, OS/2 and Linux on two hard disks 120 4.8. LILO Problems 4.8 LILO Problems Some Guidelines Some simple guidelines at the beginning will avoid most LILO problems in advance (this is taken from the LILO documentation [Alm94]): * Do not panic! If anything does not work, try to find the error and/or the cause first; check the diagnosis before you start fixing the problem. * Always have an up-to-date and tested boot disk at hand. * SuSE Linux contains a full Linux system on its boot disk and installation CD (for the rescue system, see Section 16.5 page 389), to allow you to reach all your Linux partitions. Tools are included for repairing almost any problems that can occur. * Read the complete LILO documentation, especially if the system does not do what you want it to do. * Check /etc/lilo.conf before using the map installer (/sbin/ lilo). * Be careful if you are using a large hard drive, or multiple ones. You need to be aware of the 1024 cylinders limit. * Try with and without the linear option (normally it should be better without!). 4.8.1 Diagnosis of Errors: LILO Start Messages This is mainly section 5.2.1 from [Alm94]. When LILO loads itself, it displays the word `LILO'. Each letter is printed before or after performing some specific action. If LILO fails at some point, the letters printed so far can be used to identify the problem. nothing No part of LILO has been loaded. Either LILO is not installed at all or the partition on which it's boot sector is located isn't active. `L' error ... The first stage boot loader has been loaded and started, but it can't load the second stage boot loader (/boot/boot.b). The two-digit error codes indicate the type of problem. This condition usually indicates a media failure or a geometry mismatch. `LI' The second stage has been invoked but could not be started. This can either be caused by a geometry mismatch or by moving /boot/boot.b without reinstalling LILO. `LIL' The second stage of boot loader has been started, but it can't load the descriptor table from the map file. This is typically due to a physical error of the boot device or a faulty disk geometry. `LIL?' The second stage boot loader has been loaded at an incorrect ad- dress. This is typically caused by a subtle geometry mismatch or by mov- ing /boot/boot.b without reinstalling LILO. `LIL-' The descriptor table (in the map file) is corrupt. This can either be caused by a geometry mismatch or by moving /boot/boot.b without reinstalling LILO. `LILO' All parts of LILO have been successfully loaded. 121 4. Booting and Boot Managers The most common causes for geometry errors are not physical defects or invalid partition tables but errors in LILO installation, including: * disregarding the 1024 cylinders limit (see next section) * an unsuccessful attempt at starting LILO from a logical partition 4.8.2 The 1024-Cylinder Limit As emphasized before (e.g. page 107), the entire LILO machinery (e. g., any data that is needed for booting) must be able to process BIOS calls (which means it must reside below the 1024 cylinders limit on the hard drive). The sections of the hard drive that can be used (these are called allowed sections) have already been discussed. This restriction affects only the boot-up machinery. It is not required that LILO be installed on the Linux root partition. It is even possible (but quite dangerous, too) to put the boot machinery onto partitions of other operating systems to which Linux has read and write access. Never install the LILO boot sector onto an unknown partition because you will severely damage the filesystem! * The best method is to create a primary partition (within the allowed sec- tion) and to install all LILO files (including the LILO boot sector) into this partition. This will be, in most cases, the Linux root partition. You can also add it to /boot with YaST. The only condition is that there has to be enough space for ­ boot.b, map, message, and ­ the Linux kernels that LILO should boot. A few megabytes is enough. It does not matter where you put the rest of your partitions. There are no more restrictions. As soon as the kernel runs, you have unrestricted access to all installed drives. But what to do if there is no space for such a partition? If you neither want to repartition your hard drive, upgrade to SCSI, nor want to purchase a new BIOS version, there are still two (makeshift) possibilities: * Use a boot disk instead of LILO on the hard drive, or, if you are also running MS-DOS, you can use loadlin as well. * Install the LILO boot machinery onto a Linux partition which is in the permitted section and where Linux has write access (e. g., a FAT/VFAT drive). We cannot put the LILO boot sector there as well! So there are only two places to put it. Either at the start of an extended partition on the first drive-as long as it is beneath the 1024 cylinders limit-or on the MBR. Suppose that the partition in question is mounted on /mnt, that LILO is installed in the MBR (/dev/hda), and that you also boot DOS from /dev/hda1. Then you should proceed as follows: 122 4.8. LILO Problems ­ Create a new directory (e. g., /mnt/LINUX) and copy the LILO files mentioned above to it: boot.b, map, message, as well as the chain loader of other operating systems (normally chain.b) and finally the Linux kernels that LILO should boot. ­ Create a /mnt/LINUX/lilo.conf where all paths point to /mnt/ LINUX (see File contents 4.8.1). # LILO Configuration file # Start LILO global Section boot=/dev/hda # Installation target backup=/mnt/LINUX/hda.xxxx # backup of old MBR install=/mnt/LINUX/boot.b # Of course LILO and map=/mnt/LINUX/map # map file are in /mnt/LINUX! message=/mnt/LINUX/message # optional prompt timeout=100 # Wait at prompt: 10 s vga = normal # # End LILO global section ## Linux bootable partition config begins image = /mnt/LINUX/First_Kernel # default root = /dev/Your_Root_Device # Root partition! label = linux # Linux bootable partition config ends ## System section for other kernels: ## End Linux # DOS bootable partition config begins other = /dev/hda1 # MSDOS system drive label = dos loader = /mnt/LINUX/chain.b table = /dev/hda # DOS bootable partition config ends File contents 4.8.1: lilo.conf for other partitions ­ Install LILO with this lilo.conf: earth: # /sbin/lilo -C /mnt/LINUX/lilo.conf After that, LILO should work. Boot MS-DOS and protect the LILO files as well as possible against write access (just to remind you: any write access disables LILO). To accomplish this, you should assign to all files in X:\LINUX (where the `X' is the DOS drive mounted to /mnt) the DOS attributes system and hide. In conclusion, we point you toward two HOWTOs in /usr/doc/howto/ en/mini/-LILO.gz and Large-Disk.gz. 4.8.3 Special Boot Problems with Kernels from 2.0 Onwards 123 4. Booting and Boot Managers Problems Problems booting with LILO might occur after part of the kernel has been loaded. (e. g., a SuSE installation kernel):-( You can select a kernel at the LILO prompt and this kernel is loaded (some dots are output onto the screen) but starting the kernel fails. Before reaching "uncompressing Linux" the system crashes with different behaviors. Possible error messages: * System reboots * System just hangs * "crc-error" * "no free space" * "Error 0x00" * "Error 0x01" * "incomplete literal tree" Thereafter, access on the floppy is attempted but the system hangs. Cause The cause lies in a combination of a big kernel, LILO and faulty hardware. This affects roughly 1% of all machines. We assume that this is due to a faulty BIOS that has problems with fast memory access. This problem does not occur, if: * the machine is booted via loadlin * the kernel has been copied to a floppy dd if=/vmlinuz of=/dev/fd0 and booted from there * a smaller kernel is used, which has been created with make zImage (e. g., an older 1.2.13 kernel) is booted via LILO The following BIOS settings do not cause any problems either: * Disable Internal Cache * DRAM Precharge Wait State value: 1 and * DRAM Wait Burst Timing value: 0x3333 Solution First of all, you should be able to install a system. So, if you can neither boot via loadlin nor via setup you should use an old kernel 1.2.13 boot disk for installation. If you do not have such a disk at hand, you should change the BIOS settings accordingly. After a successful installation, the question is how you want to boot in the future. First, you should use the same media as during installation. loadlin 124 4.9. Starting via loadlin from DOS should not cause any problems. With a boot disk, you should enter the following parameters: load ramdisk=0 root=/dev/??? where ??? is your root partition (e. g., /dev/hda1). Thereafter, you should build your own kernel, since this can be booted using LILO. 4.9 Starting via loadlin Now we want to offer an alternative to boot SuSE Linux, loadlin. The pro- gram loadlin is a DOS program that is capable of booting a Linux kernel from a DOS directory. Thus loadlin perfectly integrates itself into an existing DOS/Windows 9x environment. As no entry in the MBR is needed, Win- dows only notices one or more partitions with unknown ID's. The risk of unwanted side effects due to a Linux installation is thus minimized. The procedure described below works on both Windows 95 and Windows 98. The files themselves have been written in Windows 95; for this reason we wiil just talk about Windows 95. In principle, there are two ways of activating loadlin. One is to switch be- tween various systems via a boot menu, or to start Linux via loadlin from another running system. Both methods have advantages and disadvantages: * A boot menu saves you the trouble of having to start another operating system first, before you can start Linux. * You can add other configurations to your boot menu to create a universal starting mechanism. * You need to modify start files, however, to build a boot menu; which you will have to do by trial and error. * Changing to Linux from the DOS prompt is very simple. * A Linux start can be very nicely integrated into a Windows 95 session. Double clicking an icon will start Linux (Windows 95 contains DOS 7.0). You should use a boot menu if you are using DOS or Windows 3.x. If using Windows 95, you can start most easily from the running system. Start menus in Windows 95 are a very complex matter. We are only able to give you some hints about them. 4.9.1 Necessary Steps for all loadlin Users This is what you need to do, whether you decide to use a boot menu, or to start from a running system (in DOS, Windows 3.x, or Windows 95): 1. You may have already installed loadlin (this was done in Section 2.5.4 page 46). If not, do so now using setup. 2. Change to c:\loadlin in MS-DOS. There you will find a file called linux.par. Create a file named startlin.bat (you can give it another name). Now insert the line described in File contents 4.9.1 on the following page: 125 4. Booting and Boot Managers c:\loadlin\loadlin @c:\loadlin\linux.par File contents 4.9.1: Example of a batch file for starting Linux c:\loadlin\vmlinuz # first value must be # the filename of the Linux kernel root=/dev/xxx # the device which gets mounted as root FS ro # mount root read-only File contents 4.9.2: Example of the file linux.par with customized values Next, edit the file linux.par (File contents 4.9.2). Instead of xxx, enter your root partition's device name (you wrote down this name in Section 2.10.2 page 66). startlin.bat starts Linux. The file linux.par is used by startlin.bat as well as by config.sys, and contains essential parameters. Later on, when you are more familiar with Linux, you can add or replace parameters here. If you have built a kernel of your own, just copy it to c:\loadlin\vmlinuz and from then on this kernel will be booted. 4.9.2 Setting up Boot Menus Here's how to configure a boot menu in DOS or Windows 3.x: 1. First, define a boot menu section in your c:\config.sys file. Open c:\config.sys in an editor and enter something similar to the File contents 4.9.3. [Menu] menuitem=Win, starting Windows,... menuitem=DOS, starting DOS, MS-DOS... menuitem=Linux, starting Linux... menucolor=15,1 menudefault=Win,5 File contents 4.9.3: Example of first part of Linux boot menu in c:\config.sys Under the label [Menu], define an entry in the boot menu for each OS you want to boot. Also, define the menu's color and after how many seconds each OS will be automatically started. 2. Below these entries, enter the labels [Common], [Win], [DOS], and [Linux]. Commands entered in [Common] are always executed. All other entries are OS specific. See the example in File contents 4.9.4 on the fac- ing page. As a guide, you can use the lines in your own config.sys. An example may be found in: File contents 4.9.4 on the next page. Now save the file with your changes. 126 4.9. Starting via loadlin [Common] device=c:\dos\himem.sys /testmem:off device=c:\dos\emm386.exe noems I=E000-F4FF dos=high,umb files=30 buffers=10 shell=c:\dos\command.com [Win] devicehigh=c:\dos\dblspace.sys /move devicehigh=c:\cd\slcd.sys /D:SONY_000 /B:340 /M:P /V /C [DOS] devicehigh=c:\dos\dblspace.sys /move devicehigh=c:\cd\slcd.sys /D:SONY_000 /B:340 /M:P /V /C [Linux] shell=c:\loadlin\loadlin.exe @c:\loadlin\linux.par [Common] rem Remains blank File contents 4.9.4: Example of second part of Linux boot menu in c:\config.sys 3. Next, edit c:\autoexec.bat. Here you must put the same labels and assign entries to labels, except the notation differs slightly. See the ex- ample in File contents 4.9.5 on the following page. Notice that the Linux case is not mentioned here because Linux is booted using loadlin directly from the c:\config.sys file. The variable %config% contains the selected label (:Win or :DOS). Customize the code to fit your machine. 4. If you now boot your machine, the boot menu appears and you have five seconds to choose an operating system. Then Windows starts automat- ically (menudefault=Win,5). If you select `Linux', Linux starts and awaits your login. 4.9.3 Starting Linux from Within Windows To create a start icon for Linux, to boot Linux from within a running Win- dows 95 session: 1. Open Windows Explorer. Change to c:\loadlin. With the right mouse button, click on the file startlin.bat and select `Create Shortcut'. 2. Drag the shortcut onto the desktop. 3. Click on `Shortcut to startlin.bat' with the right mouse but- ton and select `Properties'. Go to tab `Program', click on the button `Advanced' and click `MS-DOS mode' on. Confirm with `OK'. 4. Click the `Change icon' button and select a nice icon; give the short- cut a suitable name; Voila! 127 4. Booting and Boot Managers @echo off rem Entries for all Configurations switches= /f set comspec=c:\dos\command.com prompt $p$g loadhigh c:\dos\keyb gr,,c:\dos\keyboard.sys loadhigh c:\dos\doskey set temp=c:\temp loadhigh c:\dos\mscdex.exe /D:SONY_000 /E /V /L:H c:\logimaus\mouse.exe goto %config% :Win c:\dos\smartdrv.exe a- b- c+ 2048 1024 path c:.;d:.;c:\windows;c:\dos;c:\util; win : c:\dos\smartdrv /C goto ende :DOS path c:.;d:.;c:\dos;c:\util; goto ende :ende echo * Goodbye * File contents 4.9.5: Example of autoexec.bat supporting Linux boot menu 5. Double clicking this new shortcut should bring up a dialog box telling you that Windows 95 is about to switch to DOS mode. If this dialog box bothers you, you can turn it off in the properties menu. 4.9.4 The Windows Boot Menu This is how you install a boot menu for Windows 95: 1. You must edit the file c:\msdos.sys. First, make the file visible by entering: C:> attrib -R -S -H c:\msdos.sys This is a text file where you have to enter some lines to deactivate the Windows 95 start menu. The [Options] label should resemble File con- tents 4.9.6 on the next page. The parameter Logo=0 is optional and avoids switching to graphics mode before Windows 95 is started. Booting is much faster and you avoid lots of trouble if you plan to use the DOS emulator in Linux later on. The parameter BootGUI=0 is for booting Windows 95 directly into DOS mode. To start Windows from this you have to enter: C:> win but this is already done by our example c:\autoexec.bat if you have selected Win95 from our menu. 128 4.9. Starting via loadlin [Options] BootGUI=0 BootDelay=0 BootMenu=0 Logo=0 File contents 4.9.6: msdos.sys to start Linux using a Windows 95 boot menu 2. Next, define your boot menu in c:\config.sys. See File con- tents 4.9.7) for an example. [Menu] menuitem=Win95, start Windows 95... menuitem=DOS, start MS-DOS... menuitem=Linux, start Linux... menudefault=Win95,5 File contents 4.9.7: Example config.sys (part one) for starting Linux using a boot menu with Windows 95 Under the Label [Menu], define entries for the boot menu, its color and the delay in starting up automatically. 3. Further down in config.sys, enter labels [Win95], [DOS], [Linux], and [Common]. [Common] is for entries that apply every time (this will very rarely be the case in Windows 95). All other labels are for the corresponding operating system. Use those lines that are al- ready written in your config.sys. The example in File contents 4.9.8, should only be regarded as a hint. [Win95] dos=high,umb device=c:\windows\himem.sys /testmem:off [DOS] device=c:\plugplay\drivers\dos\dwcfgmg.sys dos=high,umb device=c:\windows\himem.sys /testmem:off device=c:\windows\emm386.exe noems I=B000-B7FF devicehigh=c:\cdrom\torisan.sys /D:TSYCD3 /P:SM [Linux] shell=c:\loadlin\loadlin.exe @c:\loadlin\linux.par [Common] accdate=C+ D+ H+ switches= /F buffers=20 File contents 4.9.8: Example config.sys (part two) for starting Linux using a boot menu with Windows 95 Now save this file. 129 4. Booting and Boot Managers 4. Next, edit c:\autoexec.bat. Here, the same labels are entered, but the notation is slightly different. The label which has been selected is written to the variable %config%. Notice that the Linux case is not in- cluded here, because Linux is booted using loadlin directly from the config.sys file. Your entry should look something like File con- tents 4.9.9. @echo off loadhigh keyb gr,,c:\windows\command\keyboard.sys goto %config% :Win95 win goto ende :DOS path c:.;d:.;c:\windows\command;c:\util; loadhigh c:\windows\command\mscdex.exe /D:TSYCD3 /L:x loadhigh c:\windows\command\doskey c:\windows\command\mouse.exe goto ende :ende echo * And now? * File contents 4.9.9: Example autoexec.bat for starting Linux in Win- dows 95 When you have finished editing the file, don't forget to save it. 5. If you now boot your machine, the Windows 95 boot menu should appear, giving you two seconds to select an entry. If you choose Command line, your own boot menu will be displayed. Now you have five seconds to select an operating system. After this delay, Windows 95 starts automati- cally. If you select `Linux', Linux starts and awaits your login. 130