免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2974 | 回复: 3
打印 上一主题 下一主题

[内核入门] 内核启动/init后,init printf无法打印到串口,但是内核里printk可以打印 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-12 09:34 |只看该作者 |倒序浏览
本帖最后由 疯尼克斯 于 2014-07-12 09:48 编辑

各位早,有个问题想请教下。
最近在调试一块新板子,环境:cpu:armA9    os: android内核 加 非android自带的文件系统,       可执行文件  /init  软链接到--->/bin/busybox

跟踪内核发现
   start_kernel
      >>>>kernel_init
   在启动init之前内核也去打开了/dev/console  作为标准输入,标准输出和标准错误
        /* Open the /dev/console on the rootfs, this should never fail */
        if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
                printk(KERN_WARNING "Warning: unable to open an initial console.\n");
        (void) sys_dup(0);
        (void) sys_dup(0);
             >>> init_post
                             /*ramdisk_execute_command="/init"  */
                             if (ramdisk_execute_command) {
                                 run_init_process(ramdisk_execute_command);
                                 printk(KERN_WARNING "Failed to execute %s\n",
                                     ramdisk_execute_command);
                              }
                           1.此处没有报错,说明init进程已经启动成功,但是始终进不了shell
                           2.init也去读取了/etc/inittab配置文件(我改配置文件让init去启动一个不存在的文件,系统调用里面会报错,通过printk打印出来的。)
                           3.我修改init的代码,在其main函数入口出,加 printf 打印,没有任何输出。但是在此期间内核的打印没有问题。

所以就感觉,init没有得到内核打开的标准输入输出的句柄,
哪位前辈能提供点思路,让我继续下去。
先谢过!
                             

论坛徽章:
0
2 [报告]
发表于 2014-07-12 10:24 |只看该作者
本帖最后由 黎明748 于 2014-07-12 10:25 编辑

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
3 [报告]
发表于 2014-07-12 13:19 |只看该作者
本帖最后由 arm-linux-gcc 于 2014-07-12 13:20 编辑

root@luffy:/home/hui/qi# ll /proc/1/fd/0 /proc/1/fd/1 /proc/1/fd/2
lrwx------ 1 root root 64  7月 12 13:17 /proc/1/fd/0 -> /dev/null
lrwx------ 1 root root 64  7月 12 13:17 /proc/1/fd/1 -> /dev/null
lrwx------ 1 root root 64  7月 12 13:17 /proc/1/fd/2 -> /dev/null
root@luffy:/home/hui/qi#

论坛徽章:
0
4 [报告]
发表于 2014-07-13 11:12 |只看该作者
回复 3# arm-linux-gcc

无法进入shell所以无法查看这些信息,还是感谢您提供的思路,
昨天经过几次比对测试发现打包的ramdisk文件系统里面不能包含 /dev/console  把这个去掉 就好了。具体原因还没找到,


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP