一种Linux系统的初始化方法和装置与流程

文档序号:11133693阅读:396来源:国知局
一种Linux系统的初始化方法和装置与制造工艺

本申请涉及网络通信技术领域,特别涉及一种Linux系统的初始化方法和装置。



背景技术:

基于Linux的操作系统(基于Linux的衍生系统)在使用inittab文件进行系统初始化后,通常会启动一个终端监听程序。该终端监听程序,可为用户提供一个命令行界面,用户可以在该命令行界面中输入该基于Linux的操作系统所提供的命令,执行一些该基于Linux的操作系统受限的功能,而并不能直接进入原生Linux系统的shell模式,输入原生Linux系统自带的命令,进行任意的操作。

然而,该终端监听程序由于某种异常原因(比如进程因故障崩溃,或者被系统维护人员主动终止,或者为了修复该进程局部故障而需重启该进程等)退出运行时,为了防止非法访问者在终端监听程序崩溃后用户无须最高权限直接操作设备,造成安全问题,操作系统通常会自动切换到登录验证程序,只有当管理员通过用户账号及密码进行验证后,才能够重新启动终端监听程序。



技术实现要素:

有鉴于此,本申请提供一种Linux系统的初始化方法和装置,应用于搭载Linux系统的终端设备,用于提高设备的可用性。

具体地,本申请是通过如下技术方案实现的:

一种Linux系统的初始化方法,应用于搭载Linux系统的终端设备,其中,所述Linux系统的inittab文件中的respawn程序被修改为自定义respawn程序(以下简称为respawn程序),包括:

当终端监听程序失去响应时,内核态程序终止该终端监听程序;当终端监听程序退出时,系统自动运行所述respawn指定的程序;

respawn程序判断在预设周期内终端监听程序启动次数是否达到预设阈值;

如果所述启动的次数达到预设阈值,则启动登录验证程序;如果所述启动的次数未达到预设阈值,则重新启动终端监听程序。

一种Linux系统的初始化装置,应用于搭载Linux系统的终端设备,其中,所述Linux系统的inittab文件中的respawn程序被修改为自定义respawn程序(以下简称为respawn程序),包括:

运行单元,用于当终端监听程序失去响应时,内核态程序终止该终端监听程序;当终端监听程序退出时,系统自动运行所述respawn指定的程序;

判断单元,用于respawn程序判断在预设周期内终端监听程序启动次数是否达到预设阈值;

执行单元,用于如果所述启动的次数达到预设阈值,则启动登录验证程序;如果所述启动的次数未达到预设阈值,则重新启动终端监听程序。

由以上本申请提供的技术方案可见,通过当终端监听程序失去相应时,内核态程序终止该终端监听程序;当终端监听程序退出时,系统自动运行所述respawn程序;然后reapawn程序判断在预设周期内终端监听程序启动次数是否达到预设阈值;如果所述启动的次数达到预设阈值,则启动登录验证程序;如果所述启动的次数未达到预设阈值,则重新启动终端监听程序。

一方面,通过将系统自动重启的程序respawn改成自定义的程序,该自定义的程序会启动终端监听程序,因此当wait中的程序中终端监听程序退出之后,会自动执行respawn中的程序,将终端监听程序自动重启,从而可以避免终端程序退出后,需要管理员来进行验证登录后才可以重启终端监听程序,进而可以实现提高设备可用性的目的。

另一方面,通过将系统自动重启的程序respawn改成自定义的程序,该自定义的程序中可以检查终端监听程序的启动次数,当终端监听程序启动的次数超过预设阈值时,系统可以终止终端监听程序,并启动登录验证程序,等待系统管理员的处理,因此可以避免终端监听程序本身存在严重故障时,导致系统忙于无限重启终端监听程序的状态,造成console端口无法进行任何操作,从而可以实现提高设备可用性的目的。

附图说明

图1为本申请一示例性实施例示出的一种Linux系统的初始化方法流程图;

