[sisyphus] LVM в initrd для ядра 2.6.14-std26-up-alt5

Eugene Prokopiev =?iso-8859-1?q?prokopiev_=CE=C1_stc=2Edonpac=2Eru?=
Пт Мар 10 12:14:04 MSK 2006


Половину своей задачи я решил: в initrd все инициализируется правильно, 
но вот переключиться из initrd в настоящую систему я не могу.

Что я сейчас имею: ALM 2.4 + updates + некоторые backports + kernel 
2.6.14-std26-up-alt5 из Сизифа

Содержимое initrd:

# find ./
./
./etc
./dev
./dev/mapper
./dev/system
./dev/console
./dev/null
./dev/ram
./dev/systty
./dev/tty1
./dev/urandom
./dev/md0
./dev/md255
./dev/md1
./initroot
./loopfs
./sys
./proc
./bin
./bin/echo
./bin/insmod
./bin/losetup
./bin/modprobe
./bin/mount
./bin/sh
./bin/test
./bin/umount
./bin/cat
./bin/mknod
./bin/bash
./bin/lvm
./bin/strace
./bin/raidautorun
./bin/busybox-big
./lib
./lib/modules
./lib/modules/2.6.14-std26-up-alt5
./lib/modules/2.6.14-std26-up-alt5/kernel
./lib/modules/2.6.14-std26-up-alt5/kernel/drivers
./lib/modules/2.6.14-std26-up-alt5/kernel/drivers/md
./lib/modules/2.6.14-std26-up-alt5/kernel/drivers/md/dm-mod.ko
./lib/modules/2.6.14-std26-up-alt5/kernel/drivers/md/raid1.ko
./lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide
./lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide/ide-core.ko
./lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide/pci
./lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide/pci/piix.ko
./lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide/pci/generic.ko
./lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide/ide-generic.ko
./lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide/ide-disk.ko
./lib/modules/2.6.14-std26-up-alt5/kernel/fs
./lib/modules/2.6.14-std26-up-alt5/kernel/fs/mbcache.ko
./lib/modules/2.6.14-std26-up-alt5/kernel/fs/jbd
./lib/modules/2.6.14-std26-up-alt5/kernel/fs/jbd/jbd.ko
./lib/modules/2.6.14-std26-up-alt5/kernel/fs/ext3
./lib/modules/2.6.14-std26-up-alt5/kernel/fs/ext3/ext3.ko
./lib/modules/2.6.14-std26-up-alt5/kernel/fs/ext2
./lib/modules/2.6.14-std26-up-alt5/kernel/fs/ext2/ext2.ko
./lib/ld-linux.so.2
./lib/libc.so.6
./linuxrc
./var
./log

Содержимое linuxrc:

#!/bin/bash -x

/bin/insmod -f 
/lib/modules/2.6.14-std26-up-alt5/kernel/drivers/md/dm-mod.ko
/bin/insmod -f 
/lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide/ide-core.ko
/bin/insmod -f 
/lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide/pci/piix.ko
/bin/insmod -f 
/lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide/pci/generic.ko
/bin/insmod -f 
/lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide/ide-generic.ko
/bin/insmod -f 
/lib/modules/2.6.14-std26-up-alt5/kernel/drivers/ide/ide-disk.ko
/bin/insmod -f /lib/modules/2.6.14-std26-up-alt5/kernel/drivers/md/raid1.ko
/bin/insmod -f /lib/modules/2.6.14-std26-up-alt5/kernel/fs/mbcache.ko
/bin/insmod -f /lib/modules/2.6.14-std26-up-alt5/kernel/fs/jbd/jbd.ko
/bin/insmod -f /lib/modules/2.6.14-std26-up-alt5/kernel/fs/ext3/ext3.ko
/bin/insmod -f /lib/modules/2.6.14-std26-up-alt5/kernel/fs/ext3/ext2.ko

/bin/mount -t proc proc /proc
/bin/mount -t tmpfs -o size=1m none /dev/mapper
/bin/mount -t tmpfs -o size=1m none /dev/system
/bin/mount -t tmpfs -o size=1m none /etc
/bin/mount -t tmpfs -o size=1m none /var
/bin/mount -t ext2 -o rw /dev/md0 /log

/bin/raidautorun /dev/md255
/bin/mknod -m 600 /dev/mapper/control c 10 63

cat /proc/mdstat

/bin/lvm vgscan
/bin/lvm vgchange -ay

/initroot

/bin/umount /log
/bin/umount /var
/bin/umount /etc
/bin/umount /dev/system
/bin/umount /dev/mapper
/bin/umount /proc

Содержимое initroot (взято из оригинального initrd, сгенерированного 
посредством mkinitrd):

#!/bin/sh

EncodeDev()
{
         echo $(( ($2 & 0xff) | ($1 << 8) | (($2 & ~0xff) << 12) ))
}

read cmdline </proc/cmdline
cmdline=" $cmdline "
if test -z "${cmdline##*[        ]root=*}" ; then
         root="${cmdline##*[      ]root=}"
         root="${root%%[  ]*}"
         if test -z "${root##/dev/*}" ; then
                 root="${root#/dev/}"
                 (
                 read ignored
                 read ignored
                 while read major minor size name ignored; do
                         if test "$name" = "$root" ; then
                                 EncodeDev $major $minor 
 >/proc/sys/kernel/real-root-dev
                                 break
                         fi
                 done
                 ) </proc/partitions

         fi
fi

В итоге я получаю:

VFS: Cannot open root devoce "3a00" or unknown-block(58,0)
Please append a correct "root" boot option
Kernel panic - not syncing : VFS : Unable to mount root fs on unknown 
block(58,0)

Если вместо initroot в linuxrc вписать вызов /bin/bash, то дальше руками 
я смогу смонтировать свои lvm-разделы. Точно также их монтирует штатное 
ядро 2.4.26-std-up-alt13

Что делать дальше?

-- 
С уважением, Прокопьев Евгений




Подробная информация о списке рассылки Sisyphus