original_kernel/Documentation/translations/zh_TW/admin-guide/init.rst

59 lines
2.9 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.

.. SPDX-License-Identifier: GPL-2.0
.. include:: ../disclaimer-zh_TW.rst
:Original: :doc:`../../../admin-guide/init`
:譯者:
吳想成 Wu XiangCheng <bobwxc@email.cn>
胡皓文 Hu Haowen <2023002089@link.tyut.edu.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()`` 調用,並在失敗時通過迭代 **所有** 結果來記錄一切
(非常重要的可用性修復)。
- 試着使實現本身在一般情況下更有幫助,例如在受影響的地方提供額外的錯誤消息。