Skip to contentSkip to conversation

LILO+LVM: Fatal: This version of LVM does not support boot LVs

linux-lvm Urs Thuermann 2 participants 2 messages Feb 15, 2002

lore
Share & tools
lore
#0 lore raw

I installed lilo-22.2 and moved my /boot from /dev/sda1 to my root FS which is on LVM /dev/vg0/root. When running lilo I get the message

Fatal: This version of LVM does not support boot LVs

I checked the source code and found in geometry.c

    #define DIFF 255
    
    	    lbmA.lv_dev = lbmB.lv_dev = device;
    	    lbmA.lv_block = 0;
    	    lbmB.lv_block = DIFF;
    
    	    lvm_bmap(&lbmA);
    	    lvm_bmap(&lbmB);
    	    if (lbmB.lv_block - lbmA.lv_block != DIFF)
    		die("This version of LVM does not support boot LVs");

which is from Andreas' LILO patch. lilo checks wether the logical blocks 0 and 255 are also 255 apart from each other on the physical device (assuming the device is the same).

This clearly works only on non-striped and contigous LVs (which is why it doesn't work for me since /dev/vg0/root is striped).
I suppose this is intended, but why? Would it be so difficult to let the lilo loader load blocks from different devices and blocks which are not in ascending order? The 5-byte structure describing the blocks to load contains the device: (from lilo/README):

     sector    [1..63] plus 2 high bits of Cylinder
     cylinder  [0..1023] low eight bits in this byte
     device    [0..3] for floppies, [0x80..0x8F] for hard disks
     head      [0..254] no, the max is 254, not 255
     count     [1...] number of sectors to transfer

So, why not support booting from striped and non-contiguos LVs?

urs

#1 lore raw
Quoted 4 lines · Urs Thuermann

I installed lilo-22.2 and moved my /boot from /dev/sda1 to my root FS which is on LVM /dev/vg0/root. When running lilo I get the message

Fatal: This version of LVM does not support boot LVs

I suppose that in your case this message is misleading. It should also say that it doesn't support booting from striped volumes.

Quoted 7 lines

which is from Andreas' LILO patch. lilo checks wether the logical blocks 0 and 255 are also 255 apart from each other on the physical device (assuming the device is the same).

This clearly works only on non-striped and contigous LVs (which is why it doesn't work for me since /dev/vg0/root is striped).
I suppose this is intended, but why?

Well, it was always my understanding that this is a BIOS limitation. I implemented this test because LILO also refuses to boot from RAID-0 (striped) devices.

Quoted 11 lines

the lilo loader load blocks from different devices and blocks which are not in ascending order? The 5-byte structure describing the blocks to load contains the device: (from lilo/README):

     sector    [1..63] plus 2 high bits of Cylinder
     cylinder  [0..1023] low eight bits in this byte
     device    [0..3] for floppies, [0x80..0x8F] for hard disks
     head      [0..254] no, the max is 254, not 255
     count     [1...] number of sectors to transfer

So, why not support booting from striped and non-contiguos LVs?

Well, if this is the case, and it's not a BIOS limitation, feel free to fix the LILO code and test it. If it works, then send a patch to the LILO maintainer.

I for one think it is a terrible idea to boot from a striped device. This doubles the chance that a disk failure will make your system unbootable, in addition to all the possible problems you can have with your LVM config.

What is your motivation for doing this in the first place? Let me guess "increased performance"...

Cheers, Andreas
--
Andreas Dilger
http://sourceforge.net/projects/ext2resize/
http://www-mddsp.enel.ucalgary.ca/People/adilger/