--- linux-2.6.20-gentoo-r6/init/do_mounts.c 2007-04-17 01:27:27.000000000 -0400 +++ linux-dev-root/init/do_mounts.c 2007-04-21 13:00:32.000000000 -0400 @@ -354,7 +354,10 @@ va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); - fd = sys_open("/dev/root", O_RDWR | O_NDELAY, 0); + if (saved_root_name[0]) + fd = sys_open(saved_root_name, O_RDWR | O_NDELAY, 0); + else + fd = sys_open("/dev/root", O_RDWR | O_NDELAY, 0); if (fd >= 0) { sys_ioctl(fd, FDEJECT, 0); sys_close(fd); @@ -397,8 +400,13 @@ } #endif #ifdef CONFIG_BLOCK - create_dev("/dev/root", ROOT_DEV); - mount_block_root("/dev/root", root_mountflags); + if (saved_root_name[0]) { + create_dev(saved_root_name, ROOT_DEV); + mount_block_root(saved_root_name, root_mountflags); + } else { + create_dev("/dev/root", ROOT_DEV); + mount_block_root("/dev/root", root_mountflags); + } #endif }