kernelnewbies.kernelnewbies.org archive mirror
 help / color / mirror / Atom feed
* busybox shell doesn't come up or get stuck.. where should I look or how should I debug it?
@ 2022-08-12  8:32 Chan Kim
  2022-08-18  5:19 ` Chan Kim
  0 siblings, 1 reply; 4+ messages in thread
From: Chan Kim @ 2022-08-12  8:32 UTC (permalink / raw)
  To: kernelnewbies


[-- Attachment #1.1: Type: text/plain, Size: 1542 bytes --]


Hi all,

I'm trying to boot linux with minimal config on our FPGA board which is
under development.
After months of trying (but I tried this intermittently) I think I'm about
to see the shell prompt.
(there was a bug in interconnect driver that I found yesterday, this caused
a long delay)

Anyway, when I run linux kernel on a qemu machine, the boot process ends
like this at the shell prompt.
(The echo '### INIT SCRIPT ###' was put in /init script which is in the
initramfs)
    
    Run /init as init process
    ### INIT SCRIPT ###
    mount: mounting none on /tmp failed: Invalid argument
    
    This boot took 2.12 seconds
    
    /bin/sh: can't access tty; job control turned off
    / # 
    / #

Now, when I run it on our FPGA board using u-boot, it ends like this.
    
    Run /init as init process
    ### INIT SCRIPT ###
    mount: mounting none on /tmp failed: Invalid argument
    
    This boot took 0.00 seconds
    
    /bin/sh: can't acce
    
So it seems this init_kernel thread executes /init and /init excutes /bin/sh
at the end.

this is the /init script.

	#!/bin/sh
	echo "### INIT SCRIPT ###"
	mkdir /proc /sys /tmp
	mount -t proc none /proc
	mount -t sysfs none /sys
	mount -t tmpfs none /tmp
	echo -e "\nThis boot took $(cut -d' ' -f1 /proc/uptime) seconds\n"

	#ifconfig eth0 10.0.2.15 netmask 255.255.255.0 up
	#route add default gw 10.0.2.2

	exec /bin/sh

Somehow the busybox applet /bin/sh is stuck somewhere.
Can anybody tell me where I should look? Or how to debug this?

Thanks in advance!

Chan Kim


[-- Attachment #1.2: Type: text/html, Size: 9983 bytes --]

[-- Attachment #2: Type: text/plain, Size: 170 bytes --]

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

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

* RE: busybox shell doesn't come up or get stuck.. where should I look or how should I debug it?
  2022-08-12  8:32 busybox shell doesn't come up or get stuck.. where should I look or how should I debug it? Chan Kim
@ 2022-08-18  5:19 ` Chan Kim
  2022-08-18  6:02   ` Chan Kim
  0 siblings, 1 reply; 4+ messages in thread
From: Chan Kim @ 2022-08-18  5:19 UTC (permalink / raw)
  To: kernelnewbies


[-- Attachment #1.1: Type: text/plain, Size: 4162 bytes --]

Hello, all,

 

In the initramfs.cpio.gz file from the busybox, when I replace the /init
script to an executable binary called 'init', (which prints Hello!
Repeatedly), 

The output from the board looks like this.  

(...)

### point 106

### point 106-1

Run /init as init process

### point 106-2, ret = -2

Failed to execute /init (error -2)

### point 107

### point 107-1

Run /init as init process

### point 107-2, ret = -2

Kernel panic - not syncing: Requested init /init failed (error -2).

CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.10.0-rc5 #197

Hardware name: ETRI ab21m (DT)

Call trace:

dump_backtrace+0x0/0x190

show_stack+0x14/0x30

dump_stack+0xcc/0x104

panic+0x16c/0x328

kernel_init+0x178/0x264

ret_from_fork+0x10/0x18

Kernel Offset: disabled

CPU features: 0x0000007,78002c18

Memory Limit: none

---[ end Kernel panic - not syncing: Requested init /init failed (error -2).
]---

 

The related source code (init/main.c) looks like this (trying it first from
the ramdisk.  'init=/init' was given from the bootargs in device tree)

 

printk("### point 106\n");

    if (ramdisk_execute_command) {

        printk("### point 106-1\n");

        ret = run_init_process(ramdisk_execute_command);

        printk("### point 106-2, ret = %d\n", ret);

        if (!ret)

            return 0;

        pr_err("Failed to execute %s (error %d)\n",

               ramdisk_execute_command, ret);

    }

 

    /*

     * We try each of these until one succeeds.

     *

     * The Bourne shell can be used instead of init if we are

     * trying to recover a really broken machine.

     */

    printk("### point 107\n");

    if (execute_command) {

        printk("### point 107-1\n");

        ret = run_init_process(execute_command);

        printk("### point 107-2, ret = %d\n", ret);

        if (!ret)

            return 0;

        panic("Requested init %s failed (error %d).",

              execute_command, ret);

    }

 

I compiled the init program by the command "aarch64-none-linux-gcc -static
-o init test.c".

When 'init' was a script, some lines of it was processed ok, but when I
replace 'init' to a binary program, it just failed with -2.

I find error code 2 is 'No such file or directory' which is strange because
my 'init' program was under / when I made the initramfs.cpio.gz.

Can anyone give me any advice?

 

Thank you!

Chan Kim

 

From: Chan Kim <ckim@etri.re.kr> 
Sent: Friday, August 12, 2022 5:32 PM
To: kernelnewbies@kernelnewbies.org
Subject: busybox shell doesn't come up or get stuck.. where should I look or
how should I debug it?

 

Hi all,

I'm trying to boot linux with minimal config on our FPGA board which is
under development.

After months of trying (but I tried this intermittently) I think I'm about
to see the shell prompt.

(there was a bug in interconnect driver that I found yesterday, this caused
a long delay)

Anyway, when I run linux kernel on a qemu machine, the boot process ends
like this at the shell prompt.

(The echo '### INIT SCRIPT ###' was put in /init script which is in the
initramfs)

    

    Run /init as init process

    ### INIT SCRIPT ###

    mount: mounting none on /tmp failed: Invalid argument

    

    This boot took 2.12 seconds

    

    /bin/sh: can't access tty; job control turned off

    / # 

    / #

Now, when I run it on our FPGA board using u-boot, it ends like this.

    

    Run /init as init process

    ### INIT SCRIPT ###

    mount: mounting none on /tmp failed: Invalid argument

    

    This boot took 0.00 seconds

    

    /bin/sh: can't acce

    

So it seems this init_kernel thread executes /init and /init excutes /bin/sh
at the end.

this is the /init script.

#!/bin/sh

echo "### INIT SCRIPT ###"

mkdir /proc /sys /tmp

mount -t proc none /proc

mount -t sysfs none /sys

mount -t tmpfs none /tmp

echo -e "\nThis boot took $(cut -d' ' -f1 /proc/uptime) seconds\n"

#ifconfig eth0 10.0.2.15 netmask 255.255.255.0 up

#route add default gw 10.0.2.2

exec /bin/sh

Somehow the busybox applet /bin/sh is stuck somewhere.

Can anybody tell me where I should look? Or how to debug this?

Thanks in advance!

Chan Kim


[-- Attachment #1.2: Type: text/html, Size: 29722 bytes --]

[-- Attachment #2: Type: text/plain, Size: 170 bytes --]

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

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

* RE: busybox shell doesn't come up or get stuck.. where should I look or how should I debug it?
  2022-08-18  5:19 ` Chan Kim
