METHOD AND DEVICE FOR COLLECTING ABNORMALITY INFORMATION DURING STARTUP OF OPERATING SYSTEM

01-03-2018 дата публикации
Номер:
WO2018036318A1
Принадлежит: 中兴通讯股份有限公司
Контакты:
Номер заявки: CN37-09-201792
Дата заявки: 21-07-2017

一种在操作系统启动阶段收集异常信息的方法及装置

技术领域

[1]

本发明涉及通信技术领域,尤其涉及一种在操作系统启动阶段收集异常信息的方法及装置。

背景技术

[2]

在操作系统启动阶段,特别是在内核启动阶段,用于收集异常信息的模块和机制尚未准备就绪,此时如果系统或者内存发生异常,将很难收集到完整可靠的异常信息,用于分析定位异常。而实际的应用场景中,系统启动阶段出现异常也是比较常见的,这种场景下如何收集详细的异常信息是一大难题。

[3]

在操作系统中,常见的异常信息收集机制包括:系统日志、崩溃转储、屏幕打印等,但在系统启动阶段这些机制都难以起到实际作用。首先,对于系统日志来说,通常的操作系统中,系统日志都是以系统服务的方式启动的,而在系统启动初期,相应的服务可能尚未启动,甚至在系统启动之初,用于存储日志的硬件设备(或驱动)可能尚未准备就绪,都能导致系统日志无法生效;其次,操作系统中已知的系统崩溃转储机制,都依赖于用户态的服务,用于转储文件的收集、压缩等,但在系统启动阶段,这些服务往往都还没有准备就绪,也就无法正常工作了;再次,对于屏幕打印,由于屏幕上能显示的内容非常有限,即使添加再多的打印,在面临复杂问题的时候,比如内核崩溃时,其打印的信息通常不足以用于定位问题。总的来说,对于系统启动阶段发生的异常来说,目前缺乏一种有效的异常信息收集手段。

[4]

发明内容

[5]

本发明实施例提供一种在操作系统启动阶段收集异常信息的方法及装置,以解决现有技术中在系统启动阶段异常信息收集机制无法有效收集 到详细的异常信息的问题。

[6]

本发明实施例提供一种在操作系统启动阶段收集异常信息的方法,所述方法包括:

[7]

当操作系统启动时,将物理内存中第一内存之外的第二内存用于操作系统启动;

[8]

从预定的存储位置加载定制内核至所述第一内存;

[9]

当监测到操作系统异常状态时,通过所述定制内核收集异常信息。

[10]

其中,在操作系统启动之前,安装操作系统的过程中,所述方法还包括:

[11]

对操作系统的标准内核进行裁剪处理生成相较于所述标准内核体积减小且启动速率加快的所述定制内核,并将生成的所述定制内核存储于预定的存储位置;

[12]

配置所述第一内存的容量信息和位置信息。

[13]

其中,所述从预定的存储位置加载定制内核至所述第一内存的步骤包括:

[14]

通过基本输入输出系统提供的接口读取预定的存储位置中存储的所述定制内核;

[15]

将读取的所述定制内核加载至所述第一内存中进行存储。

[16]

其中,所述操作系统异常状态包括操作系统内核处于异常状态;相应的所述当监测到操作系统异常状态时,通过所述定制内核收集异常信息的步骤包括:

[17]

当监测到操作系统内核处于异常状态时,通过所述定制内核收集操作系统的第一异常信息;

[18]

获取所述第一异常信息的转储位置的相关信息;

[19]

将收集到的所述第一异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后重启操作系统。

[20]

其中,所述操作系统异常状态包括用户态处于异常状态;相应的所述当监测到操作系统异常状态时,通过所述定制内核收集异常信息的步骤包括:

[21]

当监测到用户态处于异常状态时,触发硬件异常并在异常处理流程中获取异常状态等级;

[22]

当异常状态等级大于预设等级时,通过所述定制内核收集与用户态对应的第二异常信息;

[23]

获取所述第二异常信息的转储位置的相关信息;

[24]

将收集到的所述第二异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后停止进程。

[25]

