Why the following codes in do_basic_setup() are always executed ?

From: Liu HongXun-a16975 <hidden>
Date: 2001-04-11 02:56:50

Hi, all,
	Currently, I am porting HardHat linux 2.2.14 to my platform based on ppc823.
The bootloader is ppcboot(0.8.3), and I use ramdisk. But when I boot linux on my board,
 the following codes in do_basic_setup() are always executed and my board halt.

#ifdef CONFIG_BLK_DEV_INITRD
	root_mountflags = real_root_mountflags;
	if (mount_initrd && ROOT_DEV != real_root_dev
	    && MAJOR(ROOT_DEV) == RAMDISK_MAJOR && MINOR(ROOT_DEV) == 0) {
		int error;
		int i, pid;

		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");
			if (error)
				printk(KERN_ERR "Change root to /initrd: "
				    "error %d\n",error);
		}
	}
#endif

I know the halt is caused by this line "kernel_thread(do_linuxrc, "/linuxrc", SIGCHLD)",
because there is no "/linuxrc" in my ramdisk. I just wonder why the above codes are executed.
Such codes are in do_basic_setup() in /init/main.c, and after that we will execute "/sbin/init" or
just "/bin/sash", which are the usual ones.

BRs
Rolf Liu


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help