xref: /openbmc/linux/Documentation/translations/zh_TW/admin-guide/init.rst (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
176f1fc26SHu Haowen.. SPDX-License-Identifier: GPL-2.0
276f1fc26SHu Haowen
376f1fc26SHu Haowen.. include:: ../disclaimer-zh_TW.rst
476f1fc26SHu Haowen
576f1fc26SHu Haowen:Original: :doc:`../../../admin-guide/init`
676f1fc26SHu Haowen
776f1fc26SHu Haowen:譯者:
876f1fc26SHu Haowen
976f1fc26SHu Haowen 吳想成 Wu XiangCheng <bobwxc@email.cn>
10*44a54e25SHu Haowen 胡皓文 Hu Haowen <src.res.211@gmail.com>
1176f1fc26SHu Haowen
1276f1fc26SHu Haowen解釋「No working init found.」啓動掛起消息
1376f1fc26SHu Haowen==========================================
1476f1fc26SHu Haowen
1576f1fc26SHu Haowen:作者:
1676f1fc26SHu Haowen
1776f1fc26SHu Haowen Andreas Mohr <andi at lisas period de>
1876f1fc26SHu Haowen
1976f1fc26SHu Haowen Cristian Souza <cristianmsbr at gmail period com>
2076f1fc26SHu Haowen
2176f1fc26SHu Haowen本文檔提供了加載初始化二進位(init binary)失敗的一些高層級原因(大致按執行
2276f1fc26SHu Haowen順序列出)。
2376f1fc26SHu Haowen
2476f1fc26SHu Haowen1) **無法掛載根文件系統Unable to mount root FS** :請設置「debug」內核參數(在
2576f1fc26SHu Haowen   引導加載程序bootloader配置文件或CONFIG_CMDLINE)以獲取更詳細的內核消息。
2676f1fc26SHu Haowen
2776f1fc26SHu Haowen2) **初始化二進位不存在於根文件系統上init binary doesn't exist on rootfs** :
2876f1fc26SHu Haowen   確保您的根文件系統類型正確(並且 ``root=`` 內核參數指向正確的分區);擁有
2976f1fc26SHu Haowen   所需的驅動程序,例如SCSI或USB等存儲硬體;文件系統(ext3、jffs2等)是內建的
3076f1fc26SHu Haowen   (或者作爲模塊由initrd預加載)。
3176f1fc26SHu Haowen
3276f1fc26SHu Haowen3) **控制台設備損壞Broken console device** : ``console= setup`` 中可能存在
3376f1fc26SHu Haowen   衝突 --> 初始控制台不可用(initial console unavailable)。例如,由於串行
3476f1fc26SHu Haowen   IRQ問題(如缺少基於中斷的配置)導致的某些串行控制台不可靠。嘗試使用不同的
3576f1fc26SHu Haowen   ``console= device`` 或像 ``netconsole=`` 。
3676f1fc26SHu Haowen
3776f1fc26SHu Haowen4) **二進位存在但依賴項不可用Binary exists but dependencies not available** :
3876f1fc26SHu Haowen   例如初始化二進位的必需庫依賴項,像 ``/lib/ld-linux.so.2`` 丟失或損壞。使用
3976f1fc26SHu Haowen   ``readelf -d <INIT>|grep NEEDED`` 找出需要哪些庫。
4076f1fc26SHu Haowen
4176f1fc26SHu Haowen5) **無法加載二進位Binary cannot be loaded** :請確保二進位的體系結構與您的
4276f1fc26SHu Haowen   硬體匹配。例如i386不匹配x86_64,或者嘗試在ARM硬體上加載x86。如果您嘗試在
4376f1fc26SHu Haowen   此處加載非二進位文件(shell腳本?),您應該確保腳本在其工作頭(shebang
4476f1fc26SHu Haowen   header)行 ``#!/...`` 中指定能正常工作的解釋器(包括其庫依賴項)。在處理
4576f1fc26SHu Haowen   腳本之前,最好先測試一個簡單的非腳本二進位文件,比如 ``/bin/sh`` ,並確認
4676f1fc26SHu Haowen   它能成功執行。要了解更多信息,請將代碼添加到 ``init/main.c`` 以顯示
4776f1fc26SHu Haowen   kernel_execve()的返回值。
4876f1fc26SHu Haowen
4976f1fc26SHu Haowen當您發現新的失敗原因時,請擴展本解釋(畢竟加載初始化二進位是一個 **關鍵** 且
5076f1fc26SHu Haowen艱難的過渡步驟,需要儘可能無痛地進行),然後向LKML提交一個補丁。
5176f1fc26SHu Haowen
5276f1fc26SHu Haowen待辦事項:
5376f1fc26SHu Haowen
5476f1fc26SHu Haowen- 通過一個可以存儲 ``kernel_execve()`` 結果值的結構體數組實現各種
5576f1fc26SHu Haowen  ``run_init_process()`` 調用,並在失敗時通過疊代 **所有** 結果來記錄一切
5676f1fc26SHu Haowen  (非常重要的可用性修復)。
5776f1fc26SHu Haowen- 試著使實現本身在一般情況下更有幫助,例如在受影響的地方提供額外的錯誤消息。
5876f1fc26SHu Haowen
59