本发明实施例还提供一种在操作系统启动阶段收集异常信息的装置,所述装置包括:

[26]

第一处理模块,设置为当操作系统启动时,将物理内存中第一内存之外的第二内存用于操作系统启动;

[27]

加载模块,设置为从预定的存储位置加载定制内核至所述第一内存;

[28]

收集模块,设置为当监测到操作系统异常状态时,通过所述定制内核收集异常信息。

[29]

其中,所述装置还包括:

[30]

第二处理模块,设置为在操作系统启动之前,安装操作系统的过程中,对操作系统的标准内核进行裁剪处理生成相较于所述标准内核体积减小且启动速率加快的所述定制内核,并将生成的所述定制内核存储于预定的存储位置;

[31]

配置模块,设置为配置所述第一内存的容量信息和位置信息。

[32]

其中,所述加载模块包括:

[33]

读取子模块,设置为通过基本输入输出系统提供的接口读取预定的存储位置中存储的所述定制内核;

[34]

加载子模块,设置为将读取的所述定制内核加载至所述第一内存中进行存储。

[35]

其中,所述操作系统异常状态包括操作系统内核处于异常状态;相应的所述收集模块包括:

[36]

第一收集子模块,设置为当监测到操作系统内核处于异常状态时,通过所述定制内核收集操作系统的第一异常信息;

[37]

第一获取子模块,设置为获取所述第一异常信息的转储位置的相关信息;

[38]

第一处理子模块,设置为将收集到的所述第一异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后重启操作系统。

[39]

其中,所述操作系统异常状态包括用户态处于异常状态;相应的所述收集模块包括:

[40]

触发子模块,设置为当监测到用户态处于异常状态时,触发硬件异常并在异常处理流程中获取异常状态等级;

[41]

第二收集子模块,设置为当异常状态等级大于预设等级时,通过所述定制内核收集与用户态对应的第二异常信息;

[42]

第二获取子模块,设置为获取所述第二异常信息的转储位置的相关信息;

[43]

第二处理子模块,设置为将收集到的所述第二异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后停止进程。

[44]

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述任一项所述的方法。

[45]

本发明实施例技术方案的有益效果至少包括:

[46]

本发明技术方案,通过在操作系统安装过程中生成定制内核并配置在操作系统启动阶段用于存储定制内核的第一内存的相关信息,在操作系统启动时,将位于预定的存储位置的定制内核加载于与操作系统分离的第一 内存中,在监测到操作系统处于异常状态时,通过定制内核收集异常信息,不仅能解决操作系统启动阶段异常信息收集困难的问题,同时,也能用于操作系统启动后的异常信息收集,不依赖于具体的硬件,具有较强的通用性。

附图说明

[47]

图1表示本发明实施例一提供的在操作系统启动阶段收集异常信息的方法示意图;

[48]

图2表示本发明实施例二提供的在操作系统启动阶段收集异常信息的方法示意图;

[49]

图3表示本发明实施例三提供的在操作系统启动阶段收集异常信息的方法示意图;

[50]

图4表示本发明实施例三提供的操作系统内核异常时异常信息的处理方法示意图;

[51]

图5表示本发明实施例三提供的用户态异常时异常信息的处理方法示意图;

[52]

图6表示本发明实施例四提供的在操作系统启动阶段收集异常信息的装置示意图。

具体实施方式

[53]

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。

[54]

实施例一

[55]

如图1所示,本发明实施例一提供的在操作系统启动阶段收集异常信息的方法,包括:

[56]

步骤101、当操作系统启动时,将物理内存中第一内存之外的第二内存用于操作系统启动。

[57]

首先在操作系统启动时,确定操作系统的物理内存中的第二内存用于操作系统的启动,确定物理内存中的第一内存用于存储定制内核。其中,第一内存与用于操作系统启动的第二内存隔离,第一内存与第二内存互不影响,第一内存不会被操作系统使用。相对于操作系统中自带的标准内核,定制内核的体积更小,更轻量,启动更快,只包括必要的驱动,只进行必要的硬件初始化。在确定出用于操作系统启动的第二内存以及与第二内存隔离的用于在操作系统启动时存储定制内核的第一内存之后,需要执行步骤102。

