- 论坛徽章:
- 0
|
本帖最后由 疯尼克斯 于 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没有得到内核打开的标准输入输出的句柄,
哪位前辈能提供点思路,让我继续下去。
先谢过!
|
|