Re: 2.6.12 initrd module loading seems parallel on bootup
From: Darryl L. Miles
Date: Mon Jun 27 2005 - 00:48:56 EST
Are we sure we are not talking about two different problems here.
I'm using RedHat and mkinitrd, in the initrd image there is already a
skeleton /dev tree that contains my real-root device. udev also exists
in the initrd image. I don't think any /dev device magic was necessary
for me too mount root.
It is not clear Chris which tools you are using on initrd, standard
Gentoo methods or a home brew setup ? What shell is calling modprobe ?
Can you confirm at what point you are seeing modprobe exit ?
* Immediatly (before device driver has detected hardware and reported /
registered its findings). This is the symptom I was seeing, but the
cause was incorrect shell handling.
* After detection but before device node creation.
* After device node creation.
FYI - This looks like the snippet from nash.c
@@ -403,7 +450,7 @@
int otherCommand(char * bin, char * cmd, char * end, int doFork) {
char ** args;
char ** nextArg;
- int pid;
+ int pid, wpid;
int status;
char fullPath[255];
static const char * sysPath = PATH;
@@ -479,10 +526,20 @@
close(stdoutFd);
- wait4(-1, &status, 0, NULL);
- if (!WIFEXITED(status) || WEXITSTATUS(status)) {
- printf("ERROR: %s exited abnormally!\n", args[0]);
- return 1;
+ for (;;) {
+ wpid = wait4(-1, &status, 0, NULL);
+ if (wpid == -1) {
+ printf("ERROR: Failed to wait for process %d\n", wpid);
+ }
+
+ if (wpid != pid)
+ continue;
+
+ if (!WIFEXITED(status) || WEXITSTATUS(status)) {
+ printf("ERROR: %s exited abnormally with value %d ! (pid %d)\n", args[0], WEXITSTATUS(status), pid);
+ return 1;
+ }
+ break;
}
}
--
Darryl L. Miles
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/