[58]

步骤102、从预定的存储位置加载定制内核至第一内存。

[59]

在确定出用于操作系统启动的第二内存以及与第二内存隔离的用于在操作系统启动时存储定制内核的第一内存之后,需要将位于预定的存储位置的定制内核加载至物理内存的第一内存中,其中预定的存储位置为生成定制内核时用于存储定制内核的位置。

[60]

由于在操作系统启动初期,相关的存储设备驱动可能尚未准备就绪,此时不能使用操作系统原有的输入输出流程来从预定的存储位置读取定制内核,需要有一种可靠的方式,比如通过基本输入输出系统提供的接口直接读取。

[61]

在将定制内核加载至第一内存之后,需要对操作系统启动阶段的状态进行监测,当操作系统在启动阶段处于异常状态时,则需要执行步骤103。

[62]

步骤103、当监测到操作系统异常状态时,通过定制内核收集异常信息。

[63]

在确定出用于操作系统启动的第二内存以及与第二内存隔离的用于在操作系统启动时存储定制内核的第一内存、且将定制内核加载至第一内存之后,需要对操作系统的状态进行监测,当监测到操作系统处于异常状态时,则需要进行异常信息收集流程,通过定制内核收集异常信息。在完成异常信息的收集之后,需要将异常信息转储至相应的位置进行保存。

[64]

需要说明的是,操作系统的异常状态包括:操作系统内核处于异常状 态和用户态处于异常状态。其中当操作系统内核处于异常状态时,可以直接收集异常信息,并对异常信息进行存储,此时的异常信息为整个操作系统的异常信息。例如异常信息包括:寄存器上下文异常信息、堆栈异常信息、当前系统的内存镜像异常信息。当用户态处于异常状态时,则需要判断异常态的等级,当异常态满足预设等级时,可以进入异常信息收集流程,通过定制内核收集异常信息。此时的异常信息为与用户态进程对应的异常信息。例如,此时的异常信息包括:

[65]

寄存器上下文异常信息、堆栈异常信息、当前进程的内存镜像异常信息和地址空间分布异常信息等。在获取异常信息之后,需要将异常信息转储至对应的位置。

[66]

本发明实施例一,通过在操作系统安装过程中生成定制内核并配置在操作系统启动阶段用于存储定制内核的第一内存的相关信息,在操作系统启动时,将位于预定的存储位置的定制内核加载于与操作系统分离的第一内存中,在监测到操作系统处于异常状态时,通过定制内核收集异常信息,不仅能解决操作系统启动阶段异常信息收集困难的问题,同时,也能用于操作系统启动后的异常信息收集,不依赖于具体的硬件,具有较强的通用性。

[67]

实施例二

[68]

如图2所示,本发明实施例二提供的在操作系统启动阶段收集异常信息的方法,包括:

[69]

步骤201、在操作系统启动之前,安装操作系统的过程中,对操作系统的标准内核进行裁剪处理生成相较于标准内核体积减小且启动速率加快的定制内核,并将生成的定制内核存储于预定的存储位置。

[70]

在启动操作系统之前,需要生成定制内核,具体为在操作系统标准内核的基础上进行裁剪处理,得到相较于操作系统标准内核体积更小、量更轻以及启动速率加快的定制内核。且定制内核只包括必要的驱动,只进行必要的硬件初始化。

[71]

在生成定制内核之后,需要将定制内核进行存储,此时需要将定制内核存储于预定的存储位置。即在操作系统安装时,将定制内核安装到指定的存储位置上。也可以在操作系统安装完成后,将定制内核拷贝到指定的存储位置上。

[72]

在安装操作系统的过程中,生成定制内核之后,需要执行步骤202配置用于在操作系统启动时存储定制内核的第一内存的相关信息。

[73]

步骤202、配置第一内存的容量信息和位置信息。

[74]

在安装操作系统的过程中,需要执行两个操作,生成相较于操作系统标准内核体积更小、量更轻以及启动速率更快的定制内核以及配置在操作系统启动时存储定制内核的第一内存的容量信息和位置信息。

