public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* init process freezed after run_init_process
@ 2005-03-31  4:20 rjy
       [not found] ` <Pine.LNX.4.61.0503311113550.17113@yvahk01.tjqt.qr>
  0 siblings, 1 reply; 6+ messages in thread
From: rjy @ 2005-03-31  4:20 UTC (permalink / raw)
  To: linux-kernel

Hi,

My computer freezed after the kernel start. It started
with normal console messages and stopped with these messages:
------------------------------
... (just as the normal ones.)
NET: Registered protocol family 1
NET: Registered protocol family 17
NET: Registered protocol family 15
Bridge firewalling registered
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 136k freed
------------------------------
The kernel started successfully: it echos on keyboard pressing.
But the init process just REFUSE to work. GOD !

This is my grub config:
-----------------------------
root (hd0,0)
kernel /bzImage.via.386 root=/dev/ram0 rw ramdisk=49152
initrd /initrd.gz
-----------------------------

My CPU is VIA Samuel 2. Memory 128M. Chipset VIA VT82C686.
I configed my kernel with CyrixIII CPU family type,
and with RAM, INITRD and ext2/3 also on.

This kernel can work properly without initrd and ramdisk.
This kernel can work properly on intel CPU and chipset
even with initrd and ramdisk. :( Have I missed something?

I have KGDBed the starting process and run_init_process
returned OK: initrd decompressed properly and open_exec
returned non-zero.

Any instructions, references, or insight much appreciated.

Thanks

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: init process freezed after run_init_process
       [not found] ` <Pine.LNX.4.61.0503311113550.17113@yvahk01.tjqt.qr>
@ 2005-04-07  3:39   ` rjy
  2005-04-07 11:46     ` Jan Engelhardt
  0 siblings, 1 reply; 6+ messages in thread
From: rjy @ 2005-04-07  3:39 UTC (permalink / raw)
  To: Jan Engelhardt, linux-kernel

Thanks for kindly reply, :)

Jan Engelhardt wrote:
>>This is my grub config:
>>-----------------------------
>>root (hd0,0)
>>kernel /bzImage.via.386 root=/dev/ram0 rw ramdisk=49152
>>initrd /initrd.gz
>>-----------------------------
> 
> 
> Does it work if you add "  ramdisk=65536 init=/linuxrc " ?

No. I got the same problem without linuxrc.
As I mount ram0 as root, linuxrc is not necessary. Right?

> 
> 
>>returned OK: initrd decompressed properly and open_exec
>>returned non-zero.
> 
> 
> If you use k[g]db, you should be able to find out where the kernel actually 
> hangs.

After some digging, I found that the starting process of the VIA platform
and the intel platform is exactly the same:

1) checking if image is initramfs...it isn't (no cpio magic); looks like 
an initrd
    Freeing initrd memory: 9553k freed
2) loading drivers ...
3) RAMDISK: Compressed image found at block 0
    kjournald starting.  Commit interval 5 seconds
    EXT3 FS on ram0, internal journal
    EXT3-fs: mounted filesystem with ordered data mode.
    VFS: Mounted root (ext3 filesystem).
    Freeing unused kernel memory: 128k freed

If I put the same hard disk into a intel platform without any change, it
can start properly, loading the same initrd as rootfs.

And also, if I remote the initrd config in VIA platform and mount my 
hard disk as rootfs, it also works properly.

I missed some driver for VIA platform?  Why it can work without initrd?
My initrd has an invalid format? Why it can work on intel platform?
I am really confused...

After the starting process, the /sbin/init is loaded: I found that in
a breakpoint of do_schedule. It keeps scheduling init and pdflush.
I am still finding the way to debug the init process...