@ 2022-08-18  6:02   ` Chan Kim
  2022-08-19 11:50     ` Chan Kim
  0 siblings, 1 reply; 4+ messages in thread
From: Chan Kim @ 2022-08-18  6:02 UTC (permalink / raw)
  To: kernelnewbies


[-- Attachment #1.1: Type: text/plain, Size: 740 bytes --]

I had mistakenly omitted '-static' option when making init program.(repeated
Hello! Print).

So now the board output looks like this.

(...)

### point 106-1

Run /init as init process

### point 106-2, ret = 0

Hello! i=0

Hello! i=1

Hello! i=2

...

Hello! i=115

Hello! i=116

Hello! i=117

He            <=== hangs.

So the running the 'init' program (whether it's a script or a binary
program) is ok.

The binary 'init' program stops after printing Hello 117 times so there
seems to be more basic problem in H/W or device tree.  And when the init
script ran 'exec /bin/sh', the shell didn't start so 'running exec inside a
script' can have a problem. 

If anyone has a suggestion or advice, I welcome it.

 

Thank you!

Chan Kim

 


[-- Attachment #1.2: Type: text/html, Size: 6628 bytes --]

[-- Attachment #2: Type: text/plain, Size: 170 bytes --]

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

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

* RE: busybox shell doesn't come up or get stuck.. where should I look or how should I debug it?
  2022-08-18  6:02   ` Chan Kim
@ 2022-08-19 11:50     ` Chan Kim
  0 siblings, 0 replies; 4+ messages in thread
From: Chan Kim @ 2022-08-19 11:50 UTC (permalink / raw)
  To: kernelnewbies


[-- Attachment #1.1: Type: text/plain, Size: 1687 bytes --]

Hi, all,

I set a variable to true just before calling the ramdisk_exeucte_cmd (which
is /init in this case) in the kernel_init function, 

And added printk in schedule() function so that it prints something it is
called and when the previous variable is true.

And found the program stops after the schedule function is called. Like
this.

 

Hello! i=115

Hello! i=116

Helloschedule!

schedule!

 

I checked the timer interrupt number was given correctly in the device tree
(that's why schedule was called by the timer..).

I stopped the experiment to do something else but will resume it next week
by adding some prints. 

If anyone has any idea about what might be wrong, please tell me.

Thanks for reading.

 

Chan Kim

From: Chan Kim <ckim@etri.re.kr> 
Sent: Thursday, August 18, 2022 3:02 PM
To: kernelnewbies@kernelnewbies.org
Subject: RE: busybox shell doesn't come up or get stuck.. where should I
look or how should I debug it?

 

I had mistakenly omitted '-static' option when making init program.(repeated
Hello! Print).

So now the board output looks like this.

(...)

### point 106-1

Run /init as init process

### point 106-2, ret = 0

Hello! i=0

Hello! i=1

Hello! i=2

...

Hello! i=115

Hello! i=116

Hello! i=117

He            <=== hangs.

So the running the 'init' program (whether it's a script or a binary
program) is ok.

The binary 'init' program stops after printing Hello 117 times so there
seems to be more basic problem in H/W or device tree.  And when the init
script ran 'exec /bin/sh', the shell didn't start so 'running exec inside a
script' can have a problem. 

If anyone has a suggestion or advice, I welcome it.

 

Thank you!

Chan Kim

 


[-- Attachment #1.2: Type: text/html, Size: 10806 bytes --]

[-- Attachment #2: Type: text/plain, Size: 170 bytes --]

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

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

end of thread, other threads:[~2022-08-19 11:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-12  8:32 busybox shell doesn't come up or get stuck.. where should I look or how should I debug it? Chan Kim
2022-08-18  5:19 ` Chan Kim
2022-08-18  6:02   ` Chan Kim
2022-08-19 11:50     ` Chan Kim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).