自定义硬件导致 Linux 启动在 PC 上的 initrd 之后挂起
我们创建了一些使用 PCIe 2.0 的定制硬件。该硬件可与运行 CentOS Linux 5.4 的 HP DL360 G7 服务器配合使用。因此,在 HP 服务器上,Linux 能够很好地冷启动、识别卡并与我们的驱动程序交互。然而,当我们尝试将该卡插入普通的 Dell T3500 PC 时,Linux 无法启动。它在 initrd 之后挂起,没有崩溃、调试或错误消息。所以我的问题是,有哪些工具或设置可以帮助调试这个问题?我们想知道为什么引导过程无法通过 initrd。
We've created some custom hardware that uses PCIe 2.0. This hardware works with an HP DL360 G7 server with CentOS Linux 5.4. So on the HP server Linux is able to cold-boot just fine, recognize the card, and interface with our driver. However, when we try plugging the card into a regular Dell T3500 PC Linux is unable to boot. It hangs after initrd with no crash, debug, or error messages. So my question is, what tools or settings are available to help debug this problem? We want to know why the boot process can't get past initrd.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
从 Live CD(例如 Knoppix)启动并使用可用的实用程序来诊断问题(dmesg、dconf、lspci 等)。很可能您的驱动程序与戴尔上的硬件之间存在冲突。
Boot from a live CD such as Knoppix and use the utilities available to you there to diagnose the problem (dmesg, dconf, lspci, etc). It could very well be that there are conflicts between your driver and hardware that's on the Dell.
从您的描述中不清楚启动是在安装 initrd 时挂起还是在执行 initrd 中的内容(init 脚本等)时挂起。如果是后者,我通过打开 initrd 并更改其中的 init 脚本以立即进入 bash 提示符来诊断类似的问题。然后重新归档 initrd,您应该会直接启动到提示符。从那里您可以手动执行 initrd 初始化脚本中的每个命令,直到找到罪魁祸首。
Its not clear from your description if the boot is hanging while mounting initrd or if its hanging while executing the contents in the initrd (init scripts, etc). If the latter,I've diagnosed similar problems by cracking open the initrd and altering the init scripts inside it to just immediately drop to a bash prompt. Then re-archive the initrd, and you should boot right to a prompt. From there you can manually execute each command in the initrd init scripts until you find the culprit.
KGDB 内核调试器允许您通过串行端口将发生故障的计算机连接到另一台计算机,并在第二台计算机上使用 gdb 来调试第一台计算机上的内核。
The KGDB kernel debugger allows you to connect the failing machine to another over a serial port, and use
gdb
on the second machine to debug the kernel on the first.尝试删除相关的戴尔驱动程序,
执行
tar -cf
进行备份,然后删除所有这些 ko 文件。Try removing the related dell drivers
do a
tar -cf
to back them up, then delete all these ko files.