> 
> 
> 
> Jan Engelhardt



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: init process freezed after run_init_process
  2005-04-07  3:39   ` rjy
@ 2005-04-07 11:46     ` Jan Engelhardt
  2005-04-08  2:40       ` rjy
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Engelhardt @ 2005-04-07 11:46 UTC (permalink / raw)
  To: rjy; +Cc: linux-kernel

> Thanks for kindly reply, :)
>
> No. I got the same problem without linuxrc.
> As I mount ram0 as root, linuxrc is not necessary. Right?

Apply these rules:
1.) If you do provide an initrd= thing, the initrd is being looked for 
/linuxrc.
2.) If the root is the same as the ramdisk, then the initrd is _not_ run 
_implicitly_, and thus /sbin/init is executed, _instead of_ /linuxrc.

> I missed some driver for VIA platform?  Why it can work without initrd?

Only VIA IDE chipset maybe, but you don't usually need that for just-initrd.
You'd need that for the harddisks...

> After the starting process, the /sbin/init is loaded: I found that in
> a breakpoint of do_schedule. It keeps scheduling init and pdflush.
> I am still finding the way to debug the init process...

Make your own initrd and put a bash into it. Then start that, e.g. (for our 
linux live cd), initrd=initrd.sqfs root=/dev/ram0 init=/bin/bash


Jan Engelhardt
-- 
No TOFU for me, please.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: init process freezed after run_init_process
  2005-04-07 11:46     ` Jan Engelhardt
@ 2005-04-08  2:40       ` rjy
  2005-04-08 17:45         ` Jan Engelhardt
  0 siblings, 1 reply; 6+ messages in thread
From: rjy @ 2005-04-08  2:40 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: linux-kernel

> Apply these rules:
> 1.) If you do provide an initrd= thing, the initrd is being looked for 
> /linuxrc.

I have add /linuxrc, /init and /bin/init, all link to /sbin/init.
It just refuses to work ... :(

> Only VIA IDE chipset maybe, but you don't usually need that for just-initrd.
> You'd need that for the harddisks...

My harddisk works fine without initrd.

> 
> Make your own initrd and put a bash into it. Then start that, e.g. (for our 
> linux live cd), initrd=initrd.sqfs root=/dev/ram0 init=/bin/bash

I have tried these kernel parameters:
	init=/bin/bash
	init=/linuxrc
	init=/init
	init=/sbin/init
None works.

Also, after some google, I found that the format of initrd has changed.
I also tried a new initrd with cpio format. The kernel recognized it:
	Boot Logs:
	1) checking if image is initramfs... it is
	   Freeing initrd memory: 17583k freed
	2) loading drivers
	3) Freeing unused kernel memory: 128k freed

After the kernel start, I add breakpoints at cpu_idle and do_schedule.
cpu_idle never reached, only do_schedule did. Is that strange?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: init process freezed after run_init_process
  2005-04-08  2:40       ` rjy
@ 2005-04-08 17:45         ` Jan Engelhardt
  2005-04-19  9:14           ` rjy
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Engelhardt @ 2005-04-08 17:45 UTC (permalink / raw)
  To: rjy; +Cc: linux-kernel

>> Make your own initrd and put a bash into it. Then start that, e.g. (for
>> our linux live cd), initrd=initrd.sqfs root=/dev/ram0 init=/bin/bash
>
> I have tried these kernel parameters:
> init=/bin/bash
> init=/linuxrc
> init=/init
> init=/sbin/init
> None works.

What's the error message?

> Also, after some google, I found that the format of initrd has changed.
> I also tried a new initrd with cpio format. The kernel recognized it:

cpio initrd's (aka initramfs) are new - the "old style" initrd where you
`mksquasfs mydir initrd.sqfs` (see above) continues to work, though.

> After the kernel start, I add breakpoints at cpu_idle and do_schedule.
> cpu_idle never reached, only do_schedule did. Is that strange?

Until pid 1 is started, the cpu should never be idle.


Jan Engelhardt
-- 
No TOFU for me, please.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: init process freezed after run_init_process
  2005-04-08 17:45         ` Jan Engelhardt
