用buildroot做的initrd,shell启动失败,大虾支持!

发布于 2022-07-23 06:55:20 字数 2521 浏览 8 评论 9

是一个ks8695的板子,ks8695是arm922t的内核,目前内核看起来好像正常,在inittab中加如了串口终端getty的指令,输入帐号root,root帐户不需要验证密码,应该得到shell了,但是实际是又回到了登录getty的控制下,在内核的do_execve中加入了调试信息输出,证明确实调用到了/bin/sh,但是/bin/sh很快退出了,怎么回事情呢?会不会和缺少哪个动态连接库有关系呢?详细信息如下

Freeing init memory: 76K
check ramdisk_execute_command:/linuxrc             启动了/linuxrc了
do_execve(/linuxrc) success return:0               挂文件系统
do_execve(/bin/mount) success return:0
do_execve(/bin/mount) success return:0
do_execve(/bin/mount) success return:0
do_execve(/bin/hostname) success return:0
do_execve(/sbin/ifconfig) success return:0        配置网络
do_execve(/sbin/route) success return:0
do_execve(/etc/init.d/rcS) success return:0       进入inittab脚本了
do_execve(/bin/touch) success return:0
do_execve(/sbin/hotplug), return:-2
do_execve(/sbin/hotplug), return:-2
do_execve(/sbin/getty) success return:0           启动了getty
do_execve(/sbin/syslogd) success return:0
do_execve(/sbin/hotplug), return:-2
do_execve(/sbin/hotplug), return:-2
do_execve(/sbin/getty) success return:0           启动了getty
do_execve(/sbin/getty) success return:0           启动了getty
do_execve(/sbin/hotplug), return:-2
do_execve(/sbin/hotplug), return:-2
do_execve(/usr/bin/tail) success return:0
do_execve(/sbin/klogd) success return:0            启动了日志

Welcome to the console.                              getty把/etc/issue的内容print了出来
uclibc login: root                                   输入了用户明
do_execve(/bin/login) success return:0             login成功
do_execve(/bin/sh) success return:0                启动shell
do_execve(/sbin/getty) success return:0            shell退出,再来getty

Welcome to the console.
uclibc login:

[ 本帖最后由 liliaoyuan 于 2006-8-8 10:39 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

荒人说梦 2022-07-26 11:01:32

uclibc用的什么版本的阿?daily snapshot?这个好象有问题的,用0.9.28的吧

猥︴琐丶欲为 2022-07-26 11:00:33

试验了把rdinit=/bin/sh,目前的提示是

Busybox v1.2.0 (2006.08.09-13:56+0000) Built-in shell (msh)
enter 'help' for a list of built-in commands.

dir
ls
help

输入回显了,但是没有任何响应
会不会是shell跑到起他的终端下去了啊?没在当前的终端上?

无戏配角 2022-07-26 11:00:22

把busybox的shell换成了hush了,启动shell的提示有些变化了,但是还是瞬间退出了
可以看到shell打印出来的:
Busybox v1.2.0 (2006.08.09-13:56+0000) Built-in shell (msh) ???我选择的是hush啊,怎么是msh了??
enter 'help' for a list of built-in commands..

我的initrd是做成cpio格式的,内核是2.6.17, init指定的是/linuxrc,所以大家看到的日志里的父进程都是linuxrc,为什么啊为什么?

倦话 2022-07-26 10:07:59

直接用sh做init还没试,现在已经call到了sh的,就是不知道shell为什么没起来,我先检查一下busybox中shell的配置,稍后再尝试用sh做init,我这boot loader比较烂,不支持配置内核参数

长途伴 2022-07-26 09:39:10

直接用sh做init也不?

伴梦长久 2022-07-26 09:30:22

busybox中shell选的是ash,busybox生成initrd的时候建立了/bin/sh->/bin/busybox和/bin/ash->/bin/busybox, 对于sh和ash busybox不能自动关联?那要建/bin/sh->/bin/ash->/bin/busybox?
我先把shell指定成了ash, 跑到ash的时候提示
ash start...
Please press Enter to activate this console
然后按回车,日志就显示
Dec 21 17:00:17 uclibc daemon.info linuxrc: Starting pid 151, console /dev/console
Dec 21 17:00:17 uclibc user.warn kernel: do_execve(/bin/ash) success return:0
Dec 21 17:00:17 uclibc daemon.info linuxrcrocess '/bin/ash' (pid 151) exited. Scheduling it for restart..

[ 本帖最后由 liliaoyuan 于 2006-8-9 09:28 编辑 ]

心的憧憬 2022-07-26 03:52:02

用 init=/bin/sh 呢
/bin/sh 是不是 /bin/busybox 的连接?
busybox 中有没有选择默认的 shell? 没选的话是没有 sh 的.

[ 本帖最后由 connet 于 2006-8-9 09:07 编辑 ]

你げ笑在眉眼 2022-07-25 17:34:01

把busybox编译成静态的了,现象和原来一样,看来和动态连接库没多少关系了,然后又把inittab的getty去掉了,直接起了个shell,操作方式是在inittab里加了行“::askfirst:/bin/sh”,把原来的“#ttyAM0::respawn:/sbin/getty -L ttyAM0 38400 vt100”注销了,在inittab中把/var/log/message打印了出来,用的是"ttyAM0::respawn:/usr/bin/tail -f /var/log/messages",所以里面好多信息重复了,一个是由printk输出的,一个是进入/var/log/message后tail出来的, 启动的整个信息如下

Freeing init memory: 76K
check ramdisk_execute_command:/linuxrc
do_execve(/linuxrc) success return:0
do_execve(/bin/mount) success return:0
do_execve(/bin/mount) success return:0
do_execve(/bin/mount) success return:0
do_execve(/bin/hostname) success return:0
do_execve(/sbin/ifconfig) success return:0
do_execve(/sbin/route) success return:0
do_execve(/etc/init.d/rcS) success return:0
do_execve(/bin/touch) success return:0
do_execve(/sbin/hotplug), return:-2
do_execve(/sbin/hotplug), return:-2
do_execve(/sbin/syslogd) success return:0
do_execve(/sbin/klogd) success return:0
do_execve(/sbin/hotplug), return:-2
do_execve(/sbin/hotplug), return:-2
do_execve(/sbin/getty) success return:0

Please press Enter to activate this console. do_execve(/sbin/getty) success return:0
do_execve(/usr/bin/tail) success return:0   <==*****************tail 出来的 message
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.info kernel: Serial: Micrel KS8695 UART driver version: 2.6.1.0
Dec 31 17:00:12 uclibc user.info kernel: ttyAM0 at MMIO 0xf00fe000 (irq = is a KS8695
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc daemon.info linuxrc: Starting pid 149, console /dev/ttyAM0: '/usr/bin/tail'
Dec 31 17:00:12 uclibc daemon.info linuxrc: Starting pid 143, console /dev/tty1: '/sbin/getty'
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: RAMDISK driver initialized: 4 RAM disks of 16384K size 1024 blocksize
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.info kernel: mice: PS/2 mouse device common for all mice
Dec 31 17:00:12 uclibc user.info kernel: TCP bic registered
Dec 31 17:00:12 uclibc user.info kernel: NET: Registered protocol family 1
Dec 31 17:00:12 uclibc user.info kernel: Freeing init memory: 76K
Dec 31 17:00:12 uclibc user.warn kernel: check ramdisk_execute_command:/linuxrc
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/linuxrc) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/bin/mount) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/bin/mount) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/bin/mount) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/bin/hostname) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/ifconfig) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/route) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/etc/init.d/rcS) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/bin/touch) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/syslogd) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/klogd) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/hotplug), return:-2
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/getty) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/sbin/getty) success return:0
Dec 31 17:00:12 uclibc user.warn kernel: do_execve(/usr/bin/tail) success return:0

do_execve(/bin/sh) success return:0       <===***********启动了一个sh

Please press Enter to activate this console.
Dec 31 17:01:53 uclibc daemon.info linuxrc: Starting pid 152, console /dev/console: '/bin/sh' <=********又开始tail了,因为用的是tail -f,有了新的就刷出来,日志里也显示启动sh了
Dec 31 17:01:53 uclibc user.warn kernel: do_execve(/bin/sh) success return:0      <==*****启动成功了
Dec 31 17:01:53 uclibc daemon.info linuxrc: Process '/bin/sh' (pid 152) exited.  Scheduling it for restart.     <===***********瞬间又退出了, 同一秒里发生的事情,也没有错误的原因,

do_execve(/bin/sh) success return:0    <===****又开始新的一轮shell过程了

Please press Enter to activate this console.
Dec 31 17:01:55 uclibc daemon.info linuxrc: Starting pid 153, console /dev/console: '/bin/sh'
Dec 31 17:01:55 uclibc user.warn kernel: do_execve(/bin/sh) success return:0
Dec 31 17:01:55 uclibc daemon.info linuxrc: Process '/bin/sh' (pid 153) exited.  Scheduling it for restart.

三岁铭 2022-07-24 21:35:10

先用busybox 静态连接测试

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文