> > echo 0x3a00 > /proc/sys/kernel/real-root-dev
> 
> This is not needed at all. Currently initrd mounts kernel and leaves
> real-root-dev to be RAM disk and system is happy with it:
> 
> [root@cooker root]# cat /proc/sys/kernel/real-root-dev
> 256
>


Even worse, you *must*not* do it. If you change real-root-dev in linuxrc
from RAM disk minor 0 kernel will try to remount root after linuxrc is
done:

init/main.c:prepare_namespace()

                pid = kernel_thread(do_linuxrc, "/linuxrc", SIGCHLD);
                if (pid>0)
                        while (pid != wait(&i));
                if (MAJOR(real_root_dev) != RAMDISK_MAJOR
                     || MINOR(real_root_dev) != 0) {
                        error = change_root(real_root_dev,"/initrd");

Trying to do it after real root was already mounted may be harmless, may
be not. Usage of real-root-dev is awful kludge, more clean solution
would be some /proc (or command line) interface, something like

echo 0 > /proc/sys/kernel/remount-root

or

linux ... no-root-remount ...

But I hope something better comes in 2.6 so it may become non-issue
then.

-andrej

Reply via email to