linux/linux-5.18.11/Documentation/translations/zh_CN/admin-guide/init.rst

55 lines
2.8 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.. include:: ../disclaimer-zh_CN.rst
:Original: :doc:`../../../admin-guide/init`
:译者:
吴想成 Wu XiangCheng <bobwxc@email.cn>
解释“No working init found.”启动挂起消息
=========================================
:作者:
Andreas Mohr <andi at lisas period de>
Cristian Souza <cristianmsbr at gmail period com>
本文档提供了加载初始化二进制init binary失败的一些高层级原因大致按执行
顺序列出)。
1) **无法挂载根文件系统Unable to mount root FS** 请设置“debug”内核参数
引导加载程序bootloader配置文件或CONFIG_CMDLINE以获取更详细的内核消息。
2) **初始化二进制不存在于根文件系统上init binary doesn't exist on rootfs**
确保您的根文件系统类型正确(并且 ``root=`` 内核参数指向正确的分区);拥有
所需的驱动程序例如SCSI或USB等存储硬件文件系统ext3、jffs2等是内建的
或者作为模块由initrd预加载
3) **控制台设备损坏Broken console device** ``console= setup`` 中可能存在
冲突 --> 初始控制台不可用initial console unavailable。例如由于串行
IRQ问题如缺少基于中断的配置导致的某些串行控制台不可靠。尝试使用不同的
``console= device`` 或像 ``netconsole=``
4) **二进制存在但依赖项不可用Binary exists but dependencies not available**
例如初始化二进制的必需库依赖项,像 ``/lib/ld-linux.so.2`` 丢失或损坏。使用
``readelf -d <INIT>|grep NEEDED`` 找出需要哪些库。
5) **无法加载二进制Binary cannot be loaded** :请确保二进制的体系结构与您的
硬件匹配。例如i386不匹配x86_64或者尝试在ARM硬件上加载x86。如果您尝试在
此处加载非二进制文件shell脚本您应该确保脚本在其工作头shebang
header``#!/...`` 中指定能正常工作的解释器(包括其库依赖项)。在处理
脚本之前,最好先测试一个简单的非脚本二进制文件,比如 ``/bin/sh`` ,并确认
它能成功执行。要了解更多信息,请将代码添加到 ``init/main.c`` 以显示
kernel_execve()的返回值。
当您发现新的失败原因时,请扩展本解释(毕竟加载初始化二进制是一个 **关键**
艰难的过渡步骤需要尽可能无痛地进行然后向LKML提交一个补丁。
待办事项:
- 通过一个可以存储 ``kernel_execve()`` 结果值的结构体数组实现各种
``run_init_process()`` 调用,并在失败时通过迭代 **所有** 结果来记录一切
(非常重要的可用性修复)。
- 试着使实现本身在一般情况下更有帮助,例如在受影响的地方提供额外的错误消息。