home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd2.bin / docu / ascii / suselxen / slxen-04.txt < prev    next >
Text File  |  2000-03-11  |  73KB  |  1,511 lines

  1.                                                                                          Chapter 4
  2.                        Booting and Boot Managers:
  3.                                                         LILO, loadlin, etc.
  4.  
  5. This chapter describes various methods of  booting a Linux system. To
  6. have a better understanding of what is involved, we will first illustrate some
  7. technical details of booting a PC.
  8.  
  9. 4.1 Booting a PC
  10. After turning on your computer, the first thing that happens is that the BIOS
  11. (Basic Input Output System) takes control, initializes the screen and key-
  12. board, and tests the main memory. Until this task is completed, no external
  13. devices or external storage media are known to the system.
  14. Once the basic system has finished its internal setup, it starts to verify the
  15. hardware around it. Date, time, and information about some of the most
  16. important external devices are read from the CMOS settings (usually referred
  17. to as the CMOS setup). After reading the CMOS, the BIOS should recognize
  18. the first hard disk (including details such as its geometry). It can then start to
  19. load the operating system (OS) from there.
  20. To load the OS, the system loads a 512-byte data segment from the first
  21. hard disk into main memory and executes the code stored at the beginning
  22. of this segment. The instructions contained there determine the rest of the
  23. boot process. This is the reason why the first 512 bytes of the hard disk are
  24. often called the Master Boot Record (MBR) ( MBR).
  25. Even though the whole process is rather complicated and this description is
  26. over-simplified, it should be clear that up to this point (loading of the MBR),
  27. the boot sequence is independent of the installed operating system, is identical
  28. on all PC's, and all the PC has to access peripheral hardware is those routines
  29. (drivers) stored in the BIOS.
  30.  
  31. Master Boot Record
  32. The layout of the MBR has been certified by an independent convention. The
  33. first 446 bytes are reserved for program code.1 The next 64 bytes offer space
  34. for a partition table for up to four partitions.2 The last two bytes have to
  35. 1 The code itself ¡ and its capabilities ¡ depend on the system that created the MBR.
  36. 2 Without this partition table, no filesystem can exist-you cannot use the hard disk.
  37.  
  38.                                                                                                 103
  39.  
  40.  
  41.  
  42. 4. Booting and Boot Managers
  43.  
  44.                contain a special "magic number" (AA55). Any MBR which replaces this
  45.                number by a different number is rejected.
  46.  
  47.                Boot Sectors
  48.                Boot sectors are the first sectors on a hard disk partition.3 They offer
  49.                512 bytes of space and are designed to contain code which is able to launch
  50.                an operating system on this partition. Boot sectors of formatted DOS, Win-
  51.                dows, and OS/2 partitions do exactly that. In contrast, Linux boot partitions
  52.                are empty at the very start. A Linux partition cannot be started directly,
  53.                although it may contain a kernel and a valid root filesystem.
  54.                A valid boot sector follows the conventions and enters the "magic number"
  55.                of the MBR into the last two bytes.
  56.  
  57.                Booting DOS or Windows 95
  58.                The MBR contains information that determines which partition of a hard disk
  59.                is "active", i. e., which partition should be searched for the operating system
  60.                to be booted.4 The executable code in the MBR (first stage of the boot loader)
  61.                tests whether the marked partition contains a valid boot sector.
  62.                If this is the case, the second stage of the boot loader can be started from
  63.                there. DOS system programs can now be loaded and you will see the usual
  64.                DOS prompt.
  65.                In DOS, only primary partitions can be marked active. Therefore, you cannot
  66.                use logical partitions inside an extended partition as bootable DOS partitions.
  67.  
  68.                4.2 Different Boot Concepts
  69.                The simplest boot concept affects only one machine with one operating sys-
  70.                tem installed. A widely deployed PC configuration is DOS or Windows 95 as
  71.                the only system installed. The boot sequence for this case has already been
  72.                outlined.
  73.                A similar concept can be used for Linux,5 if Linux is the only operating
  74.                system being used. In this case, one could theoretically skip the installation
  75.                of LILO. The big disadvantage of doing this is that you can't pass additional
  76.                parameters to the system kernel at boot time.
  77.                As soon as there is more than one operating system installed, there are a
  78.                number of new boot possibilities.
  79.  
  80.                Booting another OS from a floppy disk The first OS can be booted from
  81.                    the hard disk. Other operating systems can be booted by using boot disks.
  82.                     * Requirements: the floppy drive must be bootable.
  83.                     * Advantage: you can skip the potentially tricky boot loader installation.
  84.                3 except for the extended partition which serves as a "container" for other partitions
  85.                4 This implies that DOS has to be installed on the first hard drive.
  86.                5 You would have to write the Linux kernel directly onto a "raw" partition and launch this from
  87.                the MBR. This is rather uncommon, however.
  88.  
  89. 104
  90.  
  91.  
  92.  
  93.                                                                                     4.3. An Overview of LILO
  94.  
  95.      * Disadvantage: you have to ensure that you are not running out of
  96.         working boot disks.
  97.      * It might be an advantage or disadvantage that your Linux is not capable
  98.         of booting without a boot disk, depending on what it is to be used for.
  99.      * The boot process will take slightly longer.
  100. Boot chaining of additional systems The same OS is always booted and
  101.     others can optionally be started from within the first OS.
  102.      * Requirements: adequate programs for chain booting of operating sys-
  103.         tems must be available.
  104.      * An example is the loading of Linux from DOS using loadlin or starting
  105.         a NetWare server from DOS with server.exe.
  106. Installing a boot manager Theoretically, this allows you to use an arbitrary
  107.     number of operating systems on a single machine. The choice of systems
  108.     is done at boot time. Changing operating systems requires a reboot.
  109.      * Requirements: the boot manager must work smoothly with all installed
  110.         operating systems.
  111.      * Examples of co-existing boot managers (at least under certain circum-
  112.         stances) are OS/26 and the DOS boot loader boot.sys.
  113. The following section describes the installation and configuration of a boot
  114. manager, using the Linux boot manager LILO. A complete description of
  115. LILO's features can be found in [Alm94].7 This is followed by a description
  116. of loadlin.
  117.  
  118. 4.3 An Overview of LILO
  119.  
  120. LILO-here we go...
  121. The Linux boot loader is usually installed in the MBR (details below, page 107
  122. and Section 4.5 page 114). When started, LILO already has access to both
  123. real mode hard disks, and due to its installation, is able to find all the data
  124. it needs from the raw hard drives8 without needing any information on par-
  125. titioning. Because of this, operating systems can be booted from the first as
  126. well as from the second hard drive. The entries in the partition table that the
  127. standard DOS MBR uses to mark the active partition are ignored when using
  128. LILO in the MBR.
  129. An important difference to the standard DOS boot sequence is that you can
  130. select any of the installed systems at boot time when using LILO. After
  131. loading the MBR into memory, LILO is started and you are asked to select
  132. one of the installed operating systems (see on the following page).
  133.  
  134. 6 more in Section 4.7.3 page 119
  135. 7 This file can be printed by entering
  136.      earth:/usr/doc/packages/lilo # lpr user.dvi
  137.  or viewed with
  138.      earth:/usr/doc/packages/lilo # xdvi user.dvi
  139.  
  140. 8 A raw device is a device that is accessed directly without using a filesystem.
  141.  
  142.                                                                                                          105
  143.  
  144.  
  145.  
  146. 4. Booting and Boot Managers
  147.  
  148.                 What is LILO?
  149.  
  150.                LILO is a versatile boot manager. It can launch an operating system in the
  151.                following ways:
  152.  
  153.                 * by loading the boot sector of a partition and starting an operating system
  154.                    from this partition. This is what other boot managers also do.
  155.                 * by loading the Linux kernel and starting Linux. This cannot be done by
  156.                    most other boot managers.
  157.  
  158.                Furthermore, LILO provides an important option of being able to pass a
  159.                command line to the kernel. For security reasons, this can be protected totally,
  160.                or partially, with a password.
  161.  
  162.                How Do You Boot with LILO?
  163.  
  164.                When LILO is launched, it displays the text LILO and a greeting message
  165.                (which you yourself entered during installation). Thereafter, a command
  166.                prompt appears:
  167.                    boot:
  168.                Here, you select your operating system by entering its name, which is then
  169.                booted. The name of the operating system has previously been set by you
  170.                during installation. At this point, you can pass a parameter line to the Linux
  171.                kernel. You can also get a list of all the operating system names available by
  172.                               
  173.                pressing  TAB  
  174.                                .
  175.  
  176.                The Components of LILO
  177.  
  178.                The LILO machinery consists of the following components:9
  179.  
  180.                 * the beginning, or first step, of the LILO code in a boot sector which
  181.                    activates the system boot
  182.                 * the heart of the LILO code, localized in /boot/boot.b
  183.                 * a map file, normally /boot/map, where LILO enters the location of
  184.                    Linux kernels and other data during its installation
  185.                 * optional: a message file whose contents are displayed as a welcome mes-
  186.                    sage before the LILO boot selection. Its usual location is:
  187.                    /boot/message (or similar)
  188.                 * the different Linux kernel and boot sectors that LILO should offer
  189.  
  190.                 Any write access (even through file movements) on any of these files
  191.                 corrupts the map file, thus requiring you to reinstall LILO (Section 4.5
  192.                 page 114). This is only relevant when you change to another kernel.
  193.  
  194.                9 By the way, the boot sectors installed by LILO contain a typical virus boot sequence. DOS
  195.                virus scanners typically claim to have found the AIRCOP boot sector virus in files such as
  196.                /boot/any_b.b or /boot/any_d.b. Also, you should disable any BIOS protection of
  197.                the MBR.
  198.  
  199. 106
  200.  
  201.  
  202.  
  203.                                                                      4.3. An Overview of LILO
  204.  
  205. Where LILO Can Be Installed
  206. This is referring to the above-mentioned first step of LILO. Before going into
  207. detail, we would like to point out a very important general restriction:
  208.  
  209.  All LILO components must be located on the first 1024 cylinders of the
  210.  hard drive.
  211.  
  212. This is because these are the only cylinders available when the BIOS starts
  213. the system. With older BIOSes and IDE drives one can also be restricted to
  214. either of the first two hard drives (/dev/hda and /dev/hdb). If there are
  215. any (E)IDE hard drives installed, your SCSI devices will be not able to boot
  216. either. This is rather annoying as the 1024 cylinders limit is reached much
  217. more quickly with SCSI devices (8 GB) than with IDE devices (504 MB to
  218. 2 GB). Note that this is a limitation of the PC BIOS, not of Linux or LILO.
  219. Many newer BIOSes allow access to additional devices, for example, in con-
  220. nection with EIDE hard drive controllers for up to 4 EIDE devices. Many
  221. modern SCSI host adapters even allow SCSI devices to be "pushed to the
  222. front" in order to make them bootable. If you want to make use of this feature
  223. with LILO, have a look at the disk options on 112.
  224. For the sake of simplicity we will combine all this under the heading "1024
  225. cylinder limit". It should all be considered before a first-time installation
  226. (Section 2.6.1 page 47) - afterwards it is too late, and may cause a lot of
  227. extra work. For more information, see section 4.8.2.
  228. The following locations are possible to store the LILO boot sector.
  229.  
  230.  * on a floppy disk. This is the most secure, but also the slowest alternative
  231.    for booting with LILO (see Section 4.6 page 116). Choose this alternative
  232.    if you do not want to change boot sectors.
  233.  * in the boot sector of a primary Linux partition on the first hard drive.
  234.    This leaves the MBR untouched. Before it can be booted, the partition
  235.    has to be marked active, with fdisk. If Linux is fully installed on logical
  236.    drives or partitions on the second hard drive, there is only the boot sector
  237.    of the extended drive of the first drive left (if there is one). Linux fdisk
  238.    can also activate such a partition.
  239.    If you want to boot multiple systems from hard disk, this is quite long-
  240.    winded. Every time you want to boot you have to activate the corre-
  241.    sponding boot sector beforehand. The next two variants are much less
  242.    cumbersome.
  243.  * in the Master Boot Record. This variation offers the highest flexibility.
  244.    Moreover, this is the only alternative possible if all of the Linux partitions
  245.    reside on the second hard drive and there is no extended partition on
  246.    the first drive. Every setting of the MBR must be edited with extreme
  247.    care since errors may have severe consequences. The safety aspects are
  248.    described in Section 4.5 page 114.
  249.  * If you have used another boot manager until now and you want to
  250.    continue using it. Depending on its flexibility and power, there are several
  251.    variations. A common case: you have a primary Linux partition on the
  252.  
  253.                                                                                           107
  254.  
  255.  
  256.  
  257. 4. Booting and Boot Managers
  258.  
  259.                   second hard drive where you boot Linux. Your boot manager is able to
  260.                   boot this partition via a boot sector. Then you can activate your Linux
  261.                   partition by installing LILO into this boot sector and telling your boot
  262.                   manager that it is active.
  263.  
  264.                 Be careful if you try to make a logical Linux partition bootable by in-
  265.                 stalling LILO onto it. Success is not guaranteed at this point in time, even
  266.                 if your other boot manager is able to launch logical partitions.
  267.  
  268.                   Try it if you like. The safest way is to try it with a tiny Linux installation
  269.                   to see if it will work. Perhaps you will be lucky. The recommended way
  270.                   is still to create a primary and bootable Linux partition.
  271.  
  272.                4.4 Configuring LILO
  273.                LILO is a flexible boot manager that offers many ways of adapting a configu-
  274.                ration to one's needs. The most important options and meanings are described
  275.                below. If you want to go into more detail, look at [Alm94].
  276.                Configuration of LILO is done in /etc/lilo.conf. If you are installing
  277.                LILO for the first time, we recommend you use YaST to configure LILO.
  278.                You can fine-tune, by editing /etc/lilo.conf, at a later stage.
  279.  
  280.                 /etc/lilo.conf should only be readable for `root', as it might con-
  281.                 tain passwords (see Section 4.4.2 page 111; this is the default setting with
  282.                 SuSE Linux. If in doubt, just check, by invoking the following command
  283.                 as root:)
  284.                     earth: # chmod 0600 /etc/lilo.conf
  285.  
  286.                It is recommended you keep any existing old (and working) lilo.conf
  287.                backed up in a safe place. Your settings only take effect when you reinstall
  288.                LILO after changing /etc/lilo.conf (see Section 4.5 page 114).
  289.  
  290.                4.4.1 Structure of lilo.conf
  291.                /etc/lilo.conf starts with a global section followed by one or
  292.                more system sections for each operating system LILO should start. A
  293.                new section is started by a line beginning with either image or other.
  294.                The order of entries in /etc/lilo.conf only matters in as much as the
  295.                first one in the list is booted by default if no user interaction is taken -this
  296.                can be set to delay= and timeout=.
  297.                A sample configuration for a machine with both DOS and Linux is shown in
  298.                File contents 4.4.1 on the next page. There are two Linux kernels (an older
  299.                and a newer one) on /dev/hdb3, as well as MS-DOS (or Windows 95/98)
  300.                on /dev/hda1.
  301.                Anything between a `#' and the end of line is regarded as a comment. Spaces
  302.                and comments are ignored by LILO and can be used to improve readability.
  303.                Now we go through the most important lines step by step:
  304.  
  305.                 * Global section (Parameter part)
  306.  
  307. 108
  308.  
  309.  
  310.  
  311.                                                             4.4. Configuring LILO
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320. # LILO Configuration file
  321. # Start LILO global Section
  322. boot=/dev/hda                      # LILO Installation target
  323. backup=/boot/MBR.hda.970428 # Backup file for the old MBR
  324.                                    # Apr 28 1997
  325. #compact            # faster, but won't work on all systems.
  326. #linear             # Generate linear sector addresses
  327.                     # instead of sector/head/cylinder addresses.
  328. message=/boot/greetings            # LILO's Greeting
  329. prompt
  330. password = q99iwr4                 # Example LILO password
  331. timeout=100         # wait at prompt for 10 s before default
  332.                     # is booted
  333. vga = normal        # normal text mode (80x25 characters)
  334. # End LILO global section
  335.  
  336. # Linux bootable partition config begins
  337. image = /vmlinuz                   # Setting
  338.     root = /dev/hdb3               # Root partition for kernel
  339.     read-only
  340.     label = Linux
  341. # Linux bootable partition config ends
  342.  
  343. # Second Linux bootable partition config
  344. image = /vmlinuz.old
  345.     root = /dev/hdb3
  346.     read-only
  347.     label = Linux.old
  348. # 2nd Linux bootable partition config ends
  349.  
  350. # DOS bootable partition config begins
  351. other = /dev/hda1
  352.     label = DOS
  353.     loader = /boot/chain.b
  354.     table = /dev/hda
  355. # DOS bootable partition config ends
  356.  
  357.    File contents 4.4.1: Sample configuration in /etc/lilo.conf
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.                                                                               109
  366.  
  367.  
  368.  
  369. 4. Booting and Boot Managers
  370.  
  371.                      ¡ boot=<bootdevice>
  372.                         The device on whose first sector LILO should be installed.
  373.                         <bootdevice> may be: a floppy disk drive (/dev/fd0), a partition
  374.                         (e. g., /dev/hdb3), or a whole disk (e. g., /dev/hda). The last
  375.                         means installing LILO in the MBR. Default: if this option is missing,
  376.                         LILO is installed on the current root partition.
  377.                      ¡ prompt
  378.                         Forces the LILO prompt to be displayed. The default is: no prompt
  379.                         (compare with delay further down). This is recommended if LILO
  380.                         needs to manage more than one system. In addition, timeout should
  381.                         be set to guarantee an automatic reboot if nothing is entered at the
  382.                         prompt.
  383.                      ¡ timeout=<tenth-seconds>
  384.                         Sets a timeout for the prompted option, thus enabling an automatic
  385.                         reboot if no entry occurs in the given time. <tenth-seconds> is the
  386.                                                                                                       
  387.                         remaining time in 0.1 s. increments. Pressing  Shift    starts the
  388.                         timeout over. Default: infinite, e. g., no automatic reboot.
  389.                  * Linux section
  390.                      ¡ image=<kernelimage>
  391.                         Here the name of the kernel image to be booted, including its directory
  392.                         location, should be entered. With your new system, this is most proba-
  393.                         bly /boot/vmlinuz, or /vmlinuz for older SuSE Linux systems.
  394.                      ¡ label=<name>
  395.                         This name has to be unique in /etc/lilo.conf. Otherwise, you
  396.                         can freely choose a name for the system (e. g., Linux). Maximum
  397.                         length is 15 characters. You should use only letters, numbers and
  398.                         underscore for names-no blanks or special characters.10 The default
  399.                         is the filename of the kernel image (e. g., /boot/vmlinuz).
  400.                         By entering this name at the LILO prompt, you select which system to
  401.                         boot. It is recommended that, if there are many systems installed, you
  402.                         keep track of them in a special message file (message=).
  403.                      ¡ root=<rootdevice>
  404.                         This is to give the kernel the name of the root partition (e. g., /dev/
  405.                         hda2) of your Linux system. This is recommended for security rea-
  406.                         sons. If this option is omitted, the kernel takes its own root partition.11
  407.                  * Other systems
  408.                      ¡ other=<partition>
  409.                         other tells LILO to start the partitions of other systems such as DOS
  410.                         (e. g., /dev/hda1).
  411.                      ¡ loader=<Boot loader>
  412.                         To load a boot sector that belongs to another operating system, LILO
  413.                         constructs a pseudo MBR in its map file. At boot time, LILO first
  414.                10 For more on the specific rules for which characters to use, see [Alm94], 3.2.1.
  415.                11 This can be seen using the command rdev <kernelimage>.
  416.  
  417. 110
  418.  
  419.  
  420.  
  421.                                                                               4.4. Configuring LILO
  422.  
  423.         starts this pseudo MBR, which in turn starts the other boot sector. This
  424.         option specifies the file where the code for the pseudo MBR is to be
  425.         found.
  426.         Default: /boot/chain.b (usually, this is correct).
  427.         Sometimes another OS that needs to be booted from the first hard
  428.         drive (e. g. DOS) is supposed to boot from another hard drive using
  429.         LILO. There are additional options that cause the hard drives to swap
  430.         according to their device numbers:
  431.         map-drive=<Number> and to=<Number>. See: File con-
  432.         tents 4.4.2 ( on the current page).
  433.         The loader os2_d.b serves to load OS/2 from the second hard drive.
  434.         12 New in LILO-Version 20: "switching" devices has to be set explic-
  435.         itly now (see File contents 4.4.2 )
  436.  
  437.  # Booting DOS from the second hard drive
  438.  # DOS bootable partition config begins
  439.  other = /dev/hdb1
  440.     label = DOS
  441.     loader = /boot/chain.b
  442.         map-drive = 0x80              # first hd: BIOS number 0x80
  443.         to               = 0x81       # second hd: BIOS number 0x81
  444.         map-drive = 0x81
  445.         to               = 0x80
  446.     table = /dev/hdb
  447.  # DOS bootable partition config ends
  448.  
  449. File contents 4.4.2: /etc/lilo.conf Extract: Booting DOS from 2nd
  450. hard drive
  451.  
  452.      ¡ table=<ptable>
  453.         <ptable> sets the source device for the partition table written into the
  454.         pseudo MBR (normally /dev/hda or /dev/sda).
  455.      ¡ label=<name>
  456.         Name (your own choice) for the system. Recommended, because the
  457.         default-the raw device name-is less informative.
  458.  
  459. 4.4.2 Other LILO configuration options
  460.  
  461. The previous section covered the entries required in /etc/lilo.conf.
  462. Other useful options are discussed below.
  463. Those options that are marked as image options belong to the appropriate sec-
  464. tion of the operating system. The others are intended for the global parameter
  465. section of /etc/lilo.conf.
  466.  
  467.   * backup=<backup>
  468.  
  469. 12 any_b.b (Booting from B:) and any_d.b (Booting from second hard drive) are obsolete
  470. from LILO-Version 20.
  471.  
  472.                                                                                                 111
  473.  
  474.  
  475.  
  476. 4. Booting and Boot Managers
  477.  
  478.                    The file where LILO backs up the boot sector. The default is
  479.                    /boot/boot.xxxx, where xxxx is the internal device number of the
  480.                    installation partition.13
  481.                    We do not recommend you using a cryptic name (see our example above).
  482.                    You will not be able to use the implemented uninstall feature of LILO;
  483.                    but we think it is better to this carefully by hand, anyway. (see Section 4.5
  484.                    page 115)
  485.  
  486.                  If the backup file exists, LILO does not create a new one. Make sure you
  487.                  use a name not already in use.
  488.  
  489.                  * compact
  490.                    This option is recommended if you want to install LILO onto a floppy
  491.                    disk. If enabled, LILO tries to read more sectors at a time, resulting
  492.                    in a faster boot process. This does not work on every machine. We do
  493.                    not recommend that you set this as the normal way is safer and it only
  494.                    provides a difference of one or two seconds.
  495.                  * disk=<device file>
  496.                    bios=<BIOS device number>
  497.                    cylinders=<amount>
  498.                    heads=<amount>
  499.                    sectors=<amount> Here you can tell LILO precisely which BIOS
  500.                    device number and geometry it should use. This is scarcely ever needed.
  501.                    There is one major exception: IDE-SCSI system: If you own a BIOS that
  502.                    is capable of switching the boot devices SCSI prior to IDE and you want
  503.                    to use this feature, you need to tell LILO the switched order from the
  504.                    perspective of the BIOS. This is achieved by an extra entry in the global
  505.                    section of lilo.conf. An example for a system with one SCSI and one
  506.                    IDE disk may be seen in File contents 4.4.3.
  507.  
  508.                 # Enable LILO to correctly access /dev/sda and /dev/hda
  509.                 # at boot time if their boot order is interchanged in
  510.                 # the BIOS:
  511.                 disk = /dev/sda            #       The SCSI disk is regarded as ...
  512.                     bios = 0x80            #       ... first BIOS disk;
  513.                 disk = /dev/hda            #       the IDE disk is regarded as ...
  514.                     bios = 0x81            #       ... second BIOS disk.
  515.  
  516.                  File contents 4.4.3: lilo.conf Extract: Boot order: SCSI prior to IDE
  517.  
  518.                  * linear This option causes all references to sectors to be written as
  519.                    logical instead of physical addresses. This option might be useful if LILO
  520.                    does not recognize the geometry of the hard disk correctly. Still, it does
  521.                    not make the 1024 cylinders limit obsolete. In practice, this is scarcely
  522.                    ever needed.
  523.  
  524.                13 To be found in the kernel sources in /usr/src/linux/init/main.c, function parse_
  525.                root_dev().
  526.  
  527. 112
  528.  
  529.  
  530.  
  531.                                                                                      4.4. Configuring LILO
  532.  
  533.   The linear option does not remove the 1024 cylinders boundary! More-
  534.   over it only works below an extended ("65535 heads limit") boundary,
  535.   which with modern hard drive architecture is even more rigorous than with
  536.   old hard drives: 512 MB / 1 GB / approx. 2 GB for 16 / 32 / 63 sectors per
  537.   head.
  538.  
  539.   * message=<message-file>
  540.      Points to a text file that should be shown on screen at system boot up.
  541.      It should not contain more than 24 lines and can present an overview of
  542.      the LILO boot selection to augment the information available by pressing
  543.         
  544.       TAB  
  545.            . Recommended.
  546.  
  547.   If this option is set, the message file is then part of the LILO boot ma-
  548.   chinery and, after every change to this file, LILO has to be reinstalled
  549.   (Section 4.5 on the next page).
  550.  
  551.   * password=<password>
  552.      May be located either in a global or system-specific section. Provides
  553.      secure access to LILO services, or booting the corresponding system,
  554.      by means of a password. If you take this seriously, you should remove
  555.      the password from lilo.conf after you have used it for the first time.
  556.      As `root', you can set a new password for LILO any time you like
  557.      (you just need to reinstall it afterwards) It is recommended to also set the
  558.      option restricted, otherwise it could be possible to launch a shell,
  559.      see manpage for lilo.conf (man lilo.conf)!
  560.   * read-only
  561.      This option tells the kernel to initially mount the root partition read-only,
  562.      which is normal when starting Linux systems. If this is omitted, the kernel
  563.      uses its internal settings.14
  564.   * delay=<tenth-seconds>
  565.      If the prompt is not explicitly set, you can order a prompt by press-
  566.                                        
  567.      ing ( Shift    
  568.                         ,  Ctrl  
  569.                                   ,  Alt  
  570.                                             ). The delay= option sets the time to
  571.      elapse before LILO boots the first system in its list. The default is 0, that
  572.      is, no waiting.
  573.      The delay option has no effect if a prompt is specifically requested by
  574.      prompt.
  575.   * vga=<mode>
  576.      Selects VGA mode at startup. Valid modes are normal (80x25), ext
  577.      (80x50) or ask (ask at boot-time).
  578.   * append="<parameter>" Image option for Linux kernel. Enables
  579.      kernel parameters and hardware components to be specified, in the same
  580.      way that this is possible at the LILO prompt. The kernel first gets the
  581.      append line, then the prompt. append="mcd=0x300,10".
  582.  
  583. 14 This can be seen using the command rdev-R <kernelimage>. Installation kernels and freshly
  584. compiled ones have read-only set by default. Thus you do not normally need this option.
  585.  
  586.                                                                                                        113
  587.  
  588.  
  589.  
  590. 4. Booting and Boot Managers
  591.  
  592.                4.5 Installing and Uninstalling LILO
  593.                During a new Linux installation, or at a later time, YaST will lead you through
  594.                the steps of how to install LILO interactively.
  595.                In this section, we assume that some action is required that goes beyond what
  596.                YaST can accomplish, and we take a closer look at how LILO works during
  597.                the installing and uninstalling process.
  598.  
  599.                 The installation of a boot manager is tricky! Ensure in advance that you
  600.                 are 100% able to boot Linux and other mounted systems. You must have
  601.                 fdisk installed on a crash recovery disk, otherwise you might find yourself
  602.                 in the awkward situation of not being able to access your hard disk at all!
  603.  
  604.                Installation After Changing the Configuration
  605.                If any of the LILO components have changed, or you have modified your
  606.                configuration in /etc/lilo.conf, you will have to reinstall LILO. This
  607.                is easily done by launching the "Map Installer" like this:
  608.                   earth: # /sbin/lilo
  609.                What happens now is that LILO writes a backup of the target boot sector,
  610.                writes its first step into it and creates a new map file (see also Section 21
  611.                page 106). LILO now announces each installed system-for an example see
  612.                Output 4.5.1.
  613.  
  614.                 Added Linux*
  615.                 Added Linux.old
  616.                 Added DOS
  617.                                 Screen output 4.5.1: Output after launching LILO
  618.  
  619.                When the installation is complete, the machine can be rebooted:
  620.                   earth: # shutdown -r now
  621.                During reboot, the BIOS first performs its system test and directly afterwards
  622.                you will see LILO and its command prompt, where you can enter parameters
  623.                                                                                            
  624.                and select a boot image from the recently installed configurations.  TAB  
  625.                shows you a list of all systems installed.
  626.  
  627.                Installation After Recompiling a Kernel
  628.                If you want to include a freshly created kernel into your LILO boot setup,
  629.                the Linux kernel Makefile offers an all-in-one solution. All the commands
  630.                to configure and create the kernel are put together in the file /usr/src/
  631.                linux/Makefile; here the INSTALL PATH=/boot is specified (see
  632.                Section 13.5 page 321). This Makefile has a target called bzlilo
  633.                which, after a kernel compilation, automatically copies the currently in-
  634.                stalled kernel /boot/vmlinuz (this used to be /vmlinuz) to /boot/
  635.                vmlinuz.old, the new kernel to /boot/vmlinuz, and then re-installs
  636.                LILO. This can be done by entering the command:
  637.                   earth:/usr/src/linux # make bzlilo
  638.  
  639. 114
  640.  
  641.  
  642.  
  643.                                                                     4.5. Installing and Uninstalling LILO
  644.  
  645. instead of make zImage. This is only useful if you have edited /etc/lilo.
  646. conf in advance, and if your current kernel really is located in/boot/
  647. vmlinuz. The new, as well as the old, kernel should now be listed. See File
  648. contents 4.4.1 page 109 for an example of the resulting /etc/lilo.conf.
  649. At the LILO prompt, you can launch either of the two kernels. This makes
  650. your boot more secure, because you can still boot your old kernel even if the
  651. new one fails.
  652. For more on creating a new kernel, see Chapter 13 page 317.
  653.  
  654. Uninstalling LILO
  655.  
  656.   Uninstalling a boot manager is tricky! Please ensure in advance that you
  657.   are 100% able to boot Linux and other systems with their respective boot
  658.   disks. You should have fdisk installed on every boot disk, otherwise you
  659.   might find yourself in the unfortunate situation of not being able to access
  660.   your hard disk at all!
  661.  
  662. Perhaps one day it will be necessary for you to uninstall LILO :-( This is
  663. accomplished by writing back the target boot sector where LILO has been
  664. installed. This is not a problem in Linux if there is a valid backup (see
  665. Section 4.4.2 page 111, Option backup).
  666.  
  667.   A boot sector backup is no longer valid if the partition in question has got
  668.   a new filesystem (for DOS users: has been formatted). The partition table
  669.   of an MBR backup becomes invalid if the hard disk in question has been
  670.   repartitioned in the meantime. Obsolete "backups" are time-bombs. It is
  671.   best to delete them as soon as possible. Unpacking old and invalid backups
  672.   into system sectors is a direct route to data loss!
  673.  
  674. It is very simple to get back a DOS, Windows 95/98 or OS/2 MBR. Just enter
  675. the MS-DOS command (available since 5.0)
  676.      C:\> FDISK /MBR
  677. or on OS/2
  678.      C:\> FDISK /NEWMBR
  679. These commands only write the first 446 bytes (the boot code) into the MBR
  680. and leave partitions untouched.15
  681. For other restorations, first make a backup of the LILO sector in question-
  682. just to be on the safe side. Now you should check (at least twice :-) )
  683. whether your old backup file is the correct one and if it is exactly 512 bytes
  684. in size! Finally, write it back, but do not confuse if= and of=!
  685.  
  686.   * If LILO resides in partition yyyy (e. g., hda1, hda2,. . . ):
  687.           earth: # dd if=/dev/yyyy of=New-File bs=512 count=1
  688.           earth: # dd if=Backup-Date of=/dev/yyyy
  689.  
  690. 15 Assuming that the MBR (Section 4.1 page 103) has valid code. If not, it is considered invalid
  691. and the partition table is moved to "null".
  692.  
  693.                                                                                                      115
  694.  
  695.  
  696.  
  697. 4. Booting and Boot Managers
  698.  
  699.                 * If LILO resides in the MBR of zzz (e. g., hda, sda):
  700.                        earth: # dd if=/dev/zzz of=New-File bs=512 count=1
  701.                        earth: # dd if=Backup-Date of=/dev/zzz bs=446 count=1
  702.  
  703.                The last command is "cautious" and does not overwrite the partition table.
  704.                Again, do not forget: with fdisk you should mark the desired starting
  705.                partition as bootable. By the way, note how easy and fast a boot sector backup
  706.                is done. We recommend you do this frequently!
  707.  
  708.                4.6 Creating a Linux Boot Disk
  709.                A Linux boot disk consists (somewhat simplified) of one or more Linux ker-
  710.                nels, possibly managed by LILO. It serves to start up your system even if it
  711.                is not possible to boot directly from hard disk (possible reasons: overwritten
  712.                MBR, misconfigured boot manager, errors while installing, etc.).
  713.                A boot disk such as this loads only the kernel. Everything else, including
  714.                working system programs and init start scripts) must be provided by the
  715.                installation on the hard drive. The connection between the boot disk and the
  716.                system on the hard drive is established by the fact that in the kernel the root
  717.                partition in question is set as the root device.
  718.                Do not confuse this with the SuSE boot disk which is used for installation
  719.                and emergencies. If you need to create a new SuSE boot disk, you copy
  720.                the appropriate image from the directory disks on the SuSE CD-ROM to a
  721.                floppy disk (see Section 16.5 page 389 ).
  722.  
  723.                Boot Disk Without LILO
  724.                If your kernel does not need any hardware parameters, the easiest way to
  725.                create a boot disk is to just write the actual kernel onto a raw disk and to
  726.                adjust the root device (if this has not been done before).
  727.                    earth: # dd if=Your_Kernel of=/dev/fd0 bs=18k
  728.                    earth: # rdev /dev/fd0 Your_Root_Partition
  729.                    earth: # rdev -R /dev/fd0 1
  730.  
  731.                The last command makes sure that the kernel initially mounts root as read-
  732.                only (the startup scripts expect this).
  733.  
  734.                Boot Disk with LILO
  735.                You can create a much more capable boot disk with a greeting, prompt, ker-
  736.                nel parameters and other LILO goodies, by transferring the complete LILO
  737.                booting start machinery onto the disk (see Section 21 page 106). For this, the
  738.                disk needs a filesystem; the Minix filesystem is best suited for this.
  739.                To do this, proceed as follows:
  740.                 * Create a Minix filesystem on a new and empty floppy disk and mount the
  741.                    disk to, for example, /mnt, with the commands:
  742.                         earth: # /sbin/mkfs.minix -c /dev/fd0 1440
  743.                         earth: # /bin/mount /dev/fd0 /mnt
  744.  
  745. 116
  746.  
  747.  
  748.  
  749.                                                                   4.7. Sample Configurations
  750.  
  751.  * Now copy your kernel files and the LILO file /boot/boot.b to /mnt,
  752.    for example, onto the floppy disk.
  753.  * Optional: create a message file /mnt/message.
  754.  * Create lilo.conf on /mnt. You need to adapt this to your needs
  755.    (give the correct name of the kernel, etc.). See File contents 4.6.1 for
  756.    an example.
  757.  
  758. # LILO Configuration file bootdisk
  759. # Start LILO global Section
  760. boot=/dev/fd0                            # Installation: Floppy
  761. install=/mnt/boot.b                      # Of course LILO and
  762. map=/mnt/map                             # map file onto floppy!
  763. message=/mnt/message                     # optional
  764. prompt
  765. timeout=100           # Wait at prompt: 10 s
  766. vga = normal          #
  767. # End LILO global section
  768. ## Linux bootable partition config begins
  769. image = /mnt/First_Kernel                  #    default
  770.       root = /dev/Your_Root_Device # Here is your root partition!
  771.       label = linux
  772. # Linux bootable partition config ends
  773. ## System sections for more kernel here:
  774.               File contents 4.6.1: lilo.conf for a bootdisk
  775.  
  776.  * Install LILO with this lilo.conf:
  777.           earth: # /sbin/lilo -C /mnt/lilo.conf
  778.  
  779.  * Unmount the floppy-that's it!
  780.           earth: # /bin/umount /mnt
  781.  
  782.  * Do not forget to check your boot disk at the next system start to check
  783.    whether it works or not :-)
  784.  
  785. 4.7 Sample Configurations
  786. If Linux is the only operating system on your machine, there is nothing to do,
  787. since everything needed has already been done by YaST.
  788. Now we will give you some example configurations. Please have a look at
  789. /usr/doc/howto/mini/Linux+*.gz, here you will see some config-
  790. uration files for LILO.
  791.  
  792. 4.7.1 DOS/Windows 95/98 and Linux
  793.  
  794. Requirements: There must be at least a primary partition for each of
  795. DOS/Windows 95/98 and Linux which is below the 1024 cylinders limit
  796. (Section 22 page 107).
  797.  
  798.                                                                                         117
  799.  
  800.  
  801.  
  802. 4. Booting and Boot Managers
  803.  
  804.                For this case, we have already discussed a configuration (File contents 4.4.1
  805.                page 109) - only the settings for root=, image= and other= have to be
  806.                adapted. LILO is installed in the MBR. You should omit the Linux.old if
  807.                you do not have an old kernel installed.
  808.                Save your /etc/lilo.conf and be sure you have a Linux boot disk.
  809.                Windows 95/98 feels especially inclined to eliminate "foreign" MBRs. If
  810.                you can still boot Linux using your boot disk, this problem is quickly solved
  811.                with the command
  812.                   earth: # /sbin/lilo
  813.                which will complete your LILO installation.
  814.  
  815.                4.7.2 Windows NT and Linux on One Hard Disk
  816.                 1. If Windows NT and Linux need to co-exist on the same hard disk, you
  817.                   should use the NT boot manager for booting. This can either start the
  818.                   kernel images or the boot sectors themselves. Execution of the following
  819.                   steps prepares everything for a peaceful coexistence of Linux and Win-
  820.                   dows NT:
  821.                    * Install NT.
  822.                    * Partition the NT disks (using FAT so that Linux can write on it).
  823.                    * Install Linux as usual (in our example, the root partition is on /dev/
  824.                      sda3). Mount either the DOS partition or an error free DOS floppy
  825.                      disk (for example, on /dos).
  826.                    * Install LILO, but install it in Linux' root partition (/dev/sda3),
  827.                      not in the MBR (/dev/sda). You may still configure a selection
  828.                      of Linux kernels for LILO. See File contents 4.7.1 for an example
  829.                      lilo.conf.
  830.  
  831.                 # LILO Configuration file
  832.                 # Start LILO global Section
  833.                 boot=/dev/sda3                                  # Target of installation
  834.                 backup=/boot/boot.sda3.970428 # Backup previous boot sector;
  835.                                                            # 28. Apr 1997
  836.                 prompt
  837.                 timeout=100            # Wait at prompt: 10 s
  838.                 vga = normal           # force sane video state
  839.                 # End LILO global section
  840.                 # Linux bootable partition config begins
  841.                 image = /vmlinuz                           #       default image to boot
  842.                      root = /dev/sda?                      # Here the root partition!
  843.                      label = Linux
  844.                 # Linux bootable partition config ends
  845.                    File contents 4.7.1: lilo.conf for booting a Linux root partition
  846.  
  847.                    * Copy the LILO boot sector to a location where NT can find it; e. g.:
  848.  
  849.                       earth: # /bin/dd if=/dev/sda3 bs=512 count=1 of=/dos/bootsek.lin
  850.  
  851.                      This step as well as the following has to be performed after every
  852.                      kernel update.
  853.  
  854. 118
  855.  
  856.  
  857.  
  858.                                                                                      4.7. Sample Configurations
  859.  
  860.       * Boot NT. Copy bootsek.lin from data disk to main directory of
  861.          NT's system drive (if it is not already there).
  862.       * In boot.ini (first setting attributes), supplement at the end:
  863.  
  864.             c:\bootsek.lin="Linux"
  865.  
  866.  
  867.       * After the next boot (if everything went smoothly), there should be an
  868.          entry in NT's boot manager.
  869.  2. Another possibility: install LILO in the MBR and claim that it's DOS to
  870.      Windows NT (as in our previous example).
  871.  
  872.   NT 3.5* does not recognize Linux' partition types 82 and 83. Make sure
  873.   that no NT program tries to "repair" your partition table. This would result
  874.   in loss of data! Always have valid backups of the LILO boot sector at
  875.   hand.
  876.  
  877. 4.7.3 OS/2 and Linux
  878.  
  879.  1. Use the OS/2 boot manager for booting. It can launch unlimited primary
  880.      and logical partitions provided they are below the 1024 cylinders limit.
  881.      The user is responsible for the partitions. This boot manager is configured
  882.      by OS/2's fdisk.
  883.      Preparation on the Linux side: consists merely of making a partition
  884.      bootable (usually this is the root partition) with LILO. You can use the
  885.      same lilo.conf as in the Windows NT example, but there is one thing
  886.      that you have to consider in advance. . .
  887.      Preparation on the OS/2 side: OS/2 not only uses the conventional and
  888.      obvious entries for existing partitions in MBRs on hard disks, but also
  889.      uses "waste" space in these sectors for additional information.16 If these
  890.      are inconsistent, OS/2's fdisk considers these partitions faulty and re-
  891.      fuses to provide boot manager services. The fdisk commands of other
  892.      systems do not know how to handle these extra partitions. . . Conflicts are
  893.      inevitable.
  894.      Therefore: before installing Linux, load OS/2 (the installation system
  895.      is sufficient) and create the Linux partitions with OS/2's fdisk, at least
  896.      the logical drives. This initially creates additional OS/2 partitions, which
  897.      might get in the way. Solution: immediately after creating the partitions,
  898.      load the Linux installation system (or the rescue disk from the SuSE Linux
  899.      CD) and change the partition types to 83 (Linux native) using fdisk. Now
  900.      these partitions will be ignored by OS/2.
  901.  2. 2nd option: Install LILO as the main boot manager on a primary partition
  902.      on the first hard drive.17 This special case is also considered in our next
  903.      example, where DOS is additionally involved.
  904.  
  905. 16 A new Support Data Base article is about to be written: keyword "OS/2".
  906. 17 It is not a good idea to install in the MBR, as repartitioning with another fdisk could erase the
  907. MBR and thus remove LILO.
  908.  
  909.                                                                                                            119
  910.  
  911.  
  912.  
  913. 4. Booting and Boot Managers
  914.  
  915.                4.7.4 DOS, OS/2 and Linux
  916.                 1. If you have used the OS/2 boot manager for DOS and OS/2 and want to
  917.                   continue using it, simply add Linux to its start menu as described in the
  918.                   previous example.
  919.                 2. If you have LILO installed as the main boot manager on a primary par-
  920.                   tition of the first hard disk, then the following, intentionally complicated
  921.                   example for lilo.conf (File contents 4.7.2) assumes that the DOS and
  922.                   Linux boot partitions are primary and on the first hard drive, whereas
  923.                   OS/2 resides on the second hard drive-all of them below the 1024 cylin-
  924.                   ders limit. OS/2 is on the second drive. This is why a special loader
  925.                   (/boot/os2_b.b instead of /boot/chain.b) is used. The MBR
  926.                   code might be either from DOS or OS/2 (it doesn't matter which). The
  927.                   LILO boot partition (/dev/sda4) must be marked as active, with any
  928.                   fdisk.
  929.  
  930.                 # LILO Configuration file
  931.                 # Start LILO global Section
  932.                 boot = /dev/sda4                 # LILO in Linux root partition
  933.                 backup = /boot/boot.sda4.970428
  934.                 message = /boot/message # Greeting message
  935.                 prompt
  936.                 delay = 100
  937.                 vga       = normal
  938.                 ## Linux bootable partition config begins
  939.                 image = /vmlinuz
  940.                        label = linux
  941.                        root = /dev/sda4
  942.                 # Linux bootable partition config ends
  943.                 ## OS/2 bootable partition config begins
  944.                 other = /dev/sdb5
  945.                        table = /dev/sdb
  946.                        label = os2
  947.                        loader = /boot/os2_b.b
  948.                 # OS/2 bootable partition config ends
  949.                 ## DOS bootable partition config begins
  950.                 other = /dev/sda1
  951.                        table = /dev/sda
  952.                        label = dos
  953.                 # DOS bootable partition config ends
  954.  
  955.                  File contents 4.7.2: LILO with DOS, OS/2 and Linux on two hard disks
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963. 120
  964.  
  965.  
  966.  
  967.                                                                               4.8. LILO Problems
  968.  
  969. 4.8 LILO Problems
  970.  
  971. Some Guidelines
  972. Some simple guidelines at the beginning will avoid most LILO problems in
  973. advance (this is taken from the LILO documentation [Alm94]):
  974.  * Do not panic! If anything does not work, try to find the error and/or the
  975.    cause first; check the diagnosis before you start fixing the problem.
  976.  * Always have an up-to-date and tested boot disk at hand.
  977.  * SuSE Linux contains a full Linux system on its boot disk and installation
  978.    CD (for the rescue system, see Section 16.5 page 389), to allow you to
  979.    reach all your Linux partitions. Tools are included for repairing almost
  980.    any problems that can occur.
  981.  * Read the complete LILO documentation, especially if the system does
  982.    not do what you want it to do.
  983.  * Check /etc/lilo.conf before using the map installer (/sbin/
  984.    lilo).
  985.  * Be careful if you are using a large hard drive, or multiple ones. You need
  986.    to be aware of the 1024 cylinders limit.
  987.  * Try with and without the linear option (normally it should be better
  988.    without!).
  989.  
  990. 4.8.1 Diagnosis of Errors: LILO Start Messages
  991. This is mainly section 5.2.1 from [Alm94].
  992. When LILO loads itself, it displays the word `LILO'. Each letter is printed
  993. before or after performing some specific action. If LILO fails at some point,
  994. the letters printed so far can be used to identify the problem.
  995. nothing No part of LILO has been loaded. Either LILO is not installed at
  996.    all or the partition on which it's boot sector is located isn't active.
  997. `L' error ... The first stage boot loader has been loaded and started, but it
  998.    can't load the second stage boot loader (/boot/boot.b). The two-digit
  999.    error codes indicate the type of problem. This condition usually indicates
  1000.    a media failure or a geometry mismatch.
  1001. `LI' The second stage has been invoked but could not be started. This can
  1002.    either be caused by a geometry mismatch or by moving /boot/boot.b
  1003.    without reinstalling LILO.
  1004. `LIL' The second stage of boot loader has been started, but it can't load the
  1005.    descriptor table from the map file. This is typically due to a physical error
  1006.    of the boot device or a faulty disk geometry.
  1007. `LIL?' The second stage boot loader has been loaded at an incorrect ad-
  1008.    dress. This is typically caused by a subtle geometry mismatch or by mov-
  1009.    ing /boot/boot.b without reinstalling LILO.
  1010. `LIL-' The descriptor table (in the map file) is corrupt. This can either be
  1011.    caused by a geometry mismatch or by moving /boot/boot.b without
  1012.    reinstalling LILO.
  1013. `LILO' All parts of LILO have been successfully loaded.
  1014.  
  1015.                                                                                             121
  1016.  
  1017.  
  1018.  
  1019. 4. Booting and Boot Managers
  1020.  
  1021.                The most common causes for geometry errors are not physical defects or
  1022.                invalid partition tables but errors in LILO installation, including:
  1023.  
  1024.                 * disregarding the 1024 cylinders limit (see next section)
  1025.                 * an unsuccessful attempt at starting LILO from a logical partition
  1026.  
  1027.                4.8.2 The 1024-Cylinder Limit
  1028.  
  1029.                As emphasized before (e.g. page 107), the entire LILO machinery (e. g., any
  1030.                data that is needed for booting) must be able to process BIOS calls (which
  1031.                means it must reside below the 1024 cylinders limit on the hard drive). The
  1032.                sections of the hard drive that can be used (these are called allowed sections)
  1033.                have already been discussed.
  1034.                This restriction affects only the boot-up machinery. It is not required that
  1035.                LILO be installed on the Linux root partition. It is even possible (but quite
  1036.                dangerous, too) to put the boot machinery onto partitions of other operating
  1037.                systems to which Linux has read and write access.
  1038.  
  1039.                 Never install the LILO boot sector onto an unknown partition because you
  1040.                 will severely damage the filesystem!
  1041.  
  1042.                 * The best method is to create a primary partition (within the allowed sec-
  1043.                   tion) and to install all LILO files (including the LILO boot sector) into
  1044.                   this partition. This will be, in most cases, the Linux root partition.
  1045.                   You can also add it to /boot with YaST. The only condition is that there
  1046.                   has to be enough space for
  1047.                    ¡ boot.b, map, message, and
  1048.                    ¡ the Linux kernels that LILO should boot.
  1049.                   A few megabytes is enough. It does not matter where you put the rest
  1050.                   of your partitions. There are no more restrictions. As soon as the kernel
  1051.                   runs, you have unrestricted access to all installed drives.
  1052.  
  1053.                But what to do if there is no space for such a partition? If you neither want
  1054.                to repartition your hard drive, upgrade to SCSI, nor want to purchase a new
  1055.                BIOS version, there are still two (makeshift) possibilities:
  1056.  
  1057.                 * Use a boot disk instead of LILO on the hard drive, or, if you are also
  1058.                   running MS-DOS, you can use loadlin as well.
  1059.                 * Install the LILO boot machinery onto a Linux partition which is in the
  1060.                   permitted section and where Linux has write access (e. g., a FAT/VFAT
  1061.                   drive). We cannot put the LILO boot sector there as well! So there are
  1062.                   only two places to put it. Either at the start of an extended partition on
  1063.                   the first drive-as long as it is beneath the 1024 cylinders limit-or on the
  1064.                   MBR.
  1065.                   Suppose that the partition in question is mounted on /mnt, that LILO
  1066.                   is installed in the MBR (/dev/hda), and that you also boot DOS from
  1067.                   /dev/hda1. Then you should proceed as follows:
  1068.  
  1069. 122
  1070.  
  1071.  
  1072.  
  1073.                                                                         4.8. LILO Problems
  1074.  
  1075.    ¡ Create a new directory (e. g., /mnt/LINUX) and copy the LILO files
  1076.      mentioned above to it: boot.b, map, message, as well as the chain
  1077.      loader of other operating systems (normally chain.b) and finally the
  1078.      Linux kernels that LILO should boot.
  1079.    ¡ Create a /mnt/LINUX/lilo.conf where all paths point to /mnt/
  1080.      LINUX (see File contents 4.8.1).
  1081.  
  1082. # LILO Configuration file
  1083. # Start LILO global Section
  1084. boot=/dev/hda                      # Installation target
  1085. backup=/mnt/LINUX/hda.xxxx # backup of old MBR
  1086. install=/mnt/LINUX/boot.b # Of course LILO and
  1087. map=/mnt/LINUX/map                 # map file are in /mnt/LINUX!
  1088. message=/mnt/LINUX/message # optional
  1089. prompt
  1090. timeout=100         # Wait at prompt: 10 s
  1091. vga = normal        #
  1092. # End LILO global section
  1093. ## Linux bootable partition config begins
  1094. image = /mnt/LINUX/First_Kernel              #     default
  1095.      root = /dev/Your_Root_Device                 # Root partition!
  1096.      label = linux
  1097. # Linux bootable partition config ends
  1098. ## System section for other kernels:
  1099. ## End Linux
  1100. # DOS bootable partition config begins
  1101. other = /dev/hda1             # MSDOS system drive
  1102.      label = dos
  1103.      loader = /mnt/LINUX/chain.b
  1104.      table = /dev/hda
  1105. # DOS bootable partition config ends
  1106.  
  1107.           File contents 4.8.1: lilo.conf for other partitions
  1108.  
  1109.    ¡ Install LILO with this lilo.conf:
  1110.      earth: # /sbin/lilo -C /mnt/LINUX/lilo.conf
  1111.      After that, LILO should work. Boot MS-DOS and protect the LILO
  1112.      files as well as possible against write access (just to remind you: any
  1113.      write access disables LILO). To accomplish this, you should assign to
  1114.      all files in X:\LINUX (where the `X' is the DOS drive mounted to
  1115.      /mnt) the DOS attributes system and hide.
  1116.  
  1117. In conclusion, we point you toward two HOWTOs in /usr/doc/howto/
  1118. en/mini/-LILO.gz and Large-Disk.gz.
  1119.  
  1120. 4.8.3 Special Boot Problems with Kernels from 2.0 Onwards
  1121.  
  1122.                                                                                       123
  1123.  
  1124.  
  1125.  
  1126. 4. Booting and Boot Managers
  1127.  
  1128.                Problems
  1129.                Problems booting with LILO might occur after part of the kernel has been
  1130.                loaded. (e. g., a SuSE installation kernel):-(
  1131.                You can select a kernel at the LILO prompt and this kernel is loaded (some
  1132.                dots are output onto the screen) but starting the kernel fails. Before reaching
  1133.                "uncompressing Linux" the system crashes with different behaviors.
  1134.                Possible error messages:
  1135.                 * System reboots
  1136.                 * System just hangs
  1137.                 * "crc-error"
  1138.                 * "no free space"
  1139.                 * "Error 0x00"
  1140.                 * "Error 0x01"
  1141.                 * "incomplete literal tree"
  1142.                Thereafter, access on the floppy is attempted but the system hangs.
  1143.  
  1144.                Cause
  1145.                The cause lies in a combination of a big kernel, LILO and faulty hardware.
  1146.                This affects roughly 1% of all machines.
  1147.                We assume that this is due to a faulty BIOS that has problems with fast
  1148.                memory access.
  1149.                This problem does not occur, if:
  1150.                 * the machine is booted via loadlin
  1151.                 * the kernel has been copied to a floppy
  1152.                         dd if=/vmlinuz of=/dev/fd0
  1153.  
  1154.                   and booted from there
  1155.                 * a smaller kernel is used, which has been created with
  1156.                         make zImage
  1157.  
  1158.                   (e. g., an older 1.2.13 kernel) is booted via LILO
  1159.                The following BIOS settings do not cause any problems either:
  1160.                 * Disable Internal Cache
  1161.                 * DRAM Precharge Wait State value: 1 and
  1162.                 * DRAM Wait Burst Timing value: 0x3333
  1163.  
  1164.                Solution
  1165.                First of all, you should be able to install a system. So, if you can neither boot
  1166.                via loadlin nor via setup you should use an old kernel 1.2.13 boot disk for
  1167.                installation. If you do not have such a disk at hand, you should change the
  1168.                BIOS settings accordingly.
  1169.                After a successful installation, the question is how you want to boot in the
  1170.                future. First, you should use the same media as during installation. loadlin
  1171.  
  1172. 124
  1173.  
  1174.  
  1175.  
  1176.                                                                         4.9. Starting via loadlin
  1177.  
  1178. from DOS should not cause any problems. With a boot disk, you should enter
  1179. the following parameters:
  1180.    load ramdisk=0 root=/dev/???
  1181. where ??? is your root partition (e. g., /dev/hda1). Thereafter, you should
  1182. build your own kernel, since this can be booted using LILO.
  1183.  
  1184. 4.9 Starting via loadlin
  1185. Now we want to offer an alternative to boot SuSE Linux, loadlin. The pro-
  1186. gram loadlin is a DOS program that is capable of booting a Linux kernel
  1187. from a DOS directory. Thus loadlin perfectly integrates itself into an existing
  1188. DOS/Windows 9x environment. As no entry in the  MBR is needed, Win-
  1189. dows only notices one or more partitions with unknown ID's. The risk of
  1190. unwanted side effects due to a Linux installation is thus minimized.
  1191. The procedure described below works on both Windows 95 and Windows 98.
  1192. The files themselves have been written in Windows 95; for this reason we wiil
  1193. just talk about Windows 95.
  1194. In principle, there are two ways of activating loadlin. One is to switch be-
  1195. tween various systems via a boot menu, or to start Linux via loadlin from
  1196. another running system.
  1197. Both methods have advantages and disadvantages:
  1198.  * A boot menu saves you the trouble of having to start another operating
  1199.    system first, before you can start Linux.
  1200.  * You can add other configurations to your boot menu to create a universal
  1201.    starting mechanism.
  1202.  * You need to modify start files, however, to build a boot menu; which you
  1203.    will have to do by trial and error.
  1204.  * Changing to Linux from the DOS prompt is very simple.
  1205.  * A Linux start can be very nicely integrated into a Windows 95 session.
  1206.    Double clicking an icon will start Linux (Windows 95 contains DOS 7.0).
  1207.  
  1208.  You should use a boot menu if you are using DOS or Windows 3.x. If
  1209.  using Windows 95, you can start most easily from the running system.
  1210.  Start menus in Windows 95 are a very complex matter. We are only able
  1211.  to give you some hints about them.
  1212.  
  1213. 4.9.1 Necessary Steps for all loadlin Users
  1214. This is what you need to do, whether you decide to use a boot menu, or to
  1215. start from a running system (in DOS, Windows 3.x, or Windows 95):
  1216. 1. You may have already installed loadlin (this was done in Section 2.5.4
  1217.    page 46). If not, do so now using setup.
  1218. 2. Change to c:\loadlin in MS-DOS. There you will find a file called
  1219.    linux.par. Create a file named startlin.bat (you can give it
  1220.    another name). Now insert the line described in File contents 4.9.1 on the
  1221.    following page:
  1222.  
  1223.                                                                                              125
  1224.  
  1225.  
  1226.  
  1227. 4. Booting and Boot Managers
  1228.  
  1229.                 c:\loadlin\loadlin @c:\loadlin\linux.par
  1230.  
  1231.                           File contents 4.9.1: Example of a batch file for starting Linux
  1232.  
  1233.                 c:\loadlin\vmlinuz # first value must be
  1234.                                               # the filename of the Linux kernel
  1235.  
  1236.                 root=/dev/xxx                 # the device which gets mounted as root FS
  1237.  
  1238.                 ro                            # mount root read-only
  1239.  
  1240.                File contents 4.9.2: Example of the file linux.par with customized values
  1241.  
  1242.  
  1243.                       Next, edit the file linux.par (File contents 4.9.2).
  1244.                       Instead of xxx, enter your root partition's device name (you wrote
  1245.                       down this name in Section 2.10.2 page 66). startlin.bat starts
  1246.                       Linux. The file linux.par is used by startlin.bat as well as by
  1247.                       config.sys, and contains essential parameters. Later on, when you are
  1248.                       more familiar with Linux, you can add or replace parameters here. If you
  1249.                       have built a kernel of your own, just copy it to c:\loadlin\vmlinuz
  1250.                       and from then on this kernel will be booted.
  1251.  
  1252.                4.9.2 Setting up Boot Menus
  1253.  
  1254.                Here's how to configure a boot menu in DOS or Windows 3.x:
  1255.  
  1256.                 1. First, define a boot menu section in your c:\config.sys file. Open
  1257.                       c:\config.sys in an editor and enter something similar to the File
  1258.                       contents 4.9.3.
  1259.  
  1260.                 [Menu]
  1261.                 menuitem=Win, starting Windows,...
  1262.                 menuitem=DOS, starting DOS, MS-DOS...
  1263.                 menuitem=Linux, starting Linux...
  1264.                 menucolor=15,1
  1265.                 menudefault=Win,5
  1266.  
  1267.                File contents 4.9.3: Example of first part of Linux boot menu in
  1268.                c:\config.sys
  1269.  
  1270.                       Under the label [Menu], define an entry in the boot menu for each OS
  1271.                       you want to boot. Also, define the menu's color and after how many
  1272.                       seconds each OS will be automatically started.
  1273.                 2. Below these entries, enter the labels [Common], [Win], [DOS], and
  1274.                       [Linux]. Commands entered in [Common] are always executed. All other
  1275.                       entries are OS specific. See the example in File contents 4.9.4 on the fac-
  1276.                       ing page. As a guide, you can use the lines in your own config.sys.
  1277.                       An example may be found in: File contents 4.9.4 on the next page.
  1278.                       Now save the file with your changes.
  1279.  
  1280. 126
  1281.  
  1282.  
  1283.  
  1284.                                                                       4.9. Starting via loadlin
  1285.  
  1286. [Common]
  1287. device=c:\dos\himem.sys /testmem:off
  1288. device=c:\dos\emm386.exe noems I=E000-F4FF
  1289. dos=high,umb
  1290. files=30
  1291. buffers=10
  1292. shell=c:\dos\command.com
  1293.  
  1294. [Win]
  1295. devicehigh=c:\dos\dblspace.sys /move
  1296. devicehigh=c:\cd\slcd.sys /D:SONY_000 /B:340 /M:P /V /C
  1297.  
  1298. [DOS]
  1299. devicehigh=c:\dos\dblspace.sys /move
  1300. devicehigh=c:\cd\slcd.sys /D:SONY_000 /B:340 /M:P /V /C
  1301.  
  1302. [Linux]
  1303. shell=c:\loadlin\loadlin.exe @c:\loadlin\linux.par
  1304.  
  1305. [Common]
  1306. rem Remains blank
  1307.  
  1308. File contents 4.9.4: Example of second part of Linux boot menu in
  1309. c:\config.sys
  1310.  
  1311. 3. Next, edit c:\autoexec.bat. Here you must put the same labels and
  1312.    assign entries to labels, except the notation differs slightly. See the ex-
  1313.    ample in File contents 4.9.5 on the following page. Notice that the Linux
  1314.    case is not mentioned here because Linux is booted using loadlin directly
  1315.    from the c:\config.sys file. The variable %config% contains the
  1316.    selected label (:Win or :DOS). Customize the code to fit your machine.
  1317. 4. If you now boot your machine, the boot menu appears and you have five
  1318.    seconds to choose an operating system. Then Windows starts automat-
  1319.    ically (menudefault=Win,5). If you select `Linux', Linux starts and
  1320.    awaits your login.
  1321.  
  1322. 4.9.3 Starting Linux from Within Windows
  1323. To create a start icon for Linux, to boot Linux from within a running Win-
  1324. dows 95 session:
  1325. 1. Open Windows Explorer. Change to c:\loadlin. With the right
  1326.    mouse button, click on the file startlin.bat and select `Create
  1327.    Shortcut'.
  1328. 2. Drag the shortcut onto the desktop.
  1329. 3. Click on `Shortcut to startlin.bat' with the right mouse but-
  1330.    ton and select `Properties'. Go to tab `Program', click on the
  1331.    button `Advanced' and click `MS-DOS mode' on. Confirm with
  1332.    `OK'.
  1333. 4. Click the `Change icon' button and select a nice icon; give the short-
  1334.    cut a suitable name; Voila!
  1335.  
  1336.                                                                                            127
  1337.  
  1338.  
  1339.  
  1340. 4. Booting and Boot Managers
  1341.  
  1342.                 @echo off
  1343.  
  1344.                 rem Entries for all Configurations
  1345.                 switches= /f
  1346.                 set comspec=c:\dos\command.com
  1347.                 prompt $p$g
  1348.                 loadhigh c:\dos\keyb gr,,c:\dos\keyboard.sys
  1349.                 loadhigh c:\dos\doskey
  1350.                 set temp=c:\temp
  1351.                 loadhigh c:\dos\mscdex.exe /D:SONY_000 /E /V /L:H
  1352.                 c:\logimaus\mouse.exe
  1353.  
  1354.                 goto %config%
  1355.  
  1356.                 :Win
  1357.                 c:\dos\smartdrv.exe a- b- c+ 2048 1024
  1358.                 path c:.;d:.;c:\windows;c:\dos;c:\util;
  1359.                 win :
  1360.                 c:\dos\smartdrv /C
  1361.                 goto ende
  1362.  
  1363.                 :DOS
  1364.                 path c:.;d:.;c:\dos;c:\util;
  1365.                 goto ende
  1366.  
  1367.                 :ende
  1368.                 echo * Goodbye *
  1369.  
  1370.                File contents 4.9.5: Example of autoexec.bat supporting Linux boot
  1371.                menu
  1372.  
  1373.                 5. Double clicking this new shortcut should bring up a dialog box telling
  1374.                   you that Windows 95 is about to switch to DOS mode. If this dialog box
  1375.                   bothers you, you can turn it off in the properties menu.
  1376.  
  1377.                4.9.4 The Windows Boot Menu
  1378.                This is how you install a boot menu for Windows 95:
  1379.  
  1380.                 1. You must edit the file c:\msdos.sys. First, make the file visible by
  1381.                   entering: C:> attrib -R -S -H c:\msdos.sys
  1382.                   This is a text file where you have to enter some lines to deactivate the
  1383.                   Windows 95 start menu. The [Options] label should resemble File con-
  1384.                   tents 4.9.6 on the next page.
  1385.                   The parameter Logo=0 is optional and avoids switching to graphics
  1386.                   mode before Windows 95 is started. Booting is much faster and you avoid
  1387.                   lots of trouble if you plan to use the DOS emulator in Linux later on.
  1388.                   The parameter BootGUI=0 is for booting Windows 95 directly into DOS
  1389.                   mode. To start Windows from this you have to enter:
  1390.                   C:> win but this is already done by our example c:\autoexec.bat
  1391.                   if you have selected Win95 from our menu.
  1392.  
  1393. 128
  1394.  
  1395.  
  1396.  
  1397.                                                                    4.9. Starting via loadlin
  1398.  
  1399. [Options]
  1400. BootGUI=0
  1401. BootDelay=0
  1402. BootMenu=0
  1403. Logo=0
  1404.  
  1405. File contents 4.9.6: msdos.sys to start Linux using a Windows 95 boot
  1406. menu
  1407.  
  1408. 2. Next, define your boot menu in c:\config.sys. See File con-
  1409.    tents 4.9.7) for an example.
  1410.  
  1411. [Menu]
  1412. menuitem=Win95, start Windows 95...
  1413. menuitem=DOS, start MS-DOS...
  1414. menuitem=Linux, start Linux...
  1415. menudefault=Win95,5
  1416.  
  1417. File contents 4.9.7: Example config.sys (part one) for starting Linux
  1418. using a boot menu with Windows 95
  1419.  
  1420.    Under the Label [Menu], define entries for the boot menu, its color and
  1421.    the delay in starting up automatically.
  1422. 3. Further down in config.sys, enter labels [Win95], [DOS],
  1423.    [Linux], and [Common]. [Common] is for entries that apply every
  1424.    time (this will very rarely be the case in Windows 95). All other labels
  1425.    are for the corresponding operating system. Use those lines that are al-
  1426.    ready written in your config.sys. The example in File contents 4.9.8,
  1427.    should only be regarded as a hint.
  1428.  
  1429. [Win95]
  1430. dos=high,umb
  1431. device=c:\windows\himem.sys /testmem:off
  1432.  
  1433. [DOS] device=c:\plugplay\drivers\dos\dwcfgmg.sys
  1434. dos=high,umb
  1435. device=c:\windows\himem.sys /testmem:off
  1436. device=c:\windows\emm386.exe noems I=B000-B7FF
  1437. devicehigh=c:\cdrom\torisan.sys /D:TSYCD3 /P:SM
  1438.  
  1439. [Linux]
  1440. shell=c:\loadlin\loadlin.exe @c:\loadlin\linux.par
  1441.  
  1442. [Common]
  1443. accdate=C+ D+ H+
  1444. switches= /F buffers=20
  1445.  
  1446. File contents 4.9.8: Example config.sys (part two) for starting Linux
  1447. using a boot menu with Windows 95
  1448.  
  1449.    Now save this file.
  1450.  
  1451.                                                                                         129
  1452.  
  1453.  
  1454.  
  1455. 4. Booting and Boot Managers
  1456.  
  1457.                 4. Next, edit c:\autoexec.bat. Here, the same labels are entered, but
  1458.                   the notation is slightly different. The label which has been selected is
  1459.                   written to the variable %config%. Notice that the Linux case is not in-
  1460.                   cluded here, because Linux is booted using loadlin directly from the
  1461.                   config.sys file. Your entry should look something like File con-
  1462.                   tents 4.9.9.
  1463.  
  1464.                 @echo off
  1465.                 loadhigh keyb gr,,c:\windows\command\keyboard.sys
  1466.                 goto %config%
  1467.  
  1468.                 :Win95
  1469.                 win
  1470.                 goto ende
  1471.  
  1472.                 :DOS
  1473.                 path c:.;d:.;c:\windows\command;c:\util;
  1474.                 loadhigh c:\windows\command\mscdex.exe /D:TSYCD3 /L:x
  1475.                 loadhigh c:\windows\command\doskey
  1476.                 c:\windows\command\mouse.exe
  1477.                 goto ende
  1478.  
  1479.                 :ende
  1480.                 echo * And now? *
  1481.  
  1482.                File contents 4.9.9: Example autoexec.bat for starting Linux in Win-
  1483.                dows 95
  1484.  
  1485.                   When you have finished editing the file, don't forget to save it.
  1486.                 5. If you now boot your machine, the Windows 95 boot menu should appear,
  1487.                   giving you two seconds to select an entry. If you choose Command line,
  1488.                   your own boot menu will be displayed. Now you have five seconds to
  1489.                   select an operating system. After this delay, Windows 95 starts automati-
  1490.                   cally. If you select `Linux', Linux starts and awaits your login.
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507. 130
  1508.  
  1509.  
  1510.  
  1511.