From: "Chan Kim" <ckim@etri.re.kr>
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?
Date: Thu, 18 Aug 2022 14:19:13 +0900 [thread overview]
Message-ID: <060e01d8b2c2$0e319680$2a94c380$@etri.re.kr> (raw)
In-Reply-To: <03db01d8ae26$07e35980$17aa0c80$@etri.re.kr>
[-- 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
next prev parent reply other threads:[~2022-08-18 5:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
2022-08-18 6:02 ` Chan Kim
2022-08-19 11:50 ` Chan Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='060e01d8b2c2$0e319680$2a94c380$@etri.re.kr' \
--to=ckim@etri.re.kr \
--cc=kernelnewbies@kernelnewbies.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.