[75]

需要说明的是,第一内存与用于操作系统启动的物理内存相隔离,需要保证操作系统不会使用到第一内存。

[76]

需要说明的是,在安装操作系统的过程中,还需要配置另外的信息,即异常信息的存储位置信息,在操作系统启动时收集到异常信息之后,需要将收集到的异常信息进行存储,在存储时需要获取存储的位置信息,根据存储的位置信息对异常信息进行存储。

[77]

在完成操作系统安装阶段的相关操作之后,需要进入到操作系统的启动阶段,即需要继续执行步骤203。

[78]

可选的,当操作系统安装完成后,在操作系统启动后,当用户更改相关配置时,此时需要重新启动操作系统,在操作系统重新启动的过程中更改相关配置,在操作系统重启完成后,配置生效。

[79]

步骤203、当操作系统启动时,将物理内存中第一内存之外的第二内存用于操作系统启动。

[80]

在操作系统启动时,需要确定操作系统的物理内存中的第二内存用于操作系统的启动,确定物理内存中的第一内存用于存储定制内核。其中,第一内存与用于操作系统启动的第二内存隔离,第一内存与第二内存互不影响,第一内存不会被操作系统使用。

[81]

在确定出用于存储定制内核的第一内存之后,可以将物理内存中除第一内存之外的第二内存用于操作系统的启动。

[82]

在确定出用于存储定制内核的第一内存之后,可以将定制内核加载至第一内存中。即此时需要依次执行步骤204和步骤205。

[83]

步骤204、通过基本输入输出系统提供的接口读取预定的存储位置中存储的定制内核。

[84]

通过基本输入输出系统提供的接口对存储于预定的存储位置中的定制内核进行读取。其中由于在操作系统启动初期,相关的存储设备驱动可能尚未准备就绪,此时不能使用操作系统原有的输入输出流程来从指定存储设备中读取定制内核,需要有一种可靠的方式,即可以通过基本输入输出系统提供的接口直接读取存储于预定的存储位置中的定制内核。

[85]

在通过基本输入输出系统提供的接口读取存储于预定的存储位置中的定制内核之后,需要执行步骤205。

[86]

步骤205、将读取的定制内核加载至第一内存中进行存储。

[87]

将读取的定制内核加载至与操作系统隔离的第一内存中。然后需要对操作系统的状态进行监测。

[88]

步骤206、当监测到操作系统异常状态时,通过定制内核收集异常信息,并将异常信息存储至相应的转储位置。

[89]

当监测到操作系统处于异常状态时,需要通过定制内核来收集异常信息并对收集后的异常信息进行存储。在对异常信息进行存储时,需要根据在操作系统安装阶段配置的异常信息的存储位置信息来获取异常信息的存储位置,然后将异常信息进行存储。需要说明的是,异常信息的收集以及收集完成后异常信息的存储都在操作系统的内核态完成,不依赖于任何用户态组件,防止出现因用户态组件自身问题(如尚未准备就绪)导致异常信息无法成功转储的问题。

[90]

其中操作系统异常状态包括:操作系统内核处于异常状态和用户态处于异常状态。

[91]

当监测到操作系统内核处于异常状态时,通过定制内核收集操作系统的第一异常信息;获取第一异常信息的转储位置的相关信息;将收集到的第一异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后重启操作系统。

[92]

当监测到用户态处于异常状态时,触发硬件异常并在异常处理流程中获取异常状态等级;当异常状态等级大于预设等级时,通过定制内核收集与用户态对应的第二异常信息;获取第二异常信息的转储位置的相关信息;将收集到的第二异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后停止进程。

[93]

可选的,在监测到操作系统内核处于异常状态时,此时需要通过定制内核对第一异常信息进行收集,此时的第一异常信息为整个操作系统(包括操作系统内核和用户态进程)的异常信息,例如第一异常信息包括:寄存器上下文异常信息、堆栈异常信息、当前操作系统的内存镜像异常信息等。

[94]

