2001-02-01 09:01:27

by Rogier Wolff

[permalink] [raw]
Subject: Re: Linuxrc runs with PID 7

Paul Powell wrote:
> This is a followup question to my previous question
> "Why isn't init at PID 1."
>
> Previoulsy I was calling init from within linuxrc.
> Linuxrc was a sash script, so the sash script
> supposedly had PID 1. Now I've removed the script and
> have a C program for linuxrc.
>
> I'm still not running at PID 1 but at 7. The linuxrc
> program looks like:
>
> int main(int argc, char* argv[])
> {
> printf("PID = %i\n", getpid());
> }
>
> When I boot and linuxrc is executed, PID equals 7.
>
> Any ideas as to why this is and how I can run at PID
> 1?

Yes, I've noticed this too.

I concluded that to the kernel there is something magic about
"init=/bin/someprogram": The program doesn't get PID 1 anymore.

I used to have a script there fire up X and then exec init inside an
Xterm. I gave up on this after that junk started happening.

Oh, and Init refuses to be useful if it doesn't end up with PID 1.

Roger.

--
** [email protected] ** http://www.BitWizard.nl/ ** +31-15-2137555 **
*-- BitWizard writes Linux device drivers for any device you may have! --*
* There are old pilots, and there are bold pilots.
* There are also old, bald pilots.


2001-02-01 10:31:11

by Russell King

[permalink] [raw]
Subject: Re: Linuxrc runs with PID 7

Firstly, a /linuxrc script can't be PID 1. Check the bottom of
do_basic_setup in init/main.c:

pid = kernel_thread(do_linuxrc, "/linuxrc", SIGCHLD);

Since do_basic_setup is already PID 1, /linuxrc won't be.

If you need /linuxrc to be PID 1, don't call it /linuxrc, but /sbin/init,
/etc/init or /bin/init.

--
Russell King ([email protected]) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html