基于龙芯服务器的Linux操作系统崩溃转储的处理方法技术方案

技术编号:8323310 阅读:378 留言:0更新日期:2013-02-14 00:25
本发明专利技术公开了一种基于龙芯服务器的Linux操作系统崩溃转储的处理方法,该方法包括:龙芯服务器的输入输出系统的内核引导程序传递参数并启动Linux系统;开启Linux系统的崩溃转储服务,其将捕捉内核的映像文件和启动参数加载至存储空间;在系统内核发生崩溃时,执行该系统的处理器控制捕捉内核启动,并将发生崩溃的内核的内存镜像存储为转储文件;重新启动Linux系统,对转储文件进行分析。本发明专利技术在对运行在龙芯服务器上的Linux操作系统的内核进行编译时,加入了对崩溃转储服务和龙芯服务器的MIPS架构的支持,使运行在国产MIPS构架的Linux系统在崩溃时实现内核崩溃转储,提高了开发人员进行内核调试的效率和实用性。

【技术实现步骤摘要】

本专利技术涉及操作系统
,尤其涉及一种。
技术介绍
随着国家对自主可控的不断重视,国产MIPS构架的龙芯处理器得到越来越深入的推广。解决其软件支持能力的问题显得越来越重要,特别是支持在其上运行Linux操作系统。然而,目前虽然已经支持Linux操作系统,但在其上运行的Linux系统在崩溃时的内核崩溃转储功能却仍未实现,该功能的缺失导致在MIPS架构的龙芯处理器上运行的Linux系统出现崩溃时,内核开发人员无法使用应用工具分析崩溃时的内存的现场信息来 定位系统崩溃的原因,在没有系统崩溃时的现场信息的情况下,内核开发人员找出并解决系统的崩溃原因将是十分困难的。虽然目前运行在X86、Powerpc、Arm、Alpha等体系架构下的Linux系统已经支持系统崩溃时的崩溃转储服务(简称kdump服务),但由于MIPS体系架构与其它几种体系结构之间有很多不同之处,因此在Linux系统发生崩溃时,就无法实现崩溃转储功能。
技术实现思路
本专利技术所要解决的技术问题之一是需要提供一种。为了解决上述技术问题,本专利技术提供了一种,该方法包括在所述龙芯服务器加电开机时,所述龙芯服务器的输入输出系统的内核引导程序传递参数并启动所述Linux操作系统的系统内核,其中,所述参数包括用于为所述Linux操作系统的捕捉内核配置存储空间的参数;开启所述Linux操作系统的崩溃转储服务,所述崩溃转储服务将所述捕捉内核的映像文件和启动参数加载至所述存储空间中;在所述Linux操作系统的系统内核发生崩溃时,执行所述Linux操作系统的处理器控制所述捕捉内核启动,并将发生崩溃的所述系统内核的内存镜像存储为转储文件;重新启动所述龙芯服务器上的Linux操作系统的系统内核,对所述转储文件进行分析,以查找到前一次所述Linux操作系统的系统内核发生崩溃的原因,其中,运行在所述龙芯服务器上的所述Linux操作系统的系统内核支持所述崩溃转储服务,所述Linux操作系统的捕捉内核支持所述龙芯服务器的MIPS架构。根据本专利技术另一方面的处理方法,在对所述Linux操作系统的系统内核进行编译时,在内核选项中选择 CONFIG_KEXEC_CRASH、C0NFIG_KEXEC、C0NFIG_SYSFS 和 C0NFIG_DEBUG_INF0选项,以使得所述Linux操作系统的系统内核支持所述崩溃转储服务。根据本专利技术另一方面的处理方法,在对所述Linux操作系统的捕捉内核进行编译时,在内核选项中去掉C0NFIG_NUMA和C0NFIG_SMP选项,加上CONFIG_CRASH_DUMP选项,以使得所述Linux操作系统的捕捉内核支持所述龙芯服务器的MIPS架构。根据本专利技术另一方面的处理方法,所述崩溃转储服务将所述捕捉内核的映像文件和启动参数加载至所述存储空间中的步骤中,进一步包括以下步骤所述崩溃转储服务程序执行/etc/in it. d/kdump脚本;所述/etc/init. d/kdump脚本执行kexec工具的kexec命令,将所述捕捉内核的映像文件和启动参数加载至所述存储空间中,其中,所述kexec命令包括四个kexec段,这四个段分别为crash kernel的映像文件段;传递给crash kernel命令行信息段!standard kernel内存信息内容、vmcoreinfo文件、各个处理器信息段;存放备份数据的备份区域段; 其中,对kexec工具中获取当前运行的操作系统的内存区域列表部分进行修改,并且根据所述龙芯服务器的MIPS架构的内存物理地址布局图对所述四个kexec段的起始地址进行修改。根据本专利技术另一方面的处理方法,在所述Linux操作系统的系统内核发生崩溃时,执行所述Linux操作系统的处理器控制所述捕捉内核启动的步骤中进一步包括以下步骤,所述Linux操作系统进入所述系统内核的崩溃处理程序中,所述处理器控制所述龙芯服务器上的其他处理器停止操作;所述处理器为启动所述捕捉内核准备命令行参数和环境变量参数;所述处理器基于所述命令行参数和所述环境变量参数,跳转至所述捕捉内核的首地址处以启动所述捕捉内核。根据本专利技术另一方面的处理方法,执行崩溃处理程序的处理器通过向所述龙芯服务器上的其他处理器发送处理器间中断信号,使得所述龙芯服务器上的其他处理器停止操作。根据本专利技术另一方面的处理方法,在所述处理器为启动所述捕捉内核准备命令行参数和环境变量参数的步骤中,所述处理器将所述环境变量参数和所述kexec命令加载所述捕捉内核的映像文件时传送的命令行参数拷贝到head, s中预留的内存空间中,然后对用于表示已准备启动所述捕捉内核的状态标志置位。根据本专利技术另一方面的处理方法,将发生崩溃的所述系统内核的内存镜像存储为转储文件的步骤中,进一步包括以下步骤,在所述捕捉内核启动后,执行vmcore_init初始化函数;所述vmcore_init初始化函数判断所述命令行参数中的elfcorehdr参数值是否为 ELFCORE_ADDR_ERR 或 ELFCORE_ADDR_MAX,若判断结果为所述elfcorehdr参数值既不是ELFCORE_ADDR_ERR也不是ELFC0RE_ADDR_MAX,则创建/proc/vmcore文件,并将发生崩溃的所述系统内核的内存镜像以ELF文件格式存储在所述/proc/vmcore文件中;开启崩溃转储服务程序以调用makedumpfile工具的makedumpfile命令,将保存了发生崩溃的所述系统内核的内存镜像的/proc/vmcore文件生成dump文件以作为转储文件。根据本专利技术另一方面的处理方法,在所述makedumpfile工具中添加了针对所述龙芯服务器的MIPS架构的接口函数,其中包括3个接口,分别为获取物理基地址接口、获取崩溃内核中非连续内存区链表第一个元素的地址和非连续内存区的起始地址接口、读取崩溃内核信息时的虚拟地址到物理地址的转换接口。根据本专利技术另一方面的处理方法,通过crash工具对所述转储文件进行分析,以查找到前一次所述Linux操作系统的系统内核发生崩溃的原因,其中,在所述crash工具中添加了针对所述龙芯服务器的MIPS架构的接口函数,其中包括3个接口,分别为将崩溃内核的虚拟地址转换为物理地址接口、对MIPS架构机器所有的硬件进行初始化设置接口、获取指定进程的页目录项指针接口。 与现有技术相比,本专利技术的一个或多个实施例可以具有如下优点本专利技术方法在对运行在龙芯服务器上的Linux操作系统的系统内核和捕捉内核编译时,加入了对崩溃转储服务和龙芯服务器的MIPS架构的支持,使运行在国产MIPS构架的Linux操作系统在系统崩溃时实现内核崩溃转储,然后使用工具分析系统崩溃时转储的现场信息能够使内核开发人员快速准确的定位系统崩溃的原因,提高了内核开发人员进行内核调试的效率和实用性。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例共同用于解释本专利技术,并不构成对本专利技术的限制。在附图中图I是根据本文档来自技高网...

