Having problems with init
Dallas Clement
dallas.a.clement at gmail.com
Tue Nov 2 18:20:33 UTC 2010
Thanks Dennis. I figured things out. Please see my reply. Looks
like we crossed paths... ;)
I was definitely running from linuxrc, but my PID was not 1 until I
added the extra linux command params.
On Tue, Nov 2, 2010 at 1:17 PM, Denys Vlasenko <vda.linux at googlemail.com> wrote:
> On Tuesday 02 November 2010 17:44, Dallas Clement wrote:
>> I'm struggling to get init to find /etc/init.d/inittab and or execute
>> /etc/init.d/rcS. It just sits and waits on nanosleep. I have
>> included the strace output below.
>>
>> I'm using version 1.7.0 ( I know it's a bit old, but I'm not able to
>> upgrade it for this project ).
>>
>> I don't think I'm doing anything too out of the ordinary. I am able
>> to successfully NFS mount my root file system. I execute the
>> following from my initrd / linuxrc:
>>
>> /sbin/ifconfig eth1 192.168.1.40 up
>> mount -o nolock 192.168.1.5:/home/dallasc/development/cs/BTUS/hddroot/img /mnt
>> cd /mnt
>> mkdir -p initrd
>> ls .
>> /sbin/pivot_root . initrd
>> if [ $? != 0 ]; then
>> echo "pivot root failed"
>> else
>> exec chroot . /usr/local/bin/strace /sbin/init \
>> <dev/console >dev/console 2>&1
>> umount /initrd
>>
>> If I replace /sbin/init with /bin/sh, I get a shell prompt and I can
>> look at my NFS mounted root fs. So I know that the exec is working
>> and I can execute binaries over NFS.
>>
>> init however just sits and waits forever on nanosleep. I don't see it
>> attempt to open the inittab file or the rcS file. Could it perhaps be
>> a UID or PID problem?
>
> Yes:
>
> if (!DEBUG_INIT) {
> /* Expect to be invoked as init with PID=1 or be invoked as linuxrc */
> if (getpid() != 1
> && (!ENABLE_FEATURE_INITRD || !strstr(applet_name, "linuxrc"))
> ) {
> bb_show_usage();
> }
> #ifdef RB_DISABLE_CAD
> /* Turn off rebooting via CTL-ALT-DEL - we get a
> * SIGINT on CAD so we can shut things down gracefully... */
> reboot(RB_DISABLE_CAD); /* misnomer */
> #endif
> }
>
> See? It checks PID == 1. And under strace, PID will not be 1.
> (Unless you run strace -D, which requires very recent strace).
>
> Why you don't see bb_show_usage() output I don't know -
> perhaps you compiled without CONFIG_SHOW_USAGE?
>
> That init sleeps after this instead of exiting is a known bug,
> it will be fixed in 1.18.x
>
> What happens if you don't run init under strace, or if you run
> it under strace -D?
>
> --
> vda
>
More information about the busybox
mailing list