图2为本申请一示例性实施例示出的一种Linux系统的初始化装置所在搭载Linux系统的终端设备的一种硬件结构图;

图3为本申请一示例性实施例示出的一种Linux系统的初始化装置。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

相关技术中,Linux系统可以通过使用/etc/inittab文件进行系统初始化,该文件内容形式如下:

::sysinit:/etc/init.d/sysinit

::wait:-/usr/bin/startup

::respawn:/sbin/agetty

其中,Linux系统程序分为内核态程序和用户态程序。内核态程序可以长期存在,如果出现故障则会导致Linux系统崩溃重启,因此它的生命周期可以被认为与系统的生命周期等长。

当Linux系统启动时,首先内核态程序会初始化,然后会解析/etc/inittab文件,启动sysinit指定的程序,该程序一般可以用于文件系统的初始化。接着wait指定的程序会启动,该程序一般可以用于用户态模块配置恢复,然后会启动终端监听程序,由终端监听程序管理console端口;其中,所述console端口是网络/安全设备常见的一种控制端口,可以使用专用的连接线连接设备的console口和PC,然后可以通过PC端的终端仿真程序接管console端口对设备进行管理,管理界面为命令行界面。终端监听程序启动之后,用户只可以执行由该终端监听程序提供的命令,而不能执行Linux系统自带的终端监听程序(如shell)提供的命令(比如ls、mv、rm等)。

当终端监听程序由于某种原因退出时(比如进程因故障崩溃,或者被内核态程序主动停止,以及系统维护人员为了修复该进程局部故障而需要重启该进程等原因),respawn行代表的程序就会启动,该程序一般为一个控制台登录验证程序(比如agetty),在终端程序退出后,系统会自动切换到该程序,在这种情况下,需要通过管理员用专用连接线连接设备的console口与PC,通过PC端的终端仿真程序接管console端口,然后在PC端显示登录验证界面,使用用户账号及密码来验证登录,进而来重新启动终端监听程序。

一方面,终端监听程序退出后,必须通过专用连接线连接PC与设备的console口,然后通过PC端的终端仿真程序来接管console端口,进而会在PC端的显示登录验证界面,可以让管理进行登录验证操作,恢复终端监听程序的运行,然而执行操作之前必须先用用户密码登录,设备用户密码原则上只有设备厂商知道,而购买并使用该设备的用户无权知道,因此在终端监听程序退出时,需要由厂商派专人进行处理,从而降低了设备的可用性。其中,所述可用性为在某个考察时间内,系统或者特定程序能够正常运行的概率或时间占有率期望值。

另一方面,终端监听程序虽然没有退出,但由于某种原因(比如受到特定报文攻击)导致该进程没响应,通过console端口、telnet、SSH(Secure Shell,安全外壳协议)等均无法操作,如果没有其它手段终止终端监听程序,会导致终端监听程序进入不可用状态,从而也会降低设备的可用性。

为了解决相关技术中的问题,本申请提供了一种Linux系统的初始化方法,应用于搭载Linux系统的终端设备,通过当终端监听程序失去响应时,内核态程序终止该终端监听程序;当终端监听程序退出时,系统自动运行所述respawn程序;然后respawn程序判断在预设周期内终端监听程序启动次数是否达到预设阈值;如果所述启动的次数达到预设阈值,则启动登录验证程序;如果所述启动的次数未达到预设阈值,则重新启动终端监听程序。

一方面,通过将系统自动重启的程序respawn改成自定义respawn程序,该自定义的respawn程序会启动终端监听程序,因此当wait中的程序中终端监听程序退出之后,会自动执行respawn中的程序,将终端监听程序自动重启,从而可以避免终端程序退出后,需要管理员来进行验证登录后才可以重启终端监听程序,进而可以实现提高设备可用性的目的。

