BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #8546同步于 2010/5/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

内核启动遇到问题了,请教~~~已解决

media
2010/5/17镜像同步6 回复
从SDRAM启动Linux内核,同时配置Linux命令行参数使其通过NFS挂载根文件系统 出现下面这个错误,内核起不来 request_module: runaway loop modprobe binfmt-0000 这个是什么原因啊 【原因】uboot配置根文件系统挂载目录时,目录写错了。。。
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
hobby机器人#1 · 2010/5/18
LZ最好把软硬件环境描述一下,然后把完整的日志贴上来分析一下 你这个报错直接在内核代码里也能找到 路径kernel/kmod.c 106行(request_module函数内) 以下是截取的部分内容 ===========分割线开始========== /* If modprobe needs a service that is in a module, we get a recursive * loop. Limit the number of running kmod threads to max_threads/2 or * MAX_KMOD_CONCURRENT, whichever is the smaller. A cleaner method * would be to run the parents of this process, counting how many times * kmod was invoked. That would mean accessing the internals of the * process tables to get the command line, proc_pid_cmdline is static * and it is not worth changing the proc code just to handle this case. * KAO. * * "trace the ppid" is simple, but will fail if someone's * parent exits. I think this is as good as it gets. --RR */ max_modprobes = min(max_threads/2, MAX_KMOD_CONCURRENT); atomic_inc(&kmod_concurrent); if (atomic_read(&kmod_concurrent) > max_modprobes) { /* We may be blaming an innocent here, but unlikely */ if (kmod_loop_msg++ < 5) printk(KERN_ERR "request_module: runaway loop modprobe %s\n", module_name); atomic_dec(&kmod_concurrent); return -ENOMEM; } ===========分割线完毕========== 【 在 media 的大作中提到: 】 : 从SDRAM启动Linux内核,同时配置Linux命令行参数使其通过NFS挂载根文件系统 : 出现下面这个错误,内核起不来 : request_module: runaway loop modprobe binfmt-0000 : ...................
media机器人#2 · 2010/5/19
硬件是君正的4750,就是试着配下开发环境,板子上已经有Linux2.6.24的内核,根文件系统想通过NFS挂载,后来查到是由于根文件系统的位置,在uboot启动时设错了。。。 另外大牛好想知道很多调试,检错的方法, kernel/kmod.c是kernel 出错分析的文件???? 【 在 hobby 的大作中提到: 】 : LZ最好把软硬件环境描述一下,然后把完整的日志贴上来分析一下 : 你这个报错直接在内核代码里也能找到 : 路径kernel/kmod.c 106行(request_module函数内) : ...................
hobby机器人#3 · 2010/5/20
1、看来现在问题是解决了吧?是uboot启动内核的配置不对? 如果确定了问题原因,更新一下标题和主贴吧(已解决、问题原因和解决方法),一来总结一下能让自己的思路更清晰也加深印象,二来也能为碰到类似问题的同学提供帮助 2、如果是uboot环境变量设置的问题,我建议你再好好看看,其中不少环境变量的设置对uboot运行特别是引导内核有很重要的作用。有两个文档推荐:一个是uboot根目录下的readme,另外一个是linux源码中的documentation/kernel-parameter.txt。 PS:uboot,kernel代码等都带着大量的文档,进行移植或开发前有必要浏览一下其中的内容,特别是readme文件。 3、调试这个问题好大。。。 简单说来,我常这么做 分析打印信息=>有问题的地方到google里面搜索 或 在linux内核代码中搜索 因为普遍的问题google都能找到而且一般有直接的解决方法,而内核代码会给你最准确的答案(但是往往有点儿晦涩)。所以这两个方法结合使用 如果能初步定位问题,做做更改后(例如改uboot环境变量、调整内核编译配置)再重复上面步骤直到问题解决 如果定位不了问题,那就想办法或者更多的调试信息(例如打开代码中原有的调试开关、自己添加打印,利用调试器进行调试等),然后再重复上面步骤 这些东西一下两下也说不清,你可以从实际问题着手,慢慢学习体会。而且,论坛作为大家讨论的地方,如果是技术性讨论,比较适合的话题是具体的问题,如果问题太泛太大反而让人觉得不好说 当然,作为初学者,我觉得有些东西概念性的掌握和讨论下也是挺好的 :) 【 在 media 的大作中提到: 】 : 硬件是君正的4750,就是试着配下开发环境,板子上已经有Linux2.6.24的内核,根文件系统想通过NFS挂载,后来查到是由于根文件系统的位置,在uboot启动时设错了。。。 : 另外大牛好想知道很多调试,检错的方法, kernel/kmod.c是kernel 出错分析的文件????
hobby机器人#4 · 2010/5/20
忘了说,这个文件是个普通的kernel代码源文件 之所以找到这个文件,就是看你提的那句信息“request_module: runaway loop modprobe binfmt-0000 ” 这个信息就是这个文件里面的相应函数输出的 【 在 media 的大作中提到: 】 : 硬件是君正的4750,就是试着配下开发环境,板子上已经有Linux2.6.24的内核,根文件系统想通过NFS挂载,后来查到是由于根文件系统的位置,在uboot启动时设错了。。。 : 另外大牛好想知道很多调试,检错的方法, kernel/kmod.c是kernel 出错分析的文件????
media机器人#5 · 2010/5/22
赞,回答这么细致,谢谢。。 【 在 hobby 的大作中提到: 】 : 1、看来现在问题是解决了吧?是uboot启动内核的配置不对? : 如果确定了问题原因,更新一下标题和主贴吧(已解决、问题原因和解决方法),一来总结一下能让自己的思路更清晰也加深印象,二来也能为碰到类似问题的同学提供帮助 : 2、如果是uboot环境变量设置的问题,我建议你再好好看看,其中不少环境变量的设置对uboot运行特别是引导内核有很重要的作用。有两个文档推荐:一个是uboot根目录下的readme,另外一个是linux源码中的documentation/kernel-parameter.txt。 : ...................
hobby机器人#6 · 2010/5/24
呵呵 不客气 多来论坛和大家交流,也是一种有效的学习途径嘛~ 【 在 media 的大作中提到: 】 : 赞,回答这么细致,谢谢。。