311 lines
10 KiB
Plaintext
311 lines
10 KiB
Plaintext
LILO - Generic Boot Loader for Linux ("LInux LOader") by Werner Almesberger
|
|
=============================================================================
|
|
|
|
This is an ALPHA test release of a new boot loader. Be sure to have some
|
|
means to boot your system from a different media if you install LILO on your
|
|
hard disk.
|
|
|
|
|
|
NOTE: Most of the documentation has moved into the LaTeX document doc.tex.
|
|
This is only a minimal description for those who can't print or pre-
|
|
view LaTeX documents.
|
|
|
|
|
|
Features
|
|
--------
|
|
|
|
- does not depend on the file system. (Tested with Minix, EXT FS and MS-DOS
|
|
FS.)
|
|
- can be used to boot from floppies and from hard disks.
|
|
- can replace the master boot record.
|
|
- can boot non-Linux systems (MS-DOS, DR DOS, OS/2, ...) and unstripped
|
|
kernels.
|
|
- supports up to 16 different boot images that can be selected at boot
|
|
time. The root disk/partition can be set independently for each
|
|
image.
|
|
- boot sector, file map and boot images can be all on different disks or
|
|
partitions.
|
|
|
|
|
|
Restrictions and known problems
|
|
-------------------------------
|
|
|
|
- SCSI disks are not fully supported yet. (Still waiting for some kernel
|
|
changes.)
|
|
- booting other operating systems may not work everywhere. If everything
|
|
but booting a non-Linux OS from LILO works on your system, you should
|
|
boot LILO by BOOTACTV and select the alternate OS with the latter as a
|
|
temporary work-around.
|
|
- booting non-Linux systems from the second hard disk ("D:") is not yet
|
|
supported.
|
|
|
|
|
|
Files
|
|
-----
|
|
|
|
Files contained in lilo.5.tar.Z:
|
|
|
|
README This file.
|
|
Makefile Makefile for everything else.
|
|
*.c, *.h LILO map installer source.
|
|
*.S LILO boot loader source.
|
|
activate.c Simple boot partition setter.
|
|
dparam.s Disk parameter dumper source.
|
|
disktab Sample disk parameter table.
|
|
|
|
Files created after make (among others):
|
|
|
|
boot.b Combined boot sector.
|
|
chain.b Chain loader.
|
|
lilo LILO installer.
|
|
activate Simple boot partition setter.
|
|
dparam.com MS-DOS executable of the disk parameter dumper.
|
|
|
|
|
|
!! STOP READING HERE IF YOU CAN USE THE LaTeX VERSION OF THE DOCUMENTATION !!
|
|
|
|
The LaTeX part is generally more up to date and contains more useful
|
|
hints and examples. The following sections have been trimmed to make
|
|
it easier to maintain them, e.g. by removing as many version-dependen-
|
|
cies as possible.
|
|
|
|
|
|
Installation
|
|
------------
|
|
|
|
You have to run the 0.96c-pl1 kernel or any newer release.
|
|
|
|
This section describes one possible installation of LILO. Please read
|
|
"Booting basics" in the LaTeX document for the whole story.
|
|
|
|
Non-SCSI installation:
|
|
|
|
Step 1: Extract all files from lilo.6.tar.Z, run make to compile and assemble
|
|
all parts.
|
|
Step 2: Read the "LILO installer" section in this README and be sure to
|
|
understand what the command-line options do.
|
|
Step 3: Do make install to copy all LILO files to /etc/lilo
|
|
Step 4: Install lilo on a floppy disk:
|
|
lilo -b /dev/fd0 -i boot.b -v -v -v /your_kernel_image
|
|
Step 5: Reboot. If this doesn't work or if you don't want to install LILO on
|
|
your hard disk anyway, you can stop here.
|
|
Step 6: Get a working bootimage and a rootimage. If you have reason to be
|
|
paranoid about your boot sector, mount the rootimage and copy your
|
|
current boot sector to a file on it, e.g.
|
|
dd if=/dev/hda2 of=/fd/boot_sector bs=512 count=1
|
|
Step 7: Create a shell script /etc/lilo/install that installs LILO on your
|
|
hard disk, e.g.
|
|
# cat >/etc/lilo/install
|
|
#!/bin/sh
|
|
/etc/lilo/lilo <all_necessary_options> -i /etc/lilo/boot.b $* \
|
|
/kernel_image(s)
|
|
^D
|
|
# chmod 755 /etc/lilo/install
|
|
Step 8: Now, you can check what LILO would do if you
|
|
were about to install it on your hard disk:
|
|
/etc/lilo/install -v -v -v -t
|
|
Step 9: If necessary, install a boot partition switcher. Run /etc/lilo/install
|
|
to install LILO on your hard disk. If necessary, mark that partition
|
|
"active".
|
|
Step 10: Reboot.
|
|
|
|
SCSI installation:
|
|
|
|
Like non-SCSI installation, but you have to put the parameters of your
|
|
SCSI drive into the file /etc/lilo/disktab.
|
|
|
|
|
|
IMPORTANT: You have to repeat the installation procedure whenever any of the
|
|
boot images is replaced or moved (e.g. after the kernel is re-
|
|
compiled.) The -i option can be omitted if a LILO boot sector has
|
|
already been installed.
|
|
|
|
|
|
LILO Installer
|
|
--------------
|
|
|
|
The LILO installer accepts the following command-line options:
|
|
|
|
-b boot_device
|
|
|
|
Sets the name of the device that contains the boot sector. If -b is
|
|
omitted, the boot sector is read from (and possibly written to) the
|
|
device that is currently mounted as root. A BIOS device code can be
|
|
specified.
|
|
|
|
-c
|
|
|
|
Tries to merge read requests for adjacent sectors into a single read
|
|
request. This drastically reduces load time and keeps the map
|
|
smaller.
|
|
|
|
-d tsecs
|
|
|
|
Specifies the number of tenths of seconds LILO should wait before
|
|
booting the first image. This is useful on systems that immediately
|
|
boot from the hard disk after enabling the keyboard. LILO doesn't
|
|
wait if -d is omitted.
|
|
|
|
-i boot_sector
|
|
|
|
Install the specified file as the new boot sector. If -i is omitted,
|
|
the old boot sector is modified. A BIOS device code can be specified.
|
|
|
|
-l
|
|
|
|
Generate linear sector addresses instead of sector/head/cylinder
|
|
addresses. Linear addresses are translated at run time and do not
|
|
depend on disk geometry. This is experimental and is not (yet)
|
|
intended for common use.
|
|
|
|
-m map_file
|
|
|
|
Specifies the location of the map file. If -m is omitted, a file
|
|
/etc/lilo/map is used. A BIOS device code can be specified.
|
|
|
|
-r root_dir
|
|
|
|
Change the root directory to root_dir before doing anything else.
|
|
This is typically used when running off a floppy, with the normal
|
|
root mounted at some directory.
|
|
|
|
-s backup_file
|
|
|
|
Copy the old boot sector to backup_file instead of
|
|
/etc/lilo/boot.<number>
|
|
|
|
-S backup_file
|
|
|
|
Like -s, but overwrite an old backup copy if it already exists.
|
|
|
|
-t
|
|
Test only. This performs the entire installation procedure except
|
|
replacing the map file and writing the modified boot sector. This
|
|
can be used in conjunction with the -v option to verify that LILO
|
|
will use sane values.
|
|
|
|
-v
|
|
|
|
Turns on lots of progress reporting. Repeating -v will turn on more
|
|
reporting. (-v -v -v -v -v is the highest verbosity level and
|
|
displays all sector mappings before and after compaction.)
|
|
|
|
|
|
If no image files are specified, the currently mapped files are listed. Only
|
|
the options -m and -v can be used in this mode.
|
|
|
|
If at least one file name is specified, a new map is created for those files
|
|
and they are registered in the boot sector. If the root device has been set
|
|
in the images, it is copied into the descriptors in the boot sector. If no
|
|
root device has been set, the current root device is used. The root device
|
|
can be overridden by appending them to the image specification, e.g.
|
|
|
|
lilo foo,/dev/hda1
|
|
^ ^
|
|
image root
|
|
|
|
Either numbers or device names can be used.
|
|
|
|
It is perfectly valid to use different root settings for the same image,
|
|
because LILO stores them in the image descriptors and not in the images
|
|
themselves. Example:
|
|
|
|
lin-hd=/linux,/dev/hda2 \
|
|
lin-fd=/linux,/dev/fd0
|
|
|
|
The image files can reside on any media that is accessible at boot time.
|
|
There's no need to put them on the root device, although this certainly
|
|
doesn't hurt.
|
|
|
|
If LILO doesn't guess the correct BIOS device code, it can be specified by
|
|
appending a colon and the code to the file name, e.g. /linux:0x80
|
|
|
|
LILO uses the first file name (without its path) of each image specification
|
|
to identify that image. A different name can be specified by prefixing the
|
|
specification with label= e.g.
|
|
|
|
msdos=/etc/lilo/chain.b+/dev/sda1@/dev/sda
|
|
|
|
LILO can boot the following types of images:
|
|
|
|
- "classic" boot images from a file
|
|
- "classic" boot images from a device
|
|
- unstripped kernel executables
|
|
- the boot sector of some other operating system
|
|
|
|
The image type is determined by the syntax that is used for the image
|
|
specification.
|
|
|
|
|
|
Booting "classic" boot images from a file
|
|
-----------------------------------------
|
|
|
|
If defined, the root device definition is taken from the boot image.
|
|
The image is specified as follows:
|
|
|
|
file_name [ :BIOS_code ]
|
|
|
|
I.e. /linux
|
|
|
|
|
|
Booting "classic" boot images from a device
|
|
-------------------------------------------
|
|
|
|
The root device setting in the image is ignored. The range of sectors
|
|
that should be mapped, has to be specified. Either a range (start-end)
|
|
or a start and a distance (start+number) have to be specified. start
|
|
and end ae zero-based. If only the start if specified, only that sector
|
|
is mapped.
|
|
|
|
device_name [ :BIOS_code] #start [ -end | +number ]
|
|
|
|
I.e. /dev/fd0#1+512
|
|
|
|
|
|
Booting unstripped kernel executables
|
|
-------------------------------------
|
|
|
|
Unstripped kernel executables contain no root device information.
|
|
The setup code of the kernel has also to be added to the kernel. First,
|
|
it has to be copied to a suitable place and its header has to be removed,
|
|
e.g.
|
|
|
|
(dd of=/dev/null bs=32 count=1; dd) </usr/src/linux/boot/setup \
|
|
>/etc/lilo/setup.b
|
|
|
|
The image specification looks like this:
|
|
|
|
setup_name [ :BIOS_code ] +kernel_name [ :BIOS_code ]
|
|
|
|
I.e. /etc/lilo/setup.b+/usr/src/linux/tools/system
|
|
|
|
|
|
Booting a foreign operating system
|
|
----------------------------------
|
|
|
|
LILO can even boot other operating systems, e.g. MS-DOS. This feature
|
|
is new and may not yet work totally reliably. (Reported to work with
|
|
PC-DOS 4.0, MS-DOS 5.0 and DR-DOS 6.0.) To boot an other operating
|
|
system, the name of a loader program, the device that contains the boot
|
|
sector and the device that contains the master boot record have to be
|
|
specified:
|
|
|
|
loader+boot_dev [ :BIOS_code ] @ [ part_dev ]
|
|
|
|
I.e. /etc/lilo/chain.b+/dev/hda2@/dev/hda
|
|
|
|
The boot sector is merged with the partition table and stored in the map
|
|
file.
|
|
|
|
Currently, only the loader chain.b exists.
|
|
|
|
|
|
LILO may create some device special files in your /tmp directory that are
|
|
not removed if an error occurs. They are named /tmp/dev.<number>.
|
|
|
|
|
|
Bugs and such
|
|
-------------
|
|
|
|
Please send all bug reports to almesber@nessie.cs.id.ethz.ch
|