EXTLINUX
is a new Syslinux derivative, which boots from a Linux
ext2/ext3
filesystem.
It
works the same way as SYSLINUX (see doc/syslinux.txt), with a few
slight
modifications.
1.
The installer is run on a *mounted* filesystem.
Run the extlinux
installer on the directory in which you want
extlinux installed:
extlinux --install /boot
Specify --install (-i) to install for the
first time, or
--update (-U) to upgrade a previous
installation.
NOTE: this doesn't have to be the root
directory of a filesystem.
If /boot is a filesystem, you can do:
mkdir -p /boot/extlinux
extlinux --install /boot/extlinux
... to create a subdirectory and install
extlinux in it.
/boot/extlinux is the recommended location
for extlinux.
2.
The configuration file is called "extlinux.conf", and is expected
to be found in the same directory as
extlinux is installed in.
3.
Pathnames can be absolute or relative; if absolute (with a leading
slash), they are relative to the root of the
filesystem on which
extlinux is installed (/boot in the example
above), if relative,
they are relative to the extlinux directory.
extlinux supports subdirectories, but the
total path length is
limited to 511 characters.
4.
EXTLINUX now supports symbolic links.
However, extremely long
symbolic links might hit the pathname
limit. Also, please note
that absolute symbolic links are interpreted
from the root *of the
filesystem*, which might be different from
how the running system
would interpret it (e.g. in the case of a
separate /boot
partition.)
Therefore, use relative symbolic links if at all
possible.
5.
EXTLINUX now has "boot-once" support.
The boot-once information is
stored in an on-disk datastructure, part of
extlinux.sys, called
the "Auxillary Data Vector". The Auxilliary Data Vector is also
available to COMBOOT/COM32 modules that want
to store small amounts
of information.
To set the boot-once information, do:
extlinux --once 'command' /boot/extlinux
where 'command' is any command you could
enter at the Syslinux
command line. It will be executed on the next boot and then
erased.
To clear the boot-once information, do:
extlinux --clear-once /boot/extlinux
If EXTLINUX is used on a RAID-1, this is
recommended, since under
certain circumstances a RAID-1 rebuild can
"resurrect" the
boot-once information otherwise.
To clear the entire Auxillary Data Vector,
do:
extlinux --reset-adv /boot/extlinux
This
will erase all data stored in the ADV, including boot-once.
The --once, --clear-once, and --reset-adv
commands can be combined
with --install or --update, if desired. The ADV is preserved
across updates, unless --reset-adv is
specified.
Note
that EXTLINUX installs in the filesystem partition like a
well-behaved
bootloader :) Thus, it needs a master
boot record in the
partition
table; the mbr.bin shipped with Syslinux should work well.
To
install it just do:
cat mbr.bin > /dev/XXX
...
where /dev/XXX is the appropriate master device, e.g. /dev/hda,
and
make sure the correct partition in set active.
If
you have multiple disks in a software RAID configuration, the
preferred
way to boot is:
-
Create a separate RAID-1 partition for /boot.
Note that the Linux
RAID-1 driver can span as many disks as you
wish.
-
Install the MBR on *each disk*, and mark the RAID-1 partition
active.
-
Run "extlinux -i /boot" to install extlinux. This will install it on
all the drives in the RAID-1 set, which means
you can boot any
combination of drives in any order.
It
is not required to re-run the extlinux installer after installing
new
kernels. If you are using ext3
journalling, however, it might be
desirable
to do so, since running the extlinux installer will flush
the
log. Otherwise a dirty shutdown could
cause some of the new
kernel
image to still be in the log. This is a
general problem for
boot
loaders on journalling filesystems; it is not specific to
extlinux. The "sync" command does not flush
the log on the ext3
filesystem.
The
Syslinux Project boot loaders support chain loading other
operating
systems via a separate module, chain.c32 (located in
com32/modules/chain.c32). To use it, specify a LABEL in the
configuration
file with KERNEL chain.c32 and APPEND [hd|fd]
[]
For
example:
#
Windows CE/ME/NT, a very dense operating system.
#
Second partition (2) on the first hard disk (hd0);
#
Linux would *typically* call this /dev/hda2 or /dev/sda2.
LABEL
cement
KERNEL chain.c32
APPEND hd0 2
See
also doc/menu.txt.