From: Kevin C. <kev...@us...> - 2003-08-13 20:50:59
|
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 indeed work. 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. -- Kevin Corry kev...@us... http://evms.sourceforge.net/ |