【技术保护点】
一种基于龙芯服务器的Linux操作系统崩溃转储的处理方法,其特征在于,包括:在所述龙芯服务器加电开机时,所述龙芯服务器的输入输出系统的内核引导程序传递参数并启动所述Linux操作系统的系统内核,其中,所述参数包括用于为所述Linux操作系统的捕捉内核配置存储空间的参数;开启所述Linux操作系统的崩溃转储服务,所述崩溃转储服务将所述捕捉内核的映像文件和启动参数加载至所述存储空间中;在所述Linux操作系统的系统内核发生崩溃时,执行所述Linux操作系统的处理器控制所述捕捉内核启动,并将发生崩溃的所述系统内核的内存镜像存储为转储文件;重新启动所述龙芯服务器上的Linux操作系统的系统内核,对所述转储文件进行分析,以查找到前一次所述Linux操作系统的系统内核发生崩溃的原因,其中,运行在所述龙芯服务器上的所述Linux操作系统的系统内核支持所述崩溃转储服务,所述Linux操作系统的捕捉内核支持所述龙芯服务器的MIPS架构。

【技术特征摘要】
1.一种基于龙芯服务器的Linux操作系统崩溃转储的处理方法,其特征在于,包括在所述龙芯服务器加电开机时,所述龙芯服务器的输入输出系统的内核引导程序传递参数并启动所述Linux操作系统的系统内核,其中,所述参数包括用于为所述Linux操作系统的捕捉内核配置存储空间的参数;开启所述Linux操作系统的崩溃转储服务,所述崩溃转储服务将所述捕捉内核的映像文件和启动参数加载至所述存储空间中;在所述Linux操作系统的系统内核发生崩溃时,执行所述Linux操作系统的处理器控制所述捕捉内核启动,并将发生崩溃的所述系统内核的内存镜像存储为转储文件;重新启动所述龙芯服务器上的Linux操作系统的系统内核,对所述转储文件进行分析,以查找到前一次所述Linux操作系统的系统内核发生崩溃的原因,其中,运行在所述龙芯服务器上的所述Linux操作系统的系统内核支持所述崩溃转储服务,所述Linux操作系统的捕捉内核支持所述龙芯服务器的MIPS架构。2.根据权利要求I所述的处理方法,其特征在于,在对所述Linux操作系统的系统内核进行编译时,在内核选项中选择C0NFIG_KEXEC_CRASH、C0NFIG_KEXEC、C0NFIG_SYSFS 和 C0NFIG_DEBUG_INF0 选项,以使得所述 Linux 操作系统的系统内核支持所述崩溃转储服务。3.根据权利要求2所述的处理方法,其特征在于,在对所述Linux操作系统的捕捉内核进行编译时,在内核选项中去掉C0NFIG_NUMA和C0NFIG_SMP选项,加上CONFIG_CRASH_DUMP选项,以使得所述Linux操作系统的捕捉内核支持所述龙芯服务器的MIPS架构。4.根据权利要求3所述的处理方法,其特征在于,所述崩溃转储服务将所述捕捉内核的映像文件和启动参数加载至所述存储空间中的步骤中,进一步包括以下步骤所述崩溃转储服务程序执行/etc/init. d/kdump脚本;所述/etc/init. d/kdump脚本执行kexec工具的kexec命令,将所述捕捉内核的映像文件和启动参数加载至所述存储空间中,其中,所述kexec命令包括四个kexec段,这四个段分别为crash kernel的映像文件段;传递给crash kernel命令行信息段;standard kernel内存信息内容、vmcoreinfo文件、各个处理器信息段;存放备份数据的备份区域段;其中,对kexec工具中获取当前运行的操作系统的内存区域列表部分进行修改,并且根据所述龙芯服务器的MIPS架构的内存物理地址布局图对所述四个kexec段的起始地址进行修改。5.根据权利要求3所述的处理方法,其特征在于,在所述Linux操作系统的系统内核发生崩溃时,执行所...

【专利技术属性】
技术研发人员:张路波
申请(专利权)人:中标软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1