linux - 当软重启 Linux 内核卡在 "Uncompressing Linux... done, booting the kernel"

标签 linux linux-kernel kernel arm reboot

<分区>

我在我的自定义硬件上使用 Linux 内核 3.0.21。

  • 当我第一次启动硬件时,它会成功启动。

  • 如果我正确关闭并再次启动硬件,它会成功启动。

但是一旦系统开始运行,当我输入reboot 命令时重新启动内核并挂起

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

我不知道为什么我在每次软重启时都会遇到这个问题。为避免这种情况,我需要硬重置(关闭电源并再次打开电源)。

为什么我会遇到这个问题? 内核中是否缺少任何清理功能? 如何调试这个问题?

最佳答案

是的,这听起来像是在支持您的硬件的平台中某处您缺少一些逻辑来应对软重启。

添加清理代码并不能解决问题,因为系统可能会崩溃,然后软重启。

因此需要编写启动系统的代码来应对系统被软重启。

要进行调试,您首先需要找出内核在软重启期间卡住的位置。最简单的方法是使用硬件调试器。

另一种选择是通读启动代码并尝试找出任何可能依赖于冷重启才能工作的区域,例如。期望 TLB 在启动或类似时被清除的代码。

关于linux - 当软重启 Linux 内核卡在 "Uncompressing Linux... done, booting the kernel",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12190930/

相关文章:

linux - linux下如何杀死同一目录下的程序?

linux-kernel - 内核卡住 : How to debug it?

linux - 为什么内核使用高逻辑地址

linux - 安装驱动程序会增加 linux 内核内存占用吗?

c - 为什么某些内核操作不能用 C 编写

python - 绑定(bind)调用中发生了什么? (Python+套接字+strace)

parallel-processing - openCL 光线追踪和分支内核代码问题

python - 使用适用于 Azure 的 Python SDK 时发生 HTTP header 错误

c - Linux内核列表中的WRITE_ONCE

c - linux下C多线程程序如何有效锁定普通变量