@ 2005-04-19  9:14           ` rjy
  0 siblings, 0 replies; 6+ messages in thread
From: rjy @ 2005-04-19  9:14 UTC (permalink / raw)
  To: Jan Engelhardt, linux-kernel

Jan Engelhardt wrote:
>>>Make your own initrd and put a bash into it. Then start that, e.g. (for
>>>our linux live cd), initrd=initrd.sqfs root=/dev/ram0 init=/bin/bash
>>
>>I have tried these kernel parameters:
>>init=/bin/bash
>>init=/linuxrc
>>init=/init
>>init=/sbin/init
>>None works.
> 
> 
> What's the error message?

No error message at all. System seems freezed after spit out this message:
	Freeing unused kernel memory: 136k freed
The console echos the keyboard inputs.

It seems that the init started successfully: I attached the output
of "info threads" and "backtrace" after the system freezing.

I am digging the source these days and try to find out if the init
process has really been started. I found some difference between
the normal init process and the freezed init process:
----------------------------------------------------------------
		| Normal init		| Freezed init
----------------------------------------------------------------
mm->total_vm	| 0x145			| 0x1e
mm->map_count	| 9			| 5
----------------------------------------------------------------

Maybe, init is not loaded completely? Or just loaded an invalid one?
I am trying to dump the text segment at user space 0x08040000 of the
init process. But I have not found the way to find the related kernel 
space address. Any clue? Thanks! :)

> 
> 
>>Also, after some google, I found that the format of initrd has changed.
>>I also tried a new initrd with cpio format. The kernel recognized it:
> 
> 
> cpio initrd's (aka initramfs) are new - the "old style" initrd where you
> `mksquasfs mydir initrd.sqfs` (see above) continues to work, though.
> 
> 
>>After the kernel start, I add breakpoints at cpu_idle and do_schedule.
>>cpu_idle never reached, only do_schedule did. Is that strange?
> 
> 
> Until pid 1 is started, the cpu should never be idle.
> 
> 
> Jan Engelhardt

It seems that the init process is started:
(gdb) info threads
   11 Thread 123 (kseriod)  0xc032d485 in do_schedule () at 
/kernel/via/kgdb/kernel/sched.c:923
   10 Thread 9 (aio/0)  0xc032d485 in do_schedule () at 
/kernel/via/kgdb/kernel/sched.c:923
   9 Thread 8 (kswapd0)  0xc032d485 in do_schedule () at 
/kernel/via/kgdb/kernel/sched.c:923
   8 Thread 7 (pdflush)  0xc032d485 in do_schedule () at 
/kernel/via/kgdb/kernel/sched.c:923
   7 Thread 6 (pdflush)  0xc032d485 in do_schedule () at 
/kernel/via/kgdb/kernel/sched.c:923
   6 Thread 5 (khelper)  0xc032d485 in do_schedule () at 
/kernel/via/kgdb/kernel/sched.c:923
   5 Thread 4 (kblockd/0)  0xc032d485 in do_schedule () at 
/kernel/via/kgdb/kernel/sched.c:923
   4 Thread 3 (events/0)  0xc032d485 in do_schedule () at 
/kernel/via/kgdb/kernel/sched.c:923
   3 Thread 2 (ksoftirqd/0)  0xc032d485 in do_schedule () at 
/kernel/via/kgdb/kernel/sched.c:923
* 2 Thread 1 (init)  breakpoint () at /kernel/via/kgdb/kernel/kgdb.c:1212
   1 Thread 32768 (Shadow task 0 for pid 0)  0xc032d485 in do_schedule 
() at /kernel/via/kgdb/kernel/sched.c:923

(gdb) bt
#0  breakpoint () at /kernel/via/kgdb/kernel/kgdb.c:1212
#1  0xc774fec4 in ?? ()
#2  0xc010893b in do_IRQ (regs=
       {ebx = -948641792, ecx = -948577792, edx = -944260388, esi = 0, 
edi = -948641792, ebp = -948633844, eax = -944260388, xds = 123, xes = 
123, orig_eax = -252, eip = -1072517263, xcs = 96, eflags = 646, esp = 
-948633660, xss = -948576428})
     at /kernel/via/kgdb/arch/i386/kernel/irq.c:574
#3  0xc0106888 in common_interrupt ()
#4  0xc01063f6 in do_signal (regs=0xc774e000, oldset=0x0) at 
/kernel/via/kgdb/arch/i386/kernel/signal.c:581
#5  0xc01064d9 in do_notify_resume (regs=0xc774ffc4, oldset=0x0, 
thread_info_flags=1)
     at /kernel/via/kgdb/arch/i386/kernel/signal.c:629

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-04-19  9:11 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-31  4:20 init process freezed after run_init_process rjy
     [not found] ` <Pine.LNX.4.61.0503311113550.17113@yvahk01.tjqt.qr>
2005-04-07  3:39   ` rjy
2005-04-07 11:46     ` Jan Engelhardt
2005-04-08  2:40       ` rjy
2005-04-08 17:45         ` Jan Engelhardt
2005-04-19  9:14           ` rjy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox