2.6 kernel

Bill Rugolsky Jr. brugolsky at telemetry-investments.com
Tue Dec 16 19:41:15 UTC 2003


On Tue, Dec 16, 2003 at 07:02:18PM +0100, Matthias Saou wrote:
> Speaking of device-mapper : With a FC1 system w/ Arjan's 2.6 kernel and
> related packages, I managed to not have the main /dev/mapper/control node
> to get device mapper working (where or when is it created?) nor did the
> dm_mod kernel module get automatically loaded when I started trying to set
> up the lvm2 volumes.
 
The device number is dynamic, so it ought to be recreated on each boot.
See initscripts-7.43-1, file /etc/rc.d/rc.sysinit, lines 344-353:

# LVM2 initialization
if [ -d /etc/lvm/ -a -x /sbin/lvm ]; then
    if ! LC_ALL=C fgrep -q "device-mapper" /proc/devices 2>/dev/null ; then
        modprobe dm-mod >/dev/null 2>&1
    fi
    /bin/rm -f /dev/mapper/control
    echo "mkdmnod" | /sbin/nash --quiet >/dev/null 2>&1
    if [ -e /dev/mapper/control -a -x /sbin/lvm ]; then
        action $"Setting up Logical Volume Management:" /sbin/lvm vgscan --mknodes && /sbin/lvm vgchange -a 
y
    fi
fi

You need to install initscripts-7.43-1, mkinitrd-3.5.15.1,
device-mapper-1.00.07-1, and lvm2-2.00.08-1, and then create /etc/lvm.
(initscripts-7.43-1 has an implicit dependence on the nash mkdmnod command.
 Also, the lvm2 manpages conflict with the lvm manpages; repackage as necessary).

Once you've done that, dm-mod will be loaded and /dev/mapper/control created
on next reboot.

Note that if you are using root-on-LVM with 2.4/LVM1 -> 2.6/DM/LVM2, then
you need to install mkinitrd-3.5.15.1 and hack up /sbin/mkinitrd, 
something like:

--- /sbin/mkinitrd      2003-12-05 21:25:12.000000000 -0500
+++ /var/tmp/mkinitrd   2003-12-09 14:36:53.000000000 -0500
@@ -373,12 +373,6 @@
 
 # If we use LVM, include lvm-mod
 if [ -z "$nolvm" ]; then
-    if [ -f /proc/lvm/global  ]; then
-        if  grep -q '^VG:' /proc/lvm/global ; then
-           findmodule -lvm-mod
-        fi
-    fi
-
     if [ -x /sbin/dmsetup ]; then
        dmout=$(/sbin/dmsetup ls)
        if [ "$dmout" != "No devices found" ]; then
@@ -446,8 +440,7 @@
 elif ! echo $rootdev | cut -c1-6 |grep -q "LABEL=" ; then
     rootdev=$(echo "readlink $rootdev" | /sbin/nash --quiet)
     major=`ls -l $rootdev | sed -e "s/.* \\([0-9]\+\\), *[0-9]\+.*/\\1/"`
-    [ "$major" != "58" ] || root_lvm=1
-    if echo $rootdev |grep -q /dev/mapper 2>/dev/null ; then root_lvm2=1 ; fi
+    root_lvm2=1
 fi
 
 rootfs=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $3; }}' $fstab)
@@ -456,9 +449,6 @@
 # in case the root filesystem is modular
 findmodule -${rootfs}
 
-if [ -n "$root_lvm" ]; then
-    findmodule -lvm-mod
-fi
 if [ -n "$root_lvm2" ]; then
     findmodule -dm-mod
 fi

Then you can

   mount --bind /var/tmp/mkinitrd /sbin/mkinitrd
   rpm -ivh kernel-2.6.0-0.test11.1.102.i686.rpm
   umount /sbin/mkinitrd

or simply install the kernel and run:

   rm -f /boot/vmlinuz-2.6.0-0.test11.1.102.img     
   /var/tmp/mkinitrd -v /boot/vmlinuz-2.6.0-0.test11.1.102.img 2.6.0-0.test11.1.102

You will still have the problem that the LVM2 tools will not overwrite
real files in, e.g., the /dev/vg0/ directory; it will only overwrite symlinks.  One
possibility is to move these files elsewhere, e.g., /dev/lvm1/vg0/,
and create symlinks,

   mkdir /dev/lvm1
   cp -a /dev/vg0 /dev/lvm1
   cd /dev/vg0 && ln -sf ../../lvm1/vg0/* /dev/vg0

before rebooting from 2.4 into 2.6.

Regards,

	Bill Rugolsky





More information about the fedora-devel-list mailing list