# trouble booting evms root filesystem

## Moriah

I have been running the 2.4.26-gentoo-r9 kernel from the gentoo-sources together with LVM and booting from an LVM managed root filesystem for some time now.  The reason for running LVM is to use the snapshot capability to freeze the filesystem during nightly backups.

I am now testing with a system running the 2.6.8-gentoo-r3 kernel because I want the improved disk speed for a RAID that runs on that system.  The performance of the RAID is *SIGNIFICANTLY* better (cf http://elilabs.com/~rj/raid_timing.html), but LVM-1 does not work with the 2.6 kernels, and LVM-2 is misbehaving badly, so I am trying EVMS.  EVMS is supposed to support an even better snapshot facility than LVM does, but I am having terrible frustrations trying to get EVMS to do what I want.  

It turns out that EVMS under the 2.6.8 kernel does not support both EVMS-managed and non-EVMS-managed volumes on the same physical disk drive.  I followed the instructions for booting from a root filesystem managed by EVMS, but I have no way to create a root filesystem that is managed by EVMS because I have to boot from that same disk drive to run evmsgui to set that EVMS-managed root filesystem up, and I must boot from a partition that is not managed by EVMS.  This is definately a "Catch-22" situation!

There was mention of a patch to support both EVMS and non-EVMS volumes on the same physical disk drive, but it also said this was not necessary if you booted with an initrd that supported EVMS.

How does one go about setting up EVMS and the 2.6.8-gentoo-r3 kernel to boot from an EVMS-managed volume?

Or, to cut to the chase, how do I get snapshot functionality on the root filesystem using the 2.6.8-gentoo-r3 kernel?

----------

## den_RDC

I have setup i few servers with root on evms, you just have to make sure that 

- all your drivers are compiled in the kernel (unless you fancy tweaking the evms initrd)

- you supply your root as root=/dev/evms/volume_name

- you add the evms initrd (it can be downloaded from the evms site, don't forget to gunzip it) and you put in your grub/lilo config, along with the ramdisk=8192 parameter 

--- a small example for grub

title=Gentoo Linux 2.6.7-Hardened-R8

        root(hd0,0)

        kernel /bzIm-2.6.7-HARD8 root=/dev/evms/root ramdisk=8192

        initrd /evms-2.4.0-initrd

----------

## Moriah

 *Quote:*   

> title=Gentoo Linux 2.6.7-Hardened-R8
> 
> root(hd0,0)
> 
> kernel /bzIm-2.6.7-HARD8 root=/dev/evms/root ramdisk=8192
> ...

 

I notice that you are using the 2.6.7 kernel.  I was trying to use the 2.6.8 kernel, and apparently there are problems with that.  I got so frustrated with this yesterday that I just dropped back to the 2.4.26-r9 kernel from gentoo-sources and booting from LVM instead.  Its too bad, because the 2.6.8 kernel really performs much better on writes to a RAID-1, which is the bottleneck in the application I am building this system to support.    :Crying or Very sad: 

So just exactly where did you get your kernel sources from?  Maybe I will try it again with the 2.6.7 kernel.  Of course that would mean I would have to re-run all the disk performance benchmarks again.    :Mad: 

----------

## den_RDC

my sources are emerge hardened-dev-sources  :Smile: 

I do have 2.6.8-gentoo-r3 on my desktop with evms 2.4.0 and have been experiencing some problems too - i talked a bit to the devs on #evms and they are going to try to pinpoint my problem (my devices don't activate with evms_activate anymore, only manual intervention ets them activated). 

2.3.4 worked fine here, so maybe you should try that version of evms (plus the 2.3.4 initrd)

----------

## Moriah

That sounds like what I was experiencing.  If evms volumes do not activate during the initrd phase of booting, then they are not there to boot from during the main phase of booting, hence the boot fails.

I will try emerge hardened-dev-sources and see how it goes, as I really would prefer the performance of the 2.6 kernel.  Since this box is behind 2 firewalls, I am not too concerned about it having all the latest security patches.

----------

## xenfasa

Hello,

I also just started a EVMS2 Raid1 Gentoo installation.

I'm trying using 2.6.8-r3 and EVMS 2.4

I setup my drives/volumns/partitions/raid using evmsn already with the LiveCD but I have not been able to compile a kernel and initrd that can boot it.

Now I'm trying to understand the initrd and if I can use the one on evms sourcforge without any modifications, what version or if I have to tweak something else?   Does evms version need to match in the kernel, modules, initrd and evms tools for it it all to work?  What versions are included in the evms emerge? and how do I know i have all the correct versions of these parts and pieces.   :Crying or Very sad: 

Of course my kernel compile produces it's on initrd.  Does this need to be merged with the evms initrd? or can I thro out mine completely?  Is the grub.conf file the only one needing modifying in the initrd?

Sorry for all the questions, but I'm not sure I'm asking the right questions yet...   :Sad: 

Thanks,

Ben

----------

## Moriah

After fiddling around for 2 weeks trying to get evms to work with 2.6.8, I switched to 2.6.7 (herdened-dev-sources) and the initrd from www.evms.org and it worked beautifuly on the first try.  As far as evms is concerned, 2.6.8 is badly broken. Oh yes, don't forget to apply the bd-claim patch!

----------

## CRC

 *Moriah wrote:*   

> After fiddling around for 2 weeks trying to get evms to work with 2.6.8, I switched to 2.6.7 (herdened-dev-sources) and the initrd from www.evms.org and it worked beautifuly on the first try.  As far as evms is concerned, 2.6.8 is badly broken. Oh yes, don't forget to apply the bd-claim patch!

 

Well, I tried 2.6.8, 2.6.9, and 2.6.10.

The problem is that the kernel boots and recognizes the initrd just fine, and VFS claims it has found an ext2 file system on it.  Great so far.  However, it never runs the linuxrc script in the initrd, instead I immediately get an error stating that evms/root isn't a valid block device and it dies.   It shouldn't look at the root= line until the script finishes, but it doesn't even run.  I have /dev nodes in the initrd for all the evms devices so I wouldn't have to mess with devfs or anything, but it didn't seem to help. 

Any ideas?

----------

## Moriah

Maybe you messed up your /boot/grub/grub.conf file.  Here is what mine looks like:

```
default=0

timeout=10

splashimage=(hd0,0)/grub/splash.xpm.gz

title Gentoo root_EVMS_bd-claim hardened-dev-sources 2.6.7-hardened-r9

        root (hd0,0)

        kernel /kernel-2.6.7-hardened-r9_EVMS_bd-claim root=/dev/evms/root init=/linuxrc ramdisk_size=16384

        initrd /evms-2.4.0-initrd.gz

```

How did you set your up?

----------

## CRC

mine is very similar (actually tried what you posted almost word for word to make sure).  I don't think it can find the initrd since it can't find the root filesystem, even though it says it has mounted root, the very next line says it can't open root device and it kernel panics.   It doesn't make sense.

-- Evan

----------

## Moriah

What does your initrd ramdisk image look like?  Here is mine:

```
ezekiel mnt # ls -la

total 36

drwxr-xr-x  11 root root  1024 Oct 23 13:15 .

drwxr-xr-x  30 root root   720 Oct 26 00:03 ..

drwxr-xr-x   2 root root  1024 Oct 23 13:15 bin

drwxr-xr-x   2 root root  4096 Oct 23 13:15 dev

drwxr-xr-x   3 root root  1024 Oct 23 13:15 etc

drwxr-xr-x   4 root root  1024 Oct 23 13:15 lib

-rwxr-xr-x   1 root root 11068 Oct 23 13:15 linuxrc

drwx------   2 root root 12288 Oct 23 13:15 lost+found

drwxr-xr-x   2 root root  1024 Oct 23 13:15 proc

lrwxrwxrwx   1 root root     3 Oct 23 13:15 sbin -> bin

drwxr-xr-x   2 root root  1024 Oct 23 13:15 sys

drwxr-xr-x   2 root root  1024 Oct 23 13:15 temp

drwxr-xr-x   2 root root  1024 Oct 23 13:15 usr

ezekiel mnt # 
```

And here is my linuxrc from it:

```
#!/bin/sh

# Daniel Robbins <drobbins@gentoo.org>

# Copyright 2003 Gentoo Technologies, Inc.

# Distributed under the GPL

. /etc/initrd.defaults

. /etc/initrd.scripts

USE_DEVFS_NORMAL=1

USE_UDEV_NORMAL=2

if [ "$$" != '1' ]

then

   echo '/linuxrc has to be run as the init process as the one'

   echo 'with a PID of 1. Try adding init="/linuxrc" to the'

   echo 'kernel command line or running "exec /linuxrc".'

   exit 1

fi

mount -o remount,rw /

mount -t proc proc /proc

[ -n "$QUIET" ] && echo '0' > /proc/sys/kernel/printk

CMDLINE=`cat /proc/cmdline`

# Scan CMDLINE for any specified real_root= or cdroot arguments

for x in ${CMDLINE}

do

   case "${x}" in

      real_root\=*)

         REAL_ROOT=`parse_opt "${x}"`

      ;;

      cdroot)

         CDROOT=1

         REAL_ROOT=''

      ;;

      cdroot\=*)

         CDROOT=1

         CDROOT_DEV=`parse_opt "${x}"`

         REAL_ROOT=''

      ;;

      devfs)

         USE_DEVFS_NORMAL=1

         USE_UDEV_NORMAL=0

      ;;

      nodevfs)

         USE_DEVFS_NORMAL=0

      ;;

      udev)

         USE_UDEV_NORMAL=1

         USE_DEVFS_NORMAL=0

      ;;

      noudev)

         USE_UDEV_NORMAL=0

      ;;

      loop\=*)

         LOOP=`parse_opt "${x}"`

      ;;

      looptype\=*)

         LOOPTYPE=`parse_opt "${x}"`

      ;;

      real_init\=*)

         REAL_INIT=`parse_opt "${x}"`

      ;;

      scandelay)

         SDELAY=10

      ;;

      *)

      ;;

   esac

done

[ -e /proc/scsi/scsi ] && echo 'scsi add-single-device 0 0 0 0' > /proc/scsi/scsi

# Scan CMDLINE for any "doscsi" or "noscsi"-type arguments

for x in $HWOPTS

do

   for y in $CMDLINE

   do

      if [ "${y}" = "do${x}" ]

      then

         MY_HWOPTS="${MY_HWOPTS} $x"

      elif [ "${y}" = "no${x}" ]

      then

         MY_HWOPTS="`echo ${MY_HWOPTS} | sed -e \"s/${x}//g\" -`"

      fi

   done

done

if [ -d '/lib/modules' ]

then

   echo -e "${GOOD}>>${NORMAL}${BOLD} Loading modules...${NORMAL}"

   # Load appropriate kernel modules

   for modules in $MY_HWOPTS

   do

      modules_scan $modules

      eval DO_`echo $modules | sed 's/-//'`=1

   done

else

   echo -e "${GREEN}>>${NORMAL}${BOLD} Skipping module load; no modules in the initrd!${NORMAL}"

fi

chooseKeymap() {

   echo -e "${GOOD}>>${NORMAL}${BOLD} Loading keymaps...${NORMAL}"

   cat /lib/keymaps/keymapList

   read -t 10 -p '<< Load keymap (Enter for default): ' keymap

   if [ -e /lib/keymaps/${keymap}.map ]

   then

      echo -e "${GOOD}>>${NORMAL}${BOLD} Loading the ''${keymap}'' keymap...${NORMAL}"

      loadkmap < /lib/keymaps/${keymap}.map

   elif [ "$keymap" = '' ]

   then

      echo -e "${GOOD}>>${NORMAL}${BOLD} Keeping default keymap...${NORMAL}"

   else

      echo -e "${BAD}!! ${NORMAL}${BOLD}Sorry, but keymap ''${keymap}'' is invalid!${NORMAL}"

      chooseKeymap

   fi

}

echo -e "${GOOD}>>${NORMAL}${BOLD} Mounting filesystems${NORMAL}"

# Check udev is on...

# [ "${KMAJOR}" -ge 2 ] && USE_UDEV_SUPPORT=1

# [ "${KMAJOR}" -eq 2 -a "${KMINOR}" -ge '6' -a ! "${USE_UDEV_SUPPORT}" -eq '0' ] && USE_UDEV_SUPPORT=1

[ "${USE_UDEV_NORMAL}" -eq '1' -a ! -x /sbin/udev ] && USE_UDEV_NORMAL=0

# If using 2.4 and udev; back off...

[ "${KMAJOR}" -eq 2 -a "${KMINOR}" -lt '6' -a "${USE_UDEV_NORMAL}" -eq 1 ] &&

   USE_UDEV_NORMAL=0

# Disable devfs if we want udev...

[ -e /dev/.devfsd -a "${USE_UDEV_NORMAL}" -eq 1 ] && echo '>> Enabling devfsd in favour of udev; use "nodevfs" if this is not intended...' && USE_UDEV_NORMAL=0

mkdir /newroot

if [ "${CDROOT}" -eq '1' ]

then

   mount -t tmpfs tmpfs /newroot

   mkdir /newroot/dev /newroot/mnt /newroot/mnt/cdrom /newroot/mnt/livecd /newroot/tmp /newroot/tmp/.initrd /newroot/mnt/gentoo /newroot/sys

   if [ "${USE_UDEV_NORMAL}" -eq '1' ]

   then

      # Udev is semi-broken on non /sys sysfs mount points.

      mount -t sysfs none /sys

      [ "$?" -eq '0' ] || USE_UDEV_NORMAL=0

   fi

   if [ "${USE_UDEV_NORMAL}" -eq '1' ]

   then

      cd /sys

      kill_devfsd

      runUdev

      mv /dev/* /newroot/dev

   else

      if [ ! -e /newroot/dev/.devfsd ]

      then

         mount -t devfs devfs /newroot/dev

         devfsd /newroot/dev -np

         if [ -n "${SDELAY}" ]; then

            sleep ${SDELAY}

         else

            sleep 1

         fi

      fi

   fi

   if [ "${CDROOT_DEV}" = '' ]

   then

      findcdmount /newroot/dev/cdroms/*

      # Not in /dev/cdroms: try /dev/ide/cd

      [ "${REAL_ROOT}" = '' ] && findcdmount /newroot/dev/ide/cd/*

      [ "${REAL_ROOT}" = '' ] && findcdmount /newroot/dev/sr0

   else

      # Device specified on command line

      findcdmount /newroot/${CDROOT_DEV}

   fi

   if [ "${REAL_ROOT}" = '' ]

   then

      # Undo stuff

      umount /newroot/dev 2>/dev/null

      umount /newroot/sys 2>/dev/null

      umount /sys 2>/dev/null

      umount /newroot

      rm -rf /newroot/*

      echo 'Could not find CD to boot, something else needed!'

      CDROOT=0

   fi

fi

if [ "${DO_keymap}" ]

then

   if [ ! -e /dev/vc/0 ]

   then

      DEVBIND=1

      mount -o bind /newroot/dev /dev

   fi

   chooseKeymap

   [ "${DEVBIND}" -eq '1' ] && umount /dev

fi

# FIX: indent me in one $CDROOT -eq '0'

# Try to mount sysfs, and if it fails, do not use udev

if [ "${USE_UDEV_NORMAL}" -eq '1' -a "${CDROOT}" -eq '0' ]

then

   mount -t sysfs none /sys

   [ "$?" -eq '0' ] || USE_UDEV_NORMAL=0

fi

# Don't merge these two blocks; ^^ USE_UDEV_NORMAL=0...

if [ "${USE_UDEV_NORMAL}" -eq '1' -a "${CDROOT}" -eq '0' ]

then

   USE_DEVFS_NORMAL=0

   cd /sys

   runUdev

elif [ "${CDROOT}" -eq '0' -a "${USE_DEVFS_NORMAL}" -eq '1' ]

then

   [ ! -e /dev/.devfsd ] && mount -t devfs devfs /dev

   devfsd /dev -np

fi

if [ "${DO_lvm2}" ]

then

   if [ -e '/sbin/vgscan' -a -e '/sbin/vgchange' ]

   then

      echo -e "${GOOD}>>${NORMAL}${BOLD} Scanning for Volume Groups...${NORMAL}"

      /sbin/vgscan

      echo -e "${GOOD}>>${NORMAL}${BOLD} Activating Volume Groups...${NORMAL}"

      /sbin/vgchange -ay

   fi

fi

echo -e "${GOOD}>>${NORMAL}${BOLD} Determining root device...${NORMAL}"

while true

do

   while [ "${got_good_root}" != '1' ]

   do

      if [ "${REAL_ROOT}" = 'shell' ]

      then

         /bin/ash

         REAL_ROOT=''

         got_good_root=0

         continue

      elif [ "${REAL_ROOT}" = '' ]

      then

         # No REAL_ROOT determined/specified. Prompt user for root block device.

         echo -e "${BAD}>>${NORMAL} The root block device is unspecified or not detected."

         echo '   Please specify a device to boot, or "shell" for a shell...'

         echo -n 'boot() :: '

         read REAL_ROOT

         got_good_root=0

      elif [ -b "${REAL_ROOT}" ]

      then

         got_good_root=1

      else

         echo -e "${BAD}>>${NORMAL} Block device ${REAL_ROOT} is not a valid root device..."

         REAL_ROOT=""

         got_good_root=0

      fi

   done

   if [ "${CDROOT}" -eq '1' -a "${got_good_root}" = '1' ]

   then

      break

   else

      echo -e "${GOOD}>>${NORMAL}${BOLD} Mounting root...${NORMAL}"

      mount -o rw ${REAL_ROOT} /newroot

      if [ "$?" = '0' ]

      then

         break

      else

         echo -e "${BAD}>> ${NORMAL}Could not mount specified ROOT, try again"

         got_good_root=0

         REAL_ROOT=''

      fi

   fi

done

[ -n "$QUIET" ] && echo '6' > /proc/sys/kernel/printk

check_loop() {

   if [ "${LOOP}" = '' -o ! -e "mnt/cdrom/${LOOP}" ]

   then

      echo "Invalid loop location: ${LOOP}"

      echo 'Please export LOOP with a valid location, or reboot and pass a proper loop=...'

      echo 'kernel command line!'

      /bin/ash

   fi

}

if [ "${CDROOT}" = '1' ]

then

   echo -e "${GOOD}>>${NORMAL}${BOLD} Filling tmpfs...${NORMAL}"

   cd /newroot

   # Failsafe the loop type wasn't set

   if [ "${LOOPTYPE}" = '' ]

   then

      echo -e "${WARN}** ${NORMAL}${BOLD}Warning: loop type unspecified!${NORMAL}"

      if [ "${LOOP}" = '/livecd.loop' ]

      then

         LOOPTYPE='normal'

      elif [ "${LOOP}" = '/zisofs' ]

      then

         LOOPTYPE='zisofs'

      elif [ "${LOOP}" = '/livecd.squashfs' ]

      then

         LOOPTYPE='squashfs'

      elif [ "${LOOP}" = '/livecd.gcloop' ]

      then

         LOOPTYPE='gcloop'

      else

         LOOPTYPE='noloop'

      fi

   fi

   if [ "${LOOPTYPE}" != 'noloop' ]

   then

       check_loop

       if [ "${DO_cache}" ]

       then

      echo -e "${GOOD}>>${NORMAL}${BOLD} Copying loop file for caching...${NORMAL}"

      cp -a /newroot/mnt/cdrom/${LOOP} /newroot/mnt/${LOOP}

      if [ $? -ne 0 ]

      then

         echo -e "${BAD}!!${NORMAL}${BOLD} Failed to cache the loop file! Lack of space?"

         rm -rf /newroot/mnt/livecd.* 2>/dev/null

         rm -rf /newroot/mnt/zisofs 2>/dev/null

      else

         LOOPEXT='../'

      fi

       fi

   fi

   if [ "${LOOPTYPE}" = 'normal' ]

   then

      # bind-mount /dev/ so that loop devices can be found

      mount -o bind /newroot/dev /dev

      echo -e "${GOOD}>>${NORMAL}${BOLD} Mounting loop filesystem...${NORMAL}"

      mount -t ext2 -o loop,ro /newroot/mnt/cdrom/${LOOPEXT}${LOOP} /newroot/mnt/livecd

      if [ "$?" != '0' ]

      then

         echo 'Failed to mount filesystem; failing back to the shell...'

         /bin/ash

      fi

      FS_LOCATION='mnt/livecd'

      umount /dev

   elif [ "${LOOPTYPE}" = 'squashfs' ]

   then

      mount -o bind /newroot/dev /dev

      echo -e "${GOOD}>>${NORMAL}${BOLD} Mounting squashfs filesystem...${NORMAL}"

      mount -t squashfs -o loop,ro /newroot/mnt/cdrom/${LOOPEXT}${LOOP} /newroot/mnt/livecd

      if [ "$?" != '0' ]

      then

         echo 'Failed to mount filesystem; failing back to the shell...'

         /bin/ash

      fi

      FS_LOCATION='mnt/livecd'

      umount /dev

   elif [ "${LOOPTYPE}" = 'gcloop' ]

   then

      echo -e "${GOOD}>>${NORMAL}${BOLD} Mounting gcloop filesystem...${NORMAL}"

      mount -o bind /newroot/dev /dev

      echo ' ' | losetup -E 19 -e ucl-0 -p0 /newroot/dev/loop0 /newroot/mnt/cdrom/${LOOPEXT}${LOOP}

      if [ "$?" != '0' ]

      then

         echo "FAILED TO losetup THE LOOP DEVICE"

         /bin/ash

      fi

      mount -t ext2 -o ro /newroot/dev/loop0 /newroot/mnt/livecd

      FS_LOCATION='mnt/livecd'

      umount /dev

   elif [ "${LOOPTYPE}" = 'zisofs' ]

   then

      FS_LOCATION="mnt/cdrom/${LOOPEXT}${LOOP}"

   elif [ "${LOOPTYPE}" = 'noloop' ]

   then

      FS_LOCATION='mnt/cdrom'

   fi

   echo -e "${GOOD}>>${NORMAL}${BOLD} Filling filesystem...${NORMAL}"

   for x in ${ROOT_LINKS}

   do

      ln -s "${FS_LOCATION}/${x}" "${x}"

   done

   mkdir initrd proc tmp sys

   chmod 1777 tmp

   (cd /newroot/${FS_LOCATION}; cp -a ${ROOT_TREES} /newroot)

else

   mkdir -p /newroot/tmp/.initrd

fi

[ ! -e /newroot/dev/console ] && mknod /newroot/dev/console c 5 1

echo -ne "${GOOD}>>${NORMAL}${BOLD} Booting"

cd /newroot

mkdir /newroot/proc /newroot/sys 2>/dev/null

pivot_root . tmp/.initrd

echo -n '.'

if [ "${USE_DEVFS_NORMAL}" -eq '1' -a "${CDROOT}" -eq '0' ]

then

   umount /tmp/.initrd/proc || echo '*: Failed to unmount the initrd /proc!'

   mount -n --move /tmp/.initrd/dev dev || echo '*: Failed to move over the /dev tree!'

   rm /tmp/.initrd/dev -rf || '*: Failed to remove the initrd /dev!'

elif [ "${USE_UDEV_NORMAL}" -eq '1' ]

then

   umount /tmp/.initrd/proc || echo '*: Failed to unmount the initrd /proc!'

   umount /tmp/.initrd/sys || echo '*: Failed to unmount the initrd /sys!'

elif [ "${CDROOT}" -eq '1' ]

then

   umount /tmp/.initrd/proc || echo "*: Failed to unmount the initrd /proc!"

   umount /dev 2>/dev/null

   mount -n --move /tmp/.initrd/dev dev 2>/dev/null

   rm /tmp/.initrd/dev -rf || '*: Failed to remove the initrd /dev!'

   umount /sys 2>/dev/null

   umount /tmp/.initrd/sys 2>/dev/null

fi

echo -n '.'

# /usr/src/linux/Documentation/initrd.txt 

# here's the line it says we should do:

#       exec chroot . /sbin/init </dev/console >/dev/console 2>&1

exec <dev/console >dev/console 2>&1

echo '.'

exec chroot . /bin/sh <<- EOF

    umount /tmp/.initrd || echo "*: Failed to unmount the initrd!"

   /sbin/blockdev --flushbufs /dev/ram0 >/dev/null 2>&1

    exec /sbin/init ${REAL_INIT}

EOF

echo 'A fatal error has probably occured since /sbin/init did not'

echo 'boot correctly. Trying to open a shell...'

echo

exec /bin/bash

exec /bin/sh

exec /bin/ash

exec sh
```

Hope this helps!   :Very Happy: 

BTW I am using the kernel from 2.6.7-hardened-r9

----------

## CRC

I'm using the initrd from the evms sourceforge site, which is supposed to work. I'm also using all kernels newer than 2.6.7 (2.6.8 and up).

Where did you get the Gentoo-ified linuxrc?

I don't think changing to that will help though, as I added a simple echo to the top of the linuxrc I'm using, so i would know unconditionally as soon as it was run, and I never see that text.

Since the root= line seemed to confuse things, I made root=/dev/ram0 hoping it would use the ramdisk as the root device and then added real_root=/dev/evms/root and changed the script to look for real_root instead of root on the command line.  Now it doesn't complain about the root device being wrong, but it still never reads the script - it just sits there after freeing kernel mem (which it never got to before).

I have no idea why its not executing the script  :Sad: 

----------

## Moriah

Try the 2.6.7 kernel.  I could not get it to work with 2.6.8 or 2.6.9 (2.6.10 was not out last time I fiddled with it.)

I think I am running the initrd from sourceforge.    :Question: 

I could post my initird image -- it is gzipped -- on my webserver so you could download it, but I really think the kernel version is your main problem.

Switch to the 2.6.7 kernel from hardened-dev-sources, and put your grub.conf back like mine is, and see if it doesn't work.

Is there some overwhelming reason why you must run a more recent kernel?

----------

## CRC

No reason to use 2.6.8 other than I had already upgraded to it since I normally use gentoo-dev-sources

I'll try 2.6.7 I guess (but I do hate long compiles on my slow box).  But if that works, then ... is all initrd functionality broken from 2.6.8 to 2.6.10?  That would seem unlikely!   If so, someone needs to report such a nasty bug.

----------

## Moriah

I had this discussion a while back.  See the EVMS mailing list archives.  The EVMS people (IBM) seem to feel that it is a result of the gentoo kernel group not always running regression tests for evms bootability.

I personally would prefer to just use LVM like I did with the 2.4.26 kernel, but they switched from LVM-1 to LVM-2 when they wnet to the 2.6 kernel, and LVM-2 snapshots are broken, and snapshots are the main reason I wanted LVM or EVMS.  Now I am having trouble getting EVMS snapshots to work, but I need the 2.6 kernel for its faster disk I/O speed for a couple of boxes with very large raid based filesystems.  I am also using the crypto-api in 2.6 as well.

I actually kind of stalled out on getting the EVMS snapshot stuff working, as I had "real" development to work on, and I just wasted almost a month fiddleing with trying to build a system that would run with the 2.6 kernel and EVMS, after wasting a lot of time on LVM. 

I actually ran a rather extensive set of disk benchmarks with raid and crypto and no doubt, 2.6 beats 2.4 by a long shot for I/O speed!

----------

## CRC

Well, I tried 2.6.7, and its still having issues.

I tried turning on grsecurity, and that at least gave me some information about sending signal 4 to /linuxrc, so its actually running it, but it never gives any output, and just hangs.  The added echo line at the top never gives output.  /dev/console is in there.

I also noticed that the evms linuxrc that I have uses change_root which is deprecated, and the gentoo one that you have uses pivot_root.   Where did you get that?  I would really like to try that one, but cutting and pasting from the forum isn't the best way to do it, and I'd like to know where this thing came from anyway.

----------

## Moriah

I thought I got it from the sourceforge page, or wherever the evms homepage is.  I don't really remember where I got it.  :Mad: 

----------

## CRC

 *Moriah wrote:*   

> I thought I got it from the sourceforge page, or wherever the evms homepage is.  I don't really remember where I got it. 

 

Odd - I have the one from the sourceforge page  :Sad:    Yours is copyright Gentoo and was written by Daniel Robbins!

I'll see if I can cut-n-paste it maybe ....

Nope - that won't work.  It runs other scripts from /etc

Hmm ... care to email it to me?

----------

## Moriah

I just copied it to my webserver.  You can find it here:

http://www.elilabs.com/~rj/evms-2.4.0-initrd.gz

Sorry I couldn't remember where I got it.

----------

## CRC

 *Moriah wrote:*   

> I just copied it to my webserver.  You can find it here:
> 
> http://www.elilabs.com/~rj/evms-2.4.0-initrd.gz
> 
> Sorry I couldn't remember where I got it.

 

That is indeed the one from the evms sourceforge site.  The linuxrc is the one I have.  That one has a 3.2K linuxrc by the evms people.  The initrd I want is the one you pasted earlier with the 11K linuxrc by Daniel Robbins.  That one seems to be impossible to find.

----------

## Moriah

I think I posted the wrong initrd before.  The one I posted to my web server is the one I am actually booting with; I verified it in my /boot/grub/grub.conf file.  I must have grabbed the wrong initrd before.  Sorry.  :Crying or Very sad: 

----------

## CRC

 *Moriah wrote:*   

> I think I posted the wrong initrd before.  The one I posted to my web server is the one I am actually booting with; I verified it in my /boot/grub/grub.conf file.  I must have grabbed the wrong initrd before.  Sorry. 

 

Odd, for some reason, that one isn't working for me.   It just hangs, but it is definately executing the script.  It just never gives output, even if I add an "echo: at the top of the scipt.  I'm not sure why.  The one you posted before has specific configuration of devices (and udev), and it also handles the change of root in the new (non-deprecated way), so I really want to try that one.  Do you still have it?

Good news is, I figured out why my Xorg is so impossibly slow.  Having the Composite extension on seems to kill things badly.  So - half my upgrades are done - just need to get the system booted without using a system rescue CD with a linux 2.4 kernel to mount my /

----------

## Moriah

Are you *SURE* you applied the bd-claim patch?  If you upgraded your kernel since you applied it, then you must apply iyt again.

----------

## CRC

 *Moriah wrote:*   

> Are you *SURE* you applied the bd-claim patch?  If you upgraded your kernel since you applied it, then you must apply iyt again.

 

bd-claim would be fine if I used regular partitions, but EVERYTHING is under evms.  

I did find the issue though.  The evms from sourceforge is compiled with 686 or higher instructions, and I have a k6-2, so the shell running the linuxrc (busybox) crashes!   Its actually just the libs that are the problem.  I replaced them with the libs from the System Rescue CD that I use since they were the same versions.

I also had to add "evms_activate" to /etc/init.d/checkroot so that fsck could check the root filesystem without an error

I'd still like to find that other linuxrc/initrd

----------

## Moriah

You should report this to the evms mailing list at evms-devel-admin@lists.sourceforge.net as it could easily bite someone else too.

----------