另一方面,通过将系统自动重启的程序respawn改成自定义的respawn程序,该自定义的respawn程序中可以检查终端监听程序的启动次数,当终端监听程序启动的次数超过预设阈值时,系统可以终止终端监听程序,并启动登录验证程序,等待系统管理员的处理,因此可以避免终端监听程序本身存在严重故障时,导致系统忙于无限重启终端监听程序的状态,造成console端口无法进行任何操作,从而可以实现提高设备可用性的目的。

此外,通过内核态程序检测在定时时间内是否接收到终端监听程序周期性发送的存活信息,来判断终端监听程序是否处于无响应状态。当终端监听程序处于无响应状态,内核态程序则可以终止终端监听程序,通过respawn自动重启终端监听程序,因此可以避免终端监听进程无响应时,终端监听程序长时间无法提供服务的情况的发生,从而可以实现提高设备可用性的目的。

请参见图1,图1为本申请一示例性实施例示出的一种Linux系统的初始化方法流程图,应用于搭载Linux系统的终端设备,其中,所述Linux系统的inittab文件中的respawn指定的程序被修改为自定义respawn程序(以下称为respawn程序),具体执行如下步骤:

步骤101:当终端监听程序失去响应时,内核态程序终止该终端监听程序;当终端监听程序退出时,系统自动运行所述respawn程序;

步骤102:respawn程序判断在预设周期内终端监听程序启动次数是否达到预设阈值;

步骤103:如果所述启动的次数达到预设阈值,则启动登录验证程序;如果所述启动的次数未达到预设阈值,则重新启动终端监听程序。

在本例中,为了避免终端监听程序异常退出后,终端监听程序无法自动重启,而造成服务中断问题,可以对现有的基于Linux的操作系统的初始化流程进行修改,具体地,可以通过将所述Linux系统的inittab文件中的respawn指定的登录验证程序修改为终端监听程序。

例如,以基于Linux的衍生操作系统Conplat为例,在Conplat操作系统中,上述终端监听程序为conplat_cli,在这种情况下,可以将::respawn:/sbin/agetty修改为::respawn:conplat_cli,当Linux系统初始化时,会按顺序先执行::sysinit:/etc/init.d/sysinit,执行完sysinit行的程序后,会接着执行::wait:-/usr/bin/startup,然后终端监听程序就可以接管console端口了。

当终端监听程序因为一些异常原因退出(包括被内核态程序强行终止或终端监听程序出现导致自身终止的故障,如内存访问错误)时,在这样的情况下,系统可以自动执行respawn指定的程序,也就是上述终端监听程序。从而,可以避免终端程序退出后,需要管理员来进行验证登录后才可以重启终端监听程序,进而可以实现提高设备可用性的目的。

然而,考虑到终端监听程序本身可能会存在严重故障,在特定条件下无法启动,导致系统忙于无限重启终端监听程序,造成console端口无法进行任何操作,而且由于终端监听程序的自动重启是由系统本身来自动重启的,因此管理员无法终止,一旦出现这类故障,系统将失去响应,无法管理。

为了解决上述问题,可以通过将respawn指定的程序进行修改,使该程序具备检测终端监听程序启动次数的功能。

当Linux系统的初始化过程运行到respawn指定的程序时,终端监听程序会自动重新启动,然后respawn程序可以通过检查自系统启动以来,终端监听程序的启动次数是否达到预设阈值,当终端监听程序的启动次数达到预设阈值,则respawn程序可以终止终端监听程序的自动重启,转换为启动登录验证程序,等待系统管理员来进行登录验证并解决问题之后,恢复终端监听程序的自动重启流程。

例如,仍以基于Linux的衍生操作系统Conplat为例,在Conplat操作系统中,上述终端监听程序为conplat_cli,在实现时可以修改终端监听程序conplat_cli,使其具有启动次数检查功能,修改后的终端监听程序为conplat_respawn,可以将respawn指定的程序修改为终端监听程序conplat_respawn,并通过修改后的终端监听程序conplat_respawn来进行终端监听程序的启动次数的检查。

