linux-mips
[Top] [All Lists]

RE: Could not find the source code for "/sbin/init".

To: "Pete Popov" <ppopov@pacbell.net>
Subject: RE: Could not find the source code for "/sbin/init".
From: "Steven Liu" <stevenliu@psdc.com>
Date: Tue, 14 Aug 2001 11:21:01 -0700
Cc: <linux-mips@oss.sgi.com>
Sender: owner-linux-mips@oss.sgi.com
Thread-index: AcEfcZ4IsRIyq7ZrSqeBkRbieS/W7AFejhow
Thread-topic: Could not find the source code for "/sbin/init".
Hi, Pete:

Thank you very much for your help.

After several tries, I realized that you are right. My MMU may have
problem.

Because my mips CPU is not the standard one and I do not have a R3000
application 
program such as "date", "arch", or "init", I built an application as
following.

liu.c is: 

void main(void)
{

}

Makefile is:

ARCH = mips

.EXPORT_ALL_VARIABLES:


CROSS_COMPILE   =mips-linux-

AS      =$(CROSS_COMPILE)as
LD      =$(CROSS_COMPILE)ld
CC      =$(CROSS_COMPILE)gcc  -D__mips__ 
CPP     =$(CC) -E
AR      =$(CROSS_COMPILE)ar
NM      =$(CROSS_COMPILE)nm
STRIP   =$(CROSS_COMPILE)strip
OBJCOPY =$(CROSS_COMPILE)objcopy
OBJDUMP =$(CROSS_COMPILE)objdump
MAKE    =make
GENKSYMS=/sbin/genksyms


CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -mips1
-mcpu=r3000 -mmemcpy

CFLAGS += $(shell if $(CC) -fno-strict-aliasing -S -o /dev/null -xc
/dev/null >/dev/null 2>&1; then echo "-fno-strict-aliasing"; fi)

# egcs-1.0.2 compiler for MIPS has a problem for which this is a
work-around
CFLAGS += $(shell if $(CC) -mno-split-addresses -S -o /dev/null -xc
/dev/null >/dev/null 2>&1; then echo "-mno-split-addresses"; fi)



.S.s:
        $(CC) -D__ASSEMBLY__  -traditional -E -o $*.s $<
.S.o:
        $(CC) -D__ASSEMBLY__  -traditional -c -o $*.o $<



liu: $(CONFIGURATION) liu.o
        $(LD) $(LINKFLAGS) $(HEAD) liu.o  \
                -o liu
        $(NM) liu | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aU]
\)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > System.map


liu.o: liu.c 
        $(CC) $(CFLAGS) $(PROFILING) -c -o $*.o $<


When I ran the program, it crushed.

Could you build this application and run it on your R3000 system? If it
works, send me your executable so that I can test my system.

Regards,

Steven Liu

-----Original Message-----
From: Pete Popov [mailto:ppopov@pacbell.net]
Sent: Tuesday, August 07, 2001 11:53 AM
To: Steven Liu
Subject: Re: Could not find the source code for "/sbin/init".


Steven Liu wrote:
> Hi, Pete:
> 
> Thank you for your help.
> 
> Could you tell me what are sash,static bash, and dynamically 
> linked bash? 
> 
> Sorry for the trival question because I am new in Linux kernel.

sash is a "stand alone shell". It's very small and is completely
statically 
linked.  The commands are bit different -- for example, "ls" is "-ls" --
ie, the 
commands start with a "-".  If you can load sash instead of /sbin/init,
it gives 
you some confidence that your kernel is actually able to switch to
userland.


Static and dynamic bash refers to how the libraries that bash is using a
linked. 
With a statically linked bash, all of the libraries are linked as part
of the 
bash binary. That way there is no dynamic library loading when you start
bash.

Dynamically linked bash means that when you start bash, different
libraries that 
bash is using will be loaded dynamically.


Pete

> 
> Regards,
> 
> Steven Liu
> 
> -----Original Message-----
> From: Pete Popov [mailto:ppopov@pacbell.net]
> Sent: Tuesday, August 07, 2001 10:49 AM
> To: Steven Liu
> Cc: linux-mips@oss.sgi.com
> Subject: Re: Could not find the source code for "/sbin/init".
> 
> 
> Steven Liu wrote:
> 
>>Hi ALL:
>>
>>As we know, the function init( ) in main.c is 
>>
>>static int init(void * unused)
>>{
>>      lock_kernel();
>>      do_basic_setup();
>>      free_initmem();
>>      unlock_kernel();
>>
>>      if (open("/dev/console", O_RDWR, 0) < 0)
>>              printk("Warning: unable to open an initial console.\n");
>>
>>      (void) dup(0);
>>      (void) dup(0);
>>      
>>
>>      if (execute_command)
>>              execve(execute_command,argv_init,envp_init);
>>
>>      execve("/sbin/init",argv_init,envp_init);    //<--- problem
>>
>>      execve("/etc/init",argv_init,envp_init);
>>      execve("/bin/init",argv_init,envp_init);
>>      execve("/bin/sh",argv_init,envp_init);
>>      panic("No init found.  Try passing init= option to kernel.");
>>} 
>>
>>The system call execve("/sbin/init",argv_init,envp_init) will start a
>>background process.
>>In my case, it could not start the process, that is, system hangs
>>
> there
> 
>>and 
>>execve("/etc/init",argv_init,envp_init) could not be executed.
>>
>>
>>Could you tell me where could I find the source code for the
>>
> executable
> 
>>/sbin/init? 
>>
>>Thank you very much for your help.
>>
> 
> /sbin/init is part of the SysVInit package.
> 
> Your problem is most likely NOT with /sbin/init itself. I would start
by
> loading 
> sash first; if that works, try a static bash; if that works, try a
> dynamically 
> linked bash.
> 
> Pete
> 
> 
> 
> 




<Prev in Thread] Current Thread [Next in Thread>