.. 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()`` 调用,并在失败时通过è¿ä»£ **所有** 结果æ¥è®°å½•一切 (éžå¸¸é‡è¦çš„å¯ç”¨æ€§ä¿®å¤ï¼‰ã€‚ - 试ç€ä½¿å®žçŽ°æœ¬èº«åœ¨ä¸€èˆ¬æƒ…å†µä¸‹æ›´æœ‰å¸®åŠ©ï¼Œä¾‹å¦‚åœ¨å—å½±å“的地方æä¾›é¢å¤–的错误消æ¯ã€‚