在收集到第一异常信息之后,需要根据在操作系统安装阶段配置的异常信息的存储位置信息来获取异常信息的存储位置。然后将第一异常信息进行压缩处理,以减少信息收集时间和存储用量。根据异常信息的存储位置,将经过压缩后的第一异常信息按指定的方式转储到指定的存储设备的相应位置,例如将压缩后的第一异常信息存储至本地磁盘或者网络上。再将第一异常信息存储至本地磁盘或者网络上之后,需要重启操作系统。

[95]

在监测到用户态处于异常状态时,需要触发硬件异常,比如缺页异常、除0异常。触发硬件异常后进入操作系统内核预先注册的异常处理流程,在异常处理流程中截获相关异常,并根据异常的严重程度判断异常状态的等级,当异常状态等级大于预设等级时,可以进入第二异常信息收集流程,通过定制内核收集与用户态对应的第二异常信息。此时的第二异常信息包括:寄存器上下文异常信息、堆栈异常信息、当前进程的内存镜像异常信息和地址空间分布异常信息等。在获取第二异常信息之后,需要根据在操 作系统安装阶段配置的异常信息的存储位置信息来获取异常信息的存储位置。然后将第二异常信息进行压缩处理,以减少信息收集时间和存储用量。根据异常信息的存储位置,将经过压缩后的第二异常信息按指定的方式转储到指定的存储设备的相应位置,例如将压缩后的第二异常信息存储至本地磁盘或者网络上。再将第二异常信息存储至本地磁盘或者网络上之后,需要停止当前进程。

[96]

本发明实施例二,通过在操作系统安装过程中生成定制内核并配置在操作系统启动阶段用于存储定制内核的第一内存的相关信息,在操作系统启动时,将位于预定的存储位置的定制内核加载于与操作系统分离的第一内存中,在监测到操作系统处于异常状态时,通过定制内核收集异常信息,不仅能解决操作系统启动阶段异常信息收集困难的问题,同时,也能用于操作系统启动后的异常信息收集,不依赖于具体的硬件,具有较强的通用性。

[97]

实施例三

[98]

如图3所示,本发明实施例三提供的在操作系统启动阶段收集异常信息的方法,包括:

[99]

步骤301、在操作系统启动前,配置指定保留内存的大小用于存放和启动定制内核,并将定制内核存放于指定的存储位置。

[100]

步骤302、在操作系统启动时,按配置的大小和位置保留物理内存,并将其与操作系统进行隔离。

[101]

步骤303、从指定的存储位置加载定制内核至保留的物理内存中。

[102]

步骤304、监控来自操作系统内核和用户态的所有异常。

[103]

步骤305、当监测到异常后启动定制内核,使得定制内核进行相关初始化后收集异常信息。

[104]

步骤306、根据预先配置的异常信息的存储位置信息来获取异常信息的存储位置,将异常信息转储到相应设备的相关位置中。

[105]

其中,当监测到的异常属于操作系统内核异常时,需要执行下面的流程,如图4所示:

[106]

步骤401、主动触发进入异常信息收集流程。

[107]

步骤402、读取异常信息的存储位置信息来获取异常信息的存储位置。

[108]

步骤403、将整个操作系统的异常信息进行压缩处理后转储到指定的存储位置。

[109]

步骤404、转储完成后,重启操作系统。

[110]

当监测到的异常属于用户态异常时,需要执行下面的步骤,如图5所示:

[111]

步骤501、触发硬件异常,在触发硬件异常后进入操作系统内核预先注册的异常处理流程。

[112]

步骤502、在异常处理流程中截获相关异常,并判断异常状态等级。

[113]

步骤503、当异常状态等级大于预设等级时,收集异常信息。

[114]

步骤504、读取异常信息的存储位置信息来获取异常信息的存储位置。

[115]

步骤505、将用户态对应的异常信息进行压缩处理后转储到指定的存储位置。

[116]

步骤506、转储完成后,停止当前进程。

[117]

本发明实施例三,通过在操作系统启动时,将位于预定的存储位置的定制内核加载于与操作系统分离的内存中,在监测到操作系统处于异常状态时,通过定制内核收集异常信息,不仅能解决操作系统启动阶段异常信息收集困难的问题,同时,也能用于操作系统启动后的异常信息收集,不依赖于具体的硬件,具有较强的通用性。