在示出的一种实施方式中,所述预设阈值可以是所述预设周期对应的时长,与所述终端监听程序启动所需的时长和管理员手动终止所述终端监听程序的自动重启的时长之和的比值。其中,该预设周期用于终端监听程序的自动重启的检查流程。

在设置所述阈值时,需要考虑如果终端监听程序从本次启动到下一次启动之间的时长,是否足够让系统管理员通过命令行主动终止终端监听程序的自动重启,因此自动重启的持续时间应该尽量短,以便于管理员尽快对终端监听程序的自动重启的终止操作;同时也要考虑设备的可用性的问题,如果预设阈值比较小,则会导致终端监听程序偶尔几次重启就被终止,这样会降低设备的可用性,因此所述预设阈值既不能太高,否则管理员无法通过手动来终止终端监听程序,也不能太低,否则会降低设备的可用性。

例如,比如预设周期为600秒,终端监听程序启动时间需要10秒,管理员手动终止终端监听程序的自动重启的时间需要20秒,则预设的阈值不能超过20[600/(10+20)]次。

在示出的一种实施方式中,在统计终端监听程序的自动重启的次数时,可以在Linux系统的内存中申请一块内存,用于存放终端监听程序的启动时刻,该块内存可以是内核态程序中的,也可以是搭载Linux系统的终端设备任意位置上的一块独立内存。

当终端监听程序启动后,内核态程序可以生成一条与该终端监听程序启动时刻对应的时刻记录,并将该启动时刻记录添加到上述内存中,然后可以基于该内存中记录的时刻记录的条数,来统计所述终端监听程序启动的次数。

在本例中,当统计出上述终端监听程序启动的次数后,respawn程序可以判断在预设周期内终端监听程序启动次数是否达到预设阈值。如果终端监听程序启动的次数达到预设阈值,此时终端监听程序重启的次数较频繁,很可能是由于终端监听程序本身可能会存在严重故障,导致的无限重启,在这种情况下,可以终止终端监听程序的自动重启流程,立即启动登录验证程序;当然,如果终端监听程序启动的次数未达到预设阈值,此时可以正常执行终端监听程序的重启流程,重新启动终端监听程序。

在示出的一种实施方式中,当终止了终端监听程序的自动重启流程,启动了登录验证程序后,内核态程序还可以将生成的与所述终端监听程序启动的时刻对应的时刻记录清空,等管理员修复故障之后,可以通过登录验证来重新启动终端监听程序,并进入下一个周期。

当然,除了管理员通过命令行手动终止终端监听程序的自动重启,以及当终端监听程序的启动次数到达预设阈值时,respawn程序终止终端监听程序的自动重启之外,当整个Linux系统重新启动后,也可以将生成的与所述终端监听程序启动的时刻对应的时刻记录清空。

在本例中,上述终端监听程序除了可能出现以上描述的无限重启的问题之外,还可能会发生终端监听进程由于未知原因,出现没有响应的异常问题。对于这种情况,可以采取以如下措施。

在示出的一种实施方式中,所述终端监听程序可以基于预设周期向内核态程序周期性发送存活信号,其中,该预设周期用于终端监听程序是否异常。然后,内核态程序可以启动定时器,并在预设时长内检查是否接收到终端监听程序发送的所述存活信号,如果在预设时长内,未接收到终端监听程序发送的存活信号,则可以确定终端监听程序异常。

例如,比如终端监听程序向内核态周期性发送存活信号的预设周期为10秒,内核态程序启动的定时时长为100秒,如果在这100秒之内,内核态程序没有接收到终端监听程序发送的存活消息,则内核态程序就可以确定终端监听程序异常。

在示出的一种实施方式中,当内核态程序确定所述终端监听程序异常时,内核态程序可以终止所述终端监听程序,然后内核态程序可以执行自定义的respawn指定的程序来重新启动终端监听程序,恢复终端监听程序的自动重启的流程,当终端监听程序从异常状态恢复到自动重启的流程后,对于终端监听程序启动的时刻记录,启动次数是否超过预设阈值的判断等内容在此不再一一赘述。

