电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

内核引导失败的常见问题解决办法VIP免费

内核引导失败的常见问题解决办法_第1页
1/8
内核引导失败的常见问题解决办法_第2页
2/8
内核引导失败的常见问题解决办法_第3页
3/8
内核引导常见问题Kernel-CommonProblemsBootingLinux作者:卢浩时间:2012.3.9转载请注明出处嵌入式爱好者开发群:122879839不少用户在尝试引导内核的时候,遇到了一些意外,内核的引导在某一点突然中断,并且不能进行下去,有时候是有个软件的bug导致的,而有时候可能是由于内核的错误的配置导致的,这篇文章是为开发者提供一些帮助来诊断为什么不能正常引导内核并且找出其中可能的原因。问题1:内核只引导到"StartingKernel...",然后串口终端就没有输出了,举个例子:##BootingkernelfromLegacyImageat80300000...ImageName:Linux-2.6.31ImageType:ARMLinuxKernelImage(uncompressed)DataSize:1750680Bytes=1.7MBLoadAddress:80008000EntryPoint:80008000VerifyingChecksum...OKLoadingKernelImage...OKOKStartingkernel...到这里,串口终端就没有再输出任何信息了.以上的串口输出信息是uboot的引导过程,至于这个startingkernel其实是uboot阶段输出最后的一句信息,这时候正准备进入内核引导。这个错误一般由于错误的配置debug串口导致的,你可以检验下你内核配置的时候,你所配置的串口输出端口是多少。打个比方,你用的是TI的omap3的beagle-board板子,其中UART3被用来输入调试信息,那么你打开linux-2.6.37(打个比方是这个版本的内核)下的.config文件,你会看到以下信息:#CONFIG_OMAP_LL_DEBUG_UART1isnotset#CONFIG_OMAP_LL_DEBUG_UART2isnotsetCONFIG_OMAP_LL_DEBUG_UART3=y你会看到串口3是被设置为调试的串口。现在我们需要修改串口为默认的串口,在makemenuconfig下面,"SystemType-->TIOMAPImplementations-->Low-leveldebugconsoleUART".选择这个,这个就是默认用来调试的串口,修改完之后你应该就可以看到串口引导内核的输出信息了。问题2:内核只引导到""bootingthekernel",然后串口终端就没有输出了,举个例子:##BootingkernelfromLegacyImageat80300000...ImageName:Linux-2.6.31ImageType:ARMLinuxKernelImage(uncompressed)DataSize:1750680Bytes=1.7MBLoadAddress:80008000EntryPoint:80008000VerifyingChecksum...OKLoadingKernelImage...OKOKStartingkernel...UncompressingLinux..............................................................................................................done,bootingthekernel.这种情况的发生可能有好几个原因,以下是常见的一些原因:原因1:串口控制台参数设置不正确,打个比方你用的是TI的omap3的beagle-board板子,其中串口选择的是UART3,那么串口的配置应该是115200波特率,数据位为8,校验位为0(none),流控制为0(none)。因此,如果你的设置是正确的,你应该能够看到类似以下的信息:OMAP3beagleboard.org#printenvbootargsbootargs=console=ttyS2,115200n8root=/dev/mmcblk0p2rwrootwait这个要区分大小写,确定你输入是正确的,而且没有空格。在linux-2.6.36及更新的版本里,我们使用ttyO2来代替ttyS2,这是大写字母O,不是阿拉伯数字0.为了避免这种错误,你可以使用TISDK包里面的/ezsdk/bin里面的脚本来设置env变量。原因2:不匹配的uboot和kernel的机器号这里我就不用TI的翻译的了,我前阵子刚写过一篇关于机器号的文章,直接copy过来就是了,大体意思和TI的是差不多的。我以前写过一篇关于设置uboot和kernel的机器号对应的问题。今天我才发现一个比较简单的方法。一般可以完全不用那么麻烦改源码什么的。当你uboot起来之后,在uboot状态下。打个比方啊setenvmachid7d9然后saveenv然后重启,我这里截个图OK了,我们会发现刚才输入的那个机器号是错的,系统并且提示我正确的可用的id号是af0.然后再输入setenvmachidaf0saveenv重启如图好了...原因3:软件的bug如果以上的办法没能帮助你解决问题,那么你就要在内核的源码里做一些工作了,请在内核源码中使能CONFIG_DEBUG_LL,来确定内核在哪里引导失败了,这个会打印更多的信息来帮助你确定内核到底在哪里出了问题。如果你没能取得进一步的发现,那么更多的信息可以帮助其他开发者来挖掘这个问题。问题3:在内核引导成功之后没有信息输出。举个例...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

内核引导失败的常见问题解决办法

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部