[118]

实施例四

[119]

如图6所示,本发明实施例四提供的在操作系统启动阶段收集异常信息的装置,包括:

[120]

第一处理模块10,设置为当操作系统启动时,将物理内存中第一内存之外的第二内存用于操作系统启动;

[121]

加载模块20,设置为从预定的存储位置加载定制内核至第一内存;

[122]

收集模块30,设置为当监测到操作系统异常状态时,通过定制内核收集异常信息。

[123]

其中,该装置还包括:

[124]

第二处理模块40,设置为在操作系统启动之前,安装操作系统的过程中,对操作系统的标准内核进行裁剪处理生成相较于标准内核体积减小且启动速率加快的定制内核,并将生成的定制内核存储于预定的存储位置;

[125]

配置模块50,设置为配置第一内存的容量信息和位置信息。

[126]

其中,加载模块20包括:

[127]

读取子模块21,设置为通过基本输入输出系统提供的接口读取预定的存储位置中存储的定制内核;

[128]

加载子模块22,设置为将读取的定制内核加载至第一内存中进行存储。

[129]

其中,操作系统异常状态包括操作系统内核处于异常状态;相应的收集模块30包括:

[130]

第一收集子模块31,设置为当监测到操作系统内核处于异常状态时,通过定制内核收集操作系统的第一异常信息;

[131]

第一获取子模块32,设置为获取第一异常信息的转储位置的相关信息;

[132]

第一处理子模块33,设置为将收集到的第一异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后重启操作系统。

[133]

其中,操作系统异常状态包括用户态处于异常状态;相应的收集模块30包括:

[134]

触发子模块34,设置为当监测到用户态处于异常状态时,触发硬件异 常并在异常处理流程中获取异常状态等级;

[135]

第二收集子模块35,设置为当异常状态等级大于预设等级时,通过定制内核收集与用户态对应的第二异常信息;

[136]

第二获取子模块36,设置为获取第二异常信息的转储位置的相关信息;

[137]

第二处理子模块37,设置为将收集到的第二异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后停止进程。

[138]

本发明实施例三,通过上述模块在操作系统安装过程中生成定制内核并配置在操作系统启动阶段用于存储定制内核的第一内存的相关信息,在操作系统启动时,将位于预定的存储位置的定制内核加载于与操作系统分离的第一内存中,在监测到操作系统处于异常状态时,通过定制内核收集异常信息,不仅能解决操作系统启动阶段异常信息收集困难的问题,同时,也能用于操作系统启动后的异常信息收集,不依赖于具体的硬件,具有较强的通用性。

[139]

需要说明的是,本发明实施例提供的在操作系统启动阶段收集异常信息的装置是应用上述方法的装置,则上述方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。

[140]

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

[141]

本发明的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项所述的方法。

[142]

可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

[143]

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤 可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

[144]

以上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明所述的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本发明的保护范围内。

工业实用性

[145]

如上所述,本发明实施例提供的一种在操作系统启动阶段收集异常信息的方法及装置具有以下有益效果:在操作系统启动时,将位于预定的存储位置的定制内核加载于与操作系统分离的第一内存中,在监测到操作系统启动阶段处于异常状态时,通过定制内核收集异常信息,不仅能解决操作系统启动阶段异常信息收集困难的问题,同时,也能用于操作系统启动后的异常信息收集,不依赖于具体的硬件,具有较强的通用性。



[1]

Embodiments of the present invention provide a method and a device for collecting abnormality information during startup of an operating system. The method comprises: upon startup of an operating system, selecting a second internal memory other than a first internal memory in a physical memory to startup the operating system; loading a custom kernel from a predetermined storage location to the first internal memory; and upon detecting an abnormal status of the operating system, the custom kernel collecting abnormality information. In the embodiments of the present invention, upon startup of the operating system, the custom kernel located in a predetermined storage location is loaded to the first internal memory, separate from the operating system. Upon detecting startup of the operating system is abnormal, the custom kernel collects abnormality information. Thus, the present invention can not only resolve the issue in which abnormality information is difficult to collect during operating system startup but also has application in collection of abnormality information after startup of an operating system. The present invention does not depend on specific hardware and has broad application.

