On Wednesday 13 August 2003 14:36, Kevin Corry wrote:
> On Tuesday 12 August 2003 10:22, Christophe Saout wrote:
> > Hi!
> > I just wanted to tell you that I've rediffed the lilo patches on my
> > webspace (http://www.saout.de/misc/). The modifications we discussed
> > yesterday are in now.
> Here is another patch for your webpage against lilo-22.5.7. Results of
> my testing to follow shortly. :)
Ok, I have successfully run LILO with EVMS volumes using Christophe's patch,
under a limited set of circumstances. And the stacking of DM devices does
The limited set of circumstances are: partitions as compatibility volumes or
partitions as EVMS volumes. Currently, LVM volumes do not work. I have not
yet been able to try any RAID configurations.
The problem has to do with naming in Device-Mapper, as well as in the /dev
tree. I'll explain by describing the process that lilo goes through. When you
specify "image=/boot/vmlinuz" in your /etc/lilo.conf, lilo asks the
filesystem (on which /boot resides) for a list of filesystem blocks that make
up the file "vmlinuz". For each of these blocks, it must translate them into
sectors on a physical disk. LILO determines which block-device the filesystem
is on, and gets back a major:minor for an answer. It then scans through /dev
for a block-device-file with this major:minor. In the case where this device
is owned by DM, it asks DM for the mapping for the device with the name of
the file it found. It then determines which lower-level device the given file
block maps to. It repeats this process until it finds a device that's a disk,
at which point it knows the full offset of that file block.
Now, in EVMS, the volume /dev/evms/hda1 has a DM device named "hda1", and the
volume /dev/evms/Boot has a DM device named "Boot". Thus, when LILO finds
/dev/evms/hda1 and asks DM for the mappings for device "hda1", everything is
cool. However, an LVM compatibility-volume in EVMS has a name like
/dev/evms/lvm/group1/vol1, and has a corresponding DM device named
"lvm|group1|vol1" (DM doesn't like slashes in its names, so EVMS translates
slashes to pipes before sending names to DM). Then, when LILO finds the
device-file /dev/evms/lvm/group1/vol1, it thinks the device is just named
"vol1". It asks DM for the mapping for "vol1", and gets an error back.
So, in order to fix this, we'd have to change LILO to know that *some* DM
devices are named more than just the basename of the device-file that it
finds in /dev. Yuck. And in addition, it would have to know that EVMS further
translates these names to get rid of slashes. Yuck. This would all be very
EVMS-specific, and thus very ugly to add to LILO.
So, the first thing you'll ask is, "just convert the LVM compatibility volumes
to an EVMS volume, and call it /dev/evms/Boot". The problem here is that LILO
must resolve every level of the device. Such a volume would have a device for
"Boot" as well as a device for "lvm|group1|vol1" (and possibly other devices
below the LVM object). So LILO would be able to resolve the top level, but
would hit an error when it got to the "lvm|group1|vol1" device.
So, for the time being, we now have a way to use LILO with EVMS volumes,
provided those volumes are regular partitions, which have simple names. This
may be a tad restrictive, but it's just as restrictive as if you were using
Grub (which only has native support for disk partitions). It's also a step
better than we had before, which was nothing at all. :)
In order to use Christophe's patch, you'll need libdevmapper installed, along
with the latest Device-Mapper patches. There should be a new EVMS release
soon (hopefully this week!) that supports the latest Device-Mapper, and you
can always grab the latest EVMS CVS code if you'd like to play with it before
the next official release. I'll be updating the INSTALL instructions to
mention how to get LILO working with EVMS volumes.