.. SPDX-License-Identifier: GPL-2.0 .. include:: ../disclaimer-zh_TW.rst :Original: :doc:`../../../admin-guide/init` :è¯è€…: å³æƒ³æˆ Wu XiangCheng <bobwxc@email.cn> 胡皓文 Hu Haowen <src.res@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()`` 調用,並在失敗時通éŽç–Šä»£ **所有** çµæžœä¾†è¨˜éŒ„一切 (éžå¸¸é‡è¦çš„å¯ç”¨æ€§ä¿®å¾©ï¼‰ã€‚ - 試著使實ç¾æœ¬èº«åœ¨ä¸€èˆ¬æƒ…æ³ä¸‹æ›´æœ‰å¹«åŠ©ï¼Œä¾‹å¦‚在å—影響的地方æä¾›é¡å¤–的錯誤消æ¯ã€‚