[2]



一种在操作系统启动阶段收集异常信息的方法,所述方法包括:

当操作系统启动时,将物理内存中第一内存之外的第二内存用于操作系统启动;

从预定的存储位置加载定制内核至所述第一内存;

当监测到操作系统异常状态时,通过所述定制内核收集异常信息。

根据权利要求1所述的方法,其中,在操作系统启动之前,安装操作系统的过程中,所述方法还包括:

对操作系统的标准内核进行裁剪处理生成相较于所述标准内核体积减小且启动速率加快的所述定制内核,并将生成的所述定制内核存储于预定的存储位置;

配置所述第一内存的容量信息和位置信息。

根据权利要求1所述的方法,其中,所述从预定的存储位置加载定制内核至所述第一内存的步骤包括:

通过基本输入输出系统提供的接口读取预定的存储位置中存储的所述定制内核;

将读取的所述定制内核加载至所述第一内存中进行存储。

根据权利要求1所述的方法,其中,所述操作系统异常状态包括操作系统内核处于异常状态;相应的所述当监测到操作系统异常状态时,通过所述定制内核收集异常信息的步骤包括:

当监测到操作系统内核处于异常状态时,通过所述定制内核收集操作系统的第一异常信息;

获取所述第一异常信息的转储位置的相关信息;

将收集到的所述第一异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后重启操作系统。

根据权利要求1所述的方法,其中,所述操作系统异常状态包括用户态处于异常状态;相应的所述当监测到操作系统异常状态时,通过所述定制内核收集异常信息的步骤包括:

当监测到用户态处于异常状态时,触发硬件异常并在异常处理流程中获取异常状态等级;

当异常状态等级大于预设等级时,通过所述定制内核收集与用户态对应的第二异常信息;

获取所述第二异常信息的转储位置的相关信息;

将收集到的所述第二异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后停止进程。

一种在操作系统启动阶段收集异常信息的装置,所述装置包括:

第一处理模块,设置为当操作系统启动时,将物理内存中第一内存之外的第二内存用于操作系统启动;

加载模块,设置为从预定的存储位置加载定制内核至所述第一内存;

收集模块,设置为当监测到操作系统异常状态时,通过所述定制内核收集异常信息。

根据权利要求6所述的装置,其中,所述装置还包括:

第二处理模块,设置为在操作系统启动之前,安装操作系统的过程中,对操作系统的标准内核进行裁剪处理生成相较于所述标准内核体积减小且启动速率加快的所述定制内核,并将生成的所述定制内核存储于预定的存储位置;

配置模块,设置为配置所述第一内存的容量信息和位置信息。

根据权利要求6所述的装置,其中,所述加载模块包括:

读取子模块,设置为通过基本输入输出系统提供的接口读取预定 的存储位置中存储的所述定制内核;

加载子模块,设置为将读取的所述定制内核加载至所述第一内存中进行存储。

根据权利要求6所述的装置,其中,所述操作系统异常状态包括操作系统内核处于异常状态;相应的所述收集模块包括:

第一收集子模块,设置为当监测到操作系统内核处于异常状态时,通过所述定制内核收集操作系统的第一异常信息;

第一获取子模块,设置为获取所述第一异常信息的转储位置的相关信息;

第一处理子模块,设置为将收集到的所述第一异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后重启操作系统。

根据权利要求6所述的装置,其中,所述操作系统异常状态包括用户态处于异常状态;相应的所述收集模块包括:

触发子模块,设置为当监测到用户态处于异常状态时,触发硬件异常并在异常处理流程中获取异常状态等级;

第二收集子模块,设置为当异常状态等级大于预设等级时,通过所述定制内核收集与用户态对应的第二异常信息;

第二获取子模块,设置为获取所述第二异常信息的转储位置的相关信息;

第二处理子模块,设置为将收集到的所述第二异常信息进行压缩处理后,存储至相应的转储位置,并在存储完成后停止进程。

一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行权利要求1至5中任一项所述的方法。