Incompatibilities between LILO >= 20 and earlier versions ========================================================= Special chain loaders --------------------- The functionality of the chain loaders any_b.b and any_d.b has been generalized and integrated into chain.b. any_b.b and any_d.b are therefore no longer supported. Their behaviour can be emulated as follows: other = foo loader = /boot/any_b.b becomes other = foo map-drive = 0 to = 1 map-drive = 1 to = 0 and other = foo loader = /boot/any_d.b becomes other = foo map-drive = 0x80 to = 0x81 map-drive = 0x81 to = 0x80 The use of os2_d.b changes as follows: other = foo loader = /boot/os2_d.b becomes other = foo loader = /boot/os2_d.b map-drive = 0x80 to = 0x81 map-drive = 0x81 to = 0x80 Removal of less common baud rates --------------------------------- The baud rates 150 bps and 600 bps are no longer available with the SERIAL option. Incompatibilities between LILO >= 18 and earlier versions ========================================================= Partition type check -------------------- Starting with version 18, LILO checks the type of the partition where it stores its boot sector. LILO installation may therefore fail on systems where the LILO boot sector resides on a seemingly unsuitable partition. This problem can be solved by either changing the partition type of by using the IGNORE-TABLE configuration option. disktab ------- Is no longer documented and support for it will be removed in a future version of LILO. See section "Disk geometry" in the accompanying documentation for the right way to configure unusual disk geometry. Booting kernel images from a device ----------------------------------- An essentially useless feature of LILO is to be able to boot a kernel from a device without file system, e.g. image = /dev/fd0 range = 1+512 Support for this will be removed in a future version of LILO. Also, new functions such as kernels > 512kB are not supported for kernels booted from a device. Note that booting of non-Linux systems (other = /dev/...) will in no way be affected by this feature removal. REWRITE-TABLE ------------- The REWRITE-TABLE configuration option and the compile-time options REWRITE_TABLE, FIX_TYPE, and HIDE_DOS are not available in the current version of LILO, because deficiencies were found in the implementation in version 17 (e.g. attempts to alter the partition table of the second disk resulted in a modification of the partition table of the first disk, using the parameters of the second disk), and there was not enough time to complete an improved version. Future versions will use a radically different internal mechanism, but no configuration change should be required in most cases. Users who depend on REWRITE-TABLE to be available should continue to use their current version of LILO and wait for a later version before upgrading. Incompatibilities between LILO >= 17 and earlier versions ========================================================= Documentation change -------------------- The last traces of "old-style" configuration have been removed. Incompatibilities between LILO >= 0.16 and earlier versions =========================================================== Sanity checks ------------- When booting an operating system from any device than the first hard or floppy disk, specifying the chain loader is now mandatory. Incompatibilities between LILO >= 0.14 and earlier versions =========================================================== mkbindist --------- ... is gone. I don't think anybody used it and I got tired of updating it. Variable-size setup ------------------- Kernels >= 1.1.43 support setup segments of variable size. LILO 0.15 is able to detect this and act accordingly. However, older kernels could possibly contain other information at that place. This can be discovered by running the following command: # /sbin/lilo -t -v -v | grep Setup If very unusual numbers (e.g. below four or significantly bigger than five) are shown, you may have such a kernel. LILO has to be compiled without the VARSETUP option in such cases. Note that later kernels may no longer support running LILO without VARSETUP. Incompatibilities between LILO >= 0.13 and earlier versions =========================================================== Possible conflict with /etc/disktab from Shoelace ------------------------------------------------- When using the new path names, installation of LILO may fail with Invalid line in /etc/disktab: "w0|wini|Generic hard disk:\" if you have an old /etc/disktab file from Shoelace (a different boot loader that is quite obsolete nowadays). Remove or rename that file before running /sbin/lilo (or QuickInst). Note: you may have an /etc/disktab file even if you've never used Shoelace, because even current versions of SLS still install that file. Removal of support for unstripped kernels ----------------------------------------- (Compound) unstripped kernels are no longer supported by LILO, because current kernels are expected to be compressed. This change also obsoletes /etc/lilo/install (see below). A new concept to support compressed kernels carrying symbol information may be devised later. Removal of /etc/lilo/install ---------------------------- Early versions of LILO expected to find all parameters on the command line. In order to simplify repeated re-installations of LILO, the invocation of LILO with all its parameters was stored in /etc/lilo/install. Because this was messy and introduced syntactical limitations, /etc/lilo/config was introduced after a while and support for command-line options was drastically reduced later. /etc/lilo/install now typically just invoked /etc/lilo/lilo with no options or with -C /etc/lilo/config, which became the default. Only when using compound unstripped kernels, one had to put additional instructions to build the kernel file into /etc/lilo/install. Now, that unstripped kernels are gone too (see above), /etc/lilo/install is superfluous. Because the kernel Makefile still invokes LILO by calling /etc/lilo/install, /etc/lilo/install should be a symbolic link to /sbin/lilo or /etc/lilo/lilo until everybody has switched to the new directory structure. Directory hierarchy change -------------------------- A new Linux directory structure is in the process of being standardized. Most distributions will support the new structure. In order to install LILO with the new structure, you have to use the .new versions of QuickInst and Makefile. Otherwise, you have to use the .old versions. The locations of the following files change: Old location New location ------------------------ ----------------- /etc/lilo/config.defines /etc/lilo.defines /etc/lilo/config /etc/lilo.conf /etc/lilo/disktab /etc/disktab /etc/lilo/lilo /sbin/lilo /etc/lilo/boot.NNNN /boot/boot.NNNN /etc/lilo/part.NNNN /boot/part.NNNN /etc/lilo/map /boot/map /etc/lilo/*.b /boot/*.b /etc/lilo/install should be a symbolic link to /sbin/lilo for backwards compatibility. If you already have a (very old) /etc/disktab file from Shoelace, you have to delete or replace it. (Note: SLS 1.03 still installs that file, so you might have it even if you've never heard of Shoelace.) The current documentation still uses the old paths. Temporary unavailability of RAM disk size override -------------------------------------------------- The RAM disk size override option (RAMDISK) has no effect when using 0.99pl13 or older kernels, because no corresponding parameter line item exists. Support for it may be available in 0.99pl14 or later kernels. Incompatibilities between LILO >= 0.12 and earlier versions =========================================================== The first stage boot loader now displays diagnostic codes if loading the second stage loader fails. This may create irritating messages like L06ILO on systems, where the first read access on a disk after booting usually fails. These diagnostics can be disabled by setting the compile-time option NO1STDIAG. Incompatibilities between LILO >= 0.11 and earlier versions =========================================================== The configuration variable INSTALL is no longer required. If absent, a default of /etc/lilo/boot.b is used. This means that it is no longer possible to avoid installing a new boot sector when updating the map file. The old behaviour can be restored by setting the compile-time option NOINSTDEF. Incompatibilities between LILO >= 0.10 and earlier versions =========================================================== Version 0.10 of LILO is intentionally incompatible in many ways with earlier versions. However, in most cases, there is an easy migration path. LILO 0.10 may not work with versions of the following programs older than specified: Kernel 0.99pl8 Peter Orbaek's poeigl 1.13a Miquel van Smoorenburg's SysV-init 2.1 Mike Jagdis' bootsys version 3 (?) Documentation cleaning and splitting ------------------------------------ Because the documentation was slowly becoming a multiple-choice test, all references to old versions of kernels and other programs have been removed. All traces of removed features have vanished too. The single file "doc.tex" is now split in two parts: the user's guide "user.tex" and the technical overview "tech.tex". Reading the technical overview is not necessary in order to install LILO. Old-style configuration has been removed ---------------------------------------- Old-style configuration (e.g. /etc/lilo/lilo /vmlinux,/dev/hda1) is no longer supported. New-style configuration uses a configuration file in a far better readable format (/etc/lilo/config). There is also space for future extensions. If you're still using old-style configuration, you have to switch to new-style configuration before installing LILO 0.10. For all versions of LILO since 0.7, an automated migration facility is provided. See section "Migration" in the documentation of that version of LILO. In short, you have to run the following commands _before_ upgrading to LILO 0.10: # /etc/lilo/install -D >/etc/lilo/config # mv install.new /etc/lilo/install If you're using an older version of LILO than 0.7 or if you're not using /etc/lilo/install, you should either manually create a configuration file or use QuickInst to re-install from scratch. No support for dumps -------------------- Because LILO 0.10 doesn't understand old-style configuration, the dump option (-D) is no longer supported. Therefore, if you need to migrate from old-style configuration, you have to use the installed version of LILO to do that. No support for not-compound unstripped kernels ---------------------------------------------- Since LILO 0.9, compound unstripped kernels are supported. They are easier to handle and provide the same functionality as not-compound unstripped kernels. Note: all this has _nothing_ to do with compressed (zipped) kernels. They work fine with all versions of LILO. Suggesting using a link for /etc/lilo/install --------------------------------------------- Because not-compound unstripped kernels, which were needing some support code in /etc/lilo/install, have been removed, and because the -C option is no longer necessary to distinguish between old-style and new-style configuration, /etc/lilo/install is unnecessary in most cases. In order to preserve compatibility with older installations and with installations that use code for special actions in /etc/lilo/install, a symbolic link should be created from /etc/lilo/install to lilo. Removed configuration option NOAUTO ----------------------------------- The compile-time configuration option NOAUTO has been removed. This means that you have to upgrade to poeigl ?.??? (or later) if you're using simpleinit from an earlier version of poeigl. If the option NOAUTO is still present, it is ignored. Incompatibilities between LILO >= 0.9 and earlier versions ========================================================== Case-insensitive name matching ------------------------------ By default, LILO is now configured to ignore case when matching image names. This can cause problems if labels are being used that differ only in case. (Detected at map creation time.) Either change the label names or remove -DIGNORECASE from the configuration section of the Makefile. New keyword "auto" passed to init --------------------------------- If the system boots without manual intervention, the word "auto" is passed on the command line to the kernel, which in turn passes it to init. Some init programs don't recognize that word and issue an error message or fail to process other command-line options (e.g. some versions of poeigl init expects "single" to be the only word on the command line). The old behaviour can be obtained by setting the build- time configuration variable NOAUTO in the configuration section of the Makefile. -r implied if environment variable ROOT is set ---------------------------------------------- The map installer acts as if the option -r was on the command line if the environment variable ROOT is set. If you are using ROOT for other purposes than indicating the path of the actual root of the file system (i.e. it should be set to "/" during normal system operation), you have to pass the option -r / to the map installer. Typically, ROOT is not used for anything but LILO (or possibly programs that are aware of how LILO uses it), so this should be no problem. Incompatibilities between LILO >= 0.7 and earlier versions ========================================================== There are a number of incompatibilities between LILO 0.7 (or newer) and earlier versions that cause working /etc/lilo/install scripts to fail or that change earlier behaviour without warning. Root device presetting ---------------------- The way how the root device is preset differs from LILO >= 0.7 and earlier versions if using /etc/lilo/config. If the boot images are listed on the command line, LILO >= 0.7 emulates the old behaviour. Old behaviour: - if the root device was specified after the image descriptor (e.g. foo=/bar,/dev/hda1), that device was used. - if a root device was set in the boot image and no device was specified at the command line, the setting from the boot image was used. Later changes of the settings (e.g. with rdev aka setroot) had no effect. - if no root device was set in the boot image, LILO used the current root partition instead. Again, changing the setting later had no effect. New behaviour: - if the ROOT variable is set, that value is used and the setting in the boot image is ignored. - otherwise, the value found in the boot image at boot time is used. This means that changing the root device setting after map creation has the desired effect. Swap device settings -------------------- Presetting the swap device (e.g. /linux,/dev/root,/dev/swap) is no longer supported. Linus has already stopped providing that feature in recent kernels. Kernels that expect swap device settings in the boot sector may no longer work. I'm not sure when presettable swap devices were removed, but generally 0.96 and early 0.97 kernels may be considered incompatible. The memory location where the swap device preset value used to be stored has been occupied by the VGA mode value in 0.98pl6 and possibly also in SLS versions of 0.98pl5. Workaround: Create a /etc/lilo/config file and set the VGA variable to zero to disable using a swap device at boot time. BIOS code overrides ------------------- Appending BIOS codes to file names (e.g. /foo/bar:0x80) is no longer supported. /etc/lilo/disktab can be used for most purposes where BIOS code overrides might have been useful. Command-line arguments of the map installer ------------------------------------------- Older versions of the map installer accepted multiple ocurrences of the same flag. LILO 0.7 and later versions are only guaranteed to accept repetition of -v. However, variables set in /etc/lilo/config can be overridden on the command line in LILO 0.8.