如何解决 内核启动 卡在 Starting kernel ...

来源:互联网 发布:知乐的肉小说有哪些 编辑:程序博客网 时间:2024/06/07 06:29

很多时候,在配置内核的时候,一不小心就造成kernel无法启动,比如出现:

。。。省略。。。Kernel image @ 0x82000000 [ 0x000000 - 0x464080 ]## Flattened Device Tree blob at 88000000   Booting using the fdt blob at 0x88000000   Using Device Tree in place at 88000000, end 880094d5Starting kernel ...

假如想解决问题,就必须知道问题出现在了哪里,因此一般通过内核启动的时候打印的信息来定位问题产生的原因。
但是如上所示,没有得到提示信息,直接悬挂在启动内核的位置上。
为解决这个提问:
这里首先想到的是打开使能early_printk,再次启动然后看是否可以得到有效的提示信息,假如仍然不可以的话,那就你直接读取缓存 ,缓存的地址为 __log_buf其地址在system.map被标记出来,我们可以找到具体的位置。具体如下:

  1. 首先去内核编译目录找到System.map文件。
  2. 接下来遭到System.map中__log_buf对应地址,执行:
cat  ./System.map | grep -n  __log_buf

如何可能得到如下结果:
64584:c0770be8 b __log_buf
此时记住c0770be8 这个数字。
3. 启动内核,内核此时卡在Starting kernel …位置。
4. 重新启动系统(注意:不要断电启动),进入UBoot命令行界面
5. 在命令行输入(数字是刚才得到的数字):

md 0xc0770be8 

6、不停的敲击回车键,直到为全为0

通过此方法就可以看到问题出现在哪个位置。

0 0