由以上本申请提供的技术方案可见,通过当终端监听程序失去响应时,内核态程序终止该终端监听程序;当终端监听程序退出时,系统自动运行所述respawn程序以重新启动所述终端监听程序;然后respawn程序判断在预设周期内终端监听程序启动次数是否达到预设阈值;如果所述启动的次数达到预设阈值,则启动登录验证程序;如果所述启动的次数未达到预设阈值,则重新启动终端监听程序。

一方面,通过将系统自动重启的程序respawn改成自定义的respawn程序,该自定义的respawn程序会启动终端监听程序,因此当wait中的程序中终端监听程序退出之后,会自动执行respawn中的程序,将终端监听程序自动重启,从而可以避免终端程序退出后,需要管理员来进行验证登录后才可以重启终端监听程序,进而可以实现提高设备可用性的目的。

另一方面,通过将系统自动重启的程序respawn改成自定义的respawn程序,该自定义的respawn程序中可以检查终端监听程序的启动次数,当终端监听程序启动的次数超过预设阈值时,系统可以终止终端监听程序,并启动登录验证程序,等待系统管理员的处理,因此可以避免终端监听程序本身存在严重故障时,导致系统忙于无限重启终端监听程序的状态,造成console端口无法进行任何操作,从而可以实现提高设备可用性的目的。

此外,通过内核态程序检测在定时时间内是否接收到终端监听程序周期性发送的存活信息,来判断终端监听程序是否处于无响应状态。当终端监听程序处于无响应状态,内核态程序则可以终止终端监听程序,通过respawn自动重启终端监听程序,因此可以避免终端监听进程卡住时,终端监听程序长时间无法提供服务的情况的发生,从而可以实现提高设备可用性的目的。

与前述一种Linux系统的初始化方法的实施例相对应,本申请还提供了一种Linux系统的初始化装置的实施例。

本申请一种Linux系统的初始化装置的实施例可以应用在搭载Linux系统的终端设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在搭载Linux系统的终端设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本申请一种Linux系统的初始化装置所在搭载Linux系统的终端设备的一种硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的搭载Linux系统的终端设备通常根据该Linux系统的初始化装置的实际功能,还可以包括其他硬件,对此不再赘述。

请参考图3,图3为本申请一示例性实施例示出的一种Linux系统的初始化装置,应用于搭载Linux系统的终端设备,其中,所述Linux系统的inittab文件中的respawn指定的程序被修改为自定义respawn程序(以下简称respawn程序),所述装置包括:运行单元310,判断单元320,执行单元330。

其中,运行单元310,用于当终端监听程序失去响应时,内核态程序终止该终端监听程序;当终端监听程序退出时,运行所述respawn指定的程序;

判断单元320,用于respawn程序判断在预设周期内终端监听程序启动次数是否达到预设阈值;

执行单元320,用于如果所述启动的次数达到预设阈值,则启动登录验证程序;如果所述启动的次数未达到预设阈值,则重新启动终端监听程序。

在本例中,所述装置还包括:

检查单元,用于内核态程序启动定时器,并检查在预设时长内是否接收到终端监听程序发送的所述存活信号;

确定单元,用于如果在预设时长内,未接收到终端监听程序发送的存活信号,则确定终端监听程序异常。

生成单元,用于当启动所述终端监听程序时,生成与该终端监听程序启动的时刻对应的时刻记录;

统计单元,用于基于所述时刻记录的条数统计所述终端监听程序启动的次数。

清空单元,用于将生成的所述终端监听程序启动的时刻对应的时刻记录清空。

其中,所述预设阈值为:所述预设周期对应的时长,与所述终端监听程序启动所需的时长和管理员手动终止所述终端监听程序的自动重启的时长之和的比值。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1