用于使用预引导数据引导计算机系统的系统和方法

文档序号:6480040阅读:272来源:国知局

专利名称::用于使用预引导数据引导计算机系统的系统和方法用于使用预弓I导数据弓I导计算机系统的系统和方法
背景技术
:在具有混合信息技术(IT)基础设施的计算机网络中,一些客户机相对于同一网络上的其它客户机可能需要不同的操作系统(OS)。操作系统的例子包括Linux,Windows或DOS,仅举几个例子。在一些网络中,使用预引导执行环境(PX^执行引导。PXE是这样一种环境,在该环境中可以经由网络接口而不考虑本地操作系统或诸如本地硬盘驱动器之类的存储设备来引导网络计算机。而且,不同客户机可能需要从同一PXE服务器引导不同的操作系统。在这样的网络中,管理单一PXE服务器上的多个操作系统是一个有挑战性的问题。在已知的网络中,不同的PXEOS映像由PXE服务器主控,并且基于网卡的MAC地址或客户端系统的IP范围来引导客户机。如果客户端系统的MAC地址或IP地址改变,需要PXE服务器侧的配置改变。举个例子,PXELINUX系统将如下所述地在引导服务器上搜索它的配置文件。首先,系统将使用客户端通用唯一标识符(UUID)搜索配置文件,如果PXE栈提供了客户端通用唯一标识符的话。应该注意,一些基本输入/输出系统(BIOS)没有有效的UUID,并且可以代替例如全逻辑一的数据,而不是使用小写十六进制数字的标准UUID格式的数据。系统然后可以使用利用它的地址解析协议(ARP)类型码的硬件类型和地址来搜索配置文件,全部均为带破折号分隔符的小写十六进制。例如,对于地址为88:99:AA:BB:CC:DD的以太网(ARP类型1),系统可以搜索文件名01-88-99-aa-bb-cc-dd。如果使用这些技术没有发现配置文件,系统将使用它自己的大写十六进制的IP地址搜索配置文件,例如192.0.2.91->C000025B。包含的程序“gethostip”可以用来计算任何主机的十六进制IP地址。如果使用这个技术没有发现相应的配置文件,系统可以移除一位十六进制数字并再次尝试。如果没有发现配置文件,系统将最终尝试寻找名字为“default”(小写字母)的文件。下面的列表显示了在PXELINUX系统中搜索配置文件的顺序,该系统具有引导文件名为/mybootdir/pxelinux.0、UUID为b8945908-d6a6-41a9-611d_74a6ab80b83d、以太网MAC地址为88:99:AA:BB:CC:DD和IP地址为192.0.2.91/mybootdir/pxelinux.cfg/b8945908-d6a6-41a9-611d-74a6ab80b83d/mybootdir/pxelinux.cfg/01_88_99_aa_bb_cc_dd/mybootdir/pxelinux.cfg/C000025B/mybootdir/pxelinux.cfg/C000025/mybootdir/pxelinux.cfg/C00002/mybootdir/pxelinux.cfg/COOOO/mybootdir/pxelinux.cfg/COOO/mybootdir/pxelinux.cfg/0/mybootdir/pxelinux.cfg/CO/mybootdir/pxelinux.cfg/C/mybootdir/pxelinux.cfg/default在使用UUID来识别要引导的系统的情况下已知的识别要使用PXE来引导的操作系统的尝试是不灵活的,因为每个机器被绑定到特定的操作系统。使得使用MAC地址的系统不利,因为如果改变了网络适配器,则需要改变服务器侧配置。使得使用客户端IP地址的系统不利,因为当关联的DHCP服务器给客户端分配不同的IP地址时,需要改变服务器侧配置。在下面的详细说明中参考附图描述某些示例性实施例,附图中图1是根据本发明的示例性实施例的计算机网络的框图,在该计算机网络中,客户端计算机系统从PXE服务器引导;图2是根据本发明的示例性实施例的示出使用预引导数据引导计算机系统的方法的过程流程图;图3是根据本发明的示例性实施例的示出提供与预引导数据相对应的引导数据的方法的过程流程图;和图4是根据本发明的示例性实施例的示出存储适用于促进引导计算机系统的代码的有形机器可读介质的框图。具体实施例方式根据本发明的示例性实施例,通过在硬盘驱动器或任何可写入存储介质(例如闪存或USB驱动器)上预定义诸如状态和/或操作系统签名之类的预引导数据,消除了对服务器侧PXE设置/配置改变的需要,该预引导数据可由PXE服务器侧的代码读取以确定用于请求被引导的客户机的诸如PXE操作系统的正确引导数据。本发明的一个示例性实施例中,PXE服务器发送引导加载器,其适用于响应于引导请求而读取预引导数据。预引导数据被合并到返回到PXE服务器的对引导数据的请求中。根据本发明的示例性实施例的方法允许改变硬盘驱动器或可写入存储介质上的预引导数据,以定义下次引导客户端计算机系统时提供的引导数据。在本发明的一个示例性实施例中,预引导数据包括操作系统标识符。改变客户端的存储介质上的操作系统标识符将导致客户端计算机系统用PXE引导选择的任何操作系统。如果在存储介质上没有发现有效的预引导信息或如果PXE服务器不能检测或读取存储介质,则客户端计算机系统将引导缺省的PXE操作系统。图1是根据本发明的示例性实施例的计算机网络的框图,在该计算机网络中,客户端计算机系统从PXE服务器引导。该计算机网络大体由参考数字100指代。计算机网络100包含客户端计算机系统102。本发明的一个示例性实施例中,客户端计算机系统102适用于使用PXE引导,如下面完整描述的。客户端计算机系统102包含处理器104,其通常控制系统的整体操作。处理器104适用于访问系统存储器106,其可以包含随机存取存储器(RAM)。另外,处理器104适用于访问盘驱动器108。盘驱动器108包含预引导数据区域110。预引导数据区域110是存储预引导数据的盘区域。存储在预引导数据区域110中的预引导数据由预引导加载器读取并作为对引导数据的请求的一部分传输到服务器。本发明的一个示例性实施例中,预引导数据可以包含操作系统标识符,诸如与要使用PXE引导的操作系统相对应的预定义状态或签名。尽管在图1显示的示例性实施例中预引导数据区域110举例说明为驻留在硬盘上,但是预引导数据区域110可以位于其它类型的存储介质上,诸如非易失性存储器、USB驱动器、DVD、CD等等。客户端计算机系统102包括网络适配器112,其可以用来将客户端计算机系统102连接到网络114。PXE服务器116可以通过网络114访问客户端计算机102。本领域普通技术人员将意识到PXE服务器116可以包括处理器和一个或多个用于存储管理其操作的计算机可读指令的数据存储设备。在本发明的一个示例性实施例中,客户端计算机系统102使用PXE引导。当客户端计算机加电或重置时,PXE引导过程启动。最初,客户端计算机系统102向PXE服务器116传输要被引导的请求。作为响应,PXE服务器116发送引导加载器,其适用于读取存储在预引导数据区域110中的预引导数据。引导加载器将预引导数据合并到传输到PXE服务器116的对引导数据的请求中。如前所述,预引导数据可以包括操作系统标识符,其标识下次引导客户端计算机系统102时使用的特定操作系统。预引导数据还可以包括下次引导客户端计算机102时采取的特定动作。可以由预引导数据用信号表示的动作的例子包括修理文件系统错误、清除(clearout)硬盘驱动器、执行客户映像修改等等。预引导数据可以用信号表示要例如通过改变网络引导路径、更改虚拟机的机器硬件配置等等来修改配置文件。在本发明的一个示例性实施例中,预引导数据可以标识客户端计算机系统102是否需要重新映像并重新引导。在其中预引导数据包括操作系统标识符的本发明的一个示例性实施例中,客户端计算机系统102向PXE服务器116发送引导请求。作为响应,PXE服务器116发送引导加载器,其从预引导数据区域110中读取操作系统标识符。在读取操作系统标识符后,引导加载器将其合并入引导数据请求中,该请求传输到PXE服务器116。作为响应,PXE服务器116将包含由操作系统标识符所标识的操作系统的引导数据提供给客户端计算机系统102,客户端计算机系统102引导该操作系统。本发明的一个示例性实施例中,预引导数据区域110可以包括硬盘驱动器的预定义的扇区位置。预引导数据区域110可以使用已知的方法(诸如使用INT13)读取。下面所述的示例性代码中示出了读取第一主引导介质的PXELinux.asm修改。在由代码举例说明的示例性实施例中,扇区63偏移109用来定义工具环境类型$Header:$;buildwithnasm-fbin-οloader.com-Icomecho.lstcomecho.asm;COMBOOTprogramthatjustprintsoutitsowncommandline.;ThisalsoworksinDOS.jorg100h一start:xorcx,cxmovcl’[80h];CommandlineIenmovsi,81h;Commandlinemovdl’"#";printdelimitertokenmovah’02hint21h;copythestringat0x80tothezeroterminatedversionin.data.copystring;Iodsb;mov[cmdline],al;movBYTE[cmdline+1],O;movdx,cmdline;movah,09h;int21h;loop.copystring;jmpcomplete;restorestate;xorcx,cx;movcl,[80h]:CommandlineIen;movsi,81h;Commandline.writachar:Iodsbmovdl,almovah,02hint21hloop.writecharmovdx,end_strmovah,09hint21hmovdx,Ioadmsgmovah,09hint21h;;HPSPECIFICPATCHES;;firsttrysystemidthingmovdx,chksysidmovah,09hint21hmovax,0e800hint15hjccheck_mbr;nowtrytosetmfgmodemovdx,chkmfgmovah,09hint21hmovax,0000e845hmovbh,1hmovbl,1hmovcx,0006hint15hjccheck_mbr;nowrebootwithapowercyclemovdx,powercyclemovah,09hint21h;Disablepowercyclefornow;movax,0xe826;int0x15;checkmbrcheck_mbr:movdx,chkmbrmovah’09hint21hmovah,2moval,1movch,0movcl,1movdh,Omovbx,1000hmovdl,0x80int0x13;jncmbrJn_okcmpah,6"jembr_in_okjmpnormal_process;toofarfornormaljccallmbrjn—ok:cmpword[11feh],0xaa55;checkformagicchecksumjembr—validjmpget_uia;hopifnosignaturembr_valid:movdl,[11feh]shrdl,4;leavehighpartonly,adddl’030hmovah,02h;teletypesub-function,int21hmovdl,[Hfeh]anddl,Ofh;leavehighpartonly,adddl,030hmovah,02h;teletypesub-function,int21hmovdx,mbrsokmovah,09hint21hmovdi,O;Settozero;checkeachoftheslotsforsomethingvalidcmpbyte[11beh],80hjembr_bootablecmpbyte[11ceh],80hjembr_bootablecmpbyte[11deh],80hjembr_bootablecmpbyte[11eeh],80hjembr_bootablejmpget—uiambr—bootable:movdx,mbrokmovah,09hint21hmovdi,1;FlagsettorememberMBRisbootable;now,pullηthecpquiastructureandseewhatthestageis...get_uia:movDWORD[100dh],012345678hmovah,2moval,1movch,Omovcl,03fhmovdh,Omovbx,OIOOOhmovdl,080hint013h;jncuia_in_okcmpah,Ojeuia_in_okmovdx,uiafailmovah,09hint21hjmpnormaljDrocessuia_in_ok:;sometimestheuiain63isntthere-itreallylivesin31onraiddrivesmovdl,[102eh]shrdl,4;leavehighpartonly,adddl’030hmovah,02h;teletypesub-function,int21hmovdl,[l02eh]anddl,Ofh;leavehighpartonly,adddl,030hmovah,02h;teletypesub-function,int21hcmpdword[1OOdh],55ff55fthjestage_checkmovdx,badusigmovah,09hint21hmovah,2moval,1movch,0movcl,32movdh,Omovbx,1000hmovdl,0x80int0x13;jcnormal—processcmpah,Oj门θnormaljarocessmovdl,[1000h]shrdl,4;leavehighpartonly,adddl,030hmovah,02h;teletypesub-function,int21hmovdl,[1000h]anddl,Ofh;leavehighpartonly,adddl,030hmovah,02h;teletypesub-function,int21h;ifwedontlikethisone,wehavenooptions-bailcmpdword[100dh],55ff55ffhjestage一checkmovdx,badusigmovah,09hint21hjmpnormaljarocessstage—check:cmpdi’1;MBRshouldbebootablejnenormal_processnot」01:cmpword[102eh],111jnenot_111movdx,s111movah’09hint21hjmplocal_bootnot_111:cmpword[102eh],222jnenot_22movdx,5222movah’09hint21hjmplocal_bootnot_222:cmpword[102eh],333jnenot_333movdx,s333movah,09hint21hjmpIocaLboot10not_333:cmpword[102eh],444jne门ormaLprocessmovdx,s444movah,09hInt21hjmplocal—boothack一common:normal_process:movdx,fnetwork;printinfotoscreenmovah,09hint21h;movah,l;getchar;int021h;movax,Ofh;gettheipinformation;int022h;CheckDSG;cmpdword[1109h],00475344h;jnewpe;CheckWDTcmpdword11109h],00544457hjneIinuxwpe:movcx,1movsi.forcewpemovbx.fbwline;Commandlinemovedx,0movax,16hint022hjmpcompleteIinux:movcx,1movsi.forcebootmovbx.tbcline;Commandlinemovedx,0movax,16hint022hjmpcompletelocal_boot:cmpdi,1;MBRshouldbebootablejnenormal_processmovdx,Ibootmovah,09hint21h;thisislocalboot-thereisagetcharafterwardtotrapanythinguglymovax,014hmovdx’0int022h11jmpcompletecomplete:movdx,Iexitmovah,09hint21h;getcharmovah,1int21h;Exitwithnearreturn,INT20h,orINT21hAX=4C00hretend—strdb">",ODh,OAh,"$"section.data;cmdline:resb128forcebootdb'cpqpxe.1',O1"$"fbclinedb'nfsroot=ia32irqfixupreboot=c,b.,O,"$"forcewpedb'pxeboot.O',O,"$"fbwlinedb'lnitrd=tcpdos.1floppy=0keeppxe',O1"$"IoadmsgdbODh1OAh,'sosdintelligentloader-version1.0004',"$"chksysiddbODh,OAh,'checkingsysidsupport',"$"chkmfgdbODh,OAh1'checkingmfgmodesupport',"$"mbrsokdbODh1OAhl'mbrsignatureseemsokay...',"$"powercycledbODh,OAhj'powercycling...',"$"chkmbrdbODh,OAh,'checkingmbr...',"$"uiafaildbODh,OAh1'failedtoreaduia...',"$"badusigdbODh,OAh,'uiasignatureisinvalid...',"$"mbrokdbODh1OAh,'mbrlooksokay..,"$"s111dbODh,OAh1'stage111-bootingdiags...',··$"s222dbODh,OAh,'stage222-bootingghost...',"$"s333dbODh,OAh,'stage333-bootingIsdv...',"$"s444dbODh,OAh,'stage444-bootingpostprocessing...',"$"fnetworkdbODh,OAh,,notusablestate-networkbooting...Odh1Oah,"$"IbootdbODh,OAh,'bootinglocaldisk..,"$"IexitdbODh,OAh,'exitingloader...',"$"FaiIM已RReaddbOah1'FailedtoreadMBROOkMBRReaddbOah1'MBRpagedin...',OGoodMBRdbOah,'MBRseemsvalid.',OBadMBRdbOah1'MBRisgarbage.',OBootabledbOah1'MBRisbootable.',ONoBootabIedbOah1’MBRisNOTbootable.',OUiaNoReaddbOah1'UnabletoreadUIAfromdisk',OUiaMissingdbOah1'UIAsignatureisbad.',OUiaSigIsdbOah1'UIAsignatureis:·’OUiaStageIsdbOah1'UIAstageis:',OCaIIingOpendbOahj'Callingopen()',OFetchingKerneIdbOah,'FetchingCPQPXE.1...',Otabledb'0123456789abcdef图2是示出根据本发明的示例性实施例的使用预引导数据引导计算机系统的方法的过程流程图。该方法大体由参考数字200指代。在方框202,该方法开始。在方框204,传输引导请求。本发明的一个示例性实施例中,由诸如客户端计算机系统102(图1)之类的客户端计算机系统传输引导请求。如在方框206所示,响应于该引导请求,接收适用于读取预引导数据的引导加载器。在方框208,传输对与预引导数据相对应的引导数据的请求。在本发明的一个示例性实施例中,将预引导数据传输到诸如PXE服务器116(图1)之类的PXE服务器。在方框210,接收与引导数据请求相对应的引导数据。如在方框212所示,引导计算机系统。在方框214,该方法结束。图3是示出根据本发明的示例性实施例的提供与预引导数据相对应的引导数据的方法的过程流程图。该方法大体由参考数字300指代。在本发明的一个示例性实施例中,方法300可以由诸如图1中显示的PXE服务器116之类的PXE服务器来执行。在方框302,该方法开始。如在方框304所示,从客户端计算机系统接收引导请求。在方框306,将适用于读取预引导数据的引导加载器提供给客户端计算机系统。如在方框308所示,从客户端计算机系统接收与预引导数据相对应的引导数据请求。如在方框310所示,将与引导数据请求相对应的引导数据提供给客户端计算机系统。在本发明的一个示例性实施例中,预引导数据可以包括操作系统标识符,以及相应的引导数据可以包括由操作系统标识符所标识的操作系统。图4是示出根据本发明的示例性实施例的存储适用于促进引导计算机系统的代码的有形机器可读介质的框图。有形机器可读介质大体由参考数字400指代。有形机器可读介质400可以包括一个或多个硬盘驱动器、非易失性存储器、USB驱动器、DVD、⑶等等。在本发明的一个示例性实施例中,有形机器可读介质可由客户端计算机系统102(图1)访问。示例性的有形机器可读介质400存储代码402,其适用于传输引导请求。有形机器可读介质400上还存储代码404,其适用于响应于引导请求而接收适用于读取预引导数据的引导加载器。在本发明的一个示例性实施例中,引导加载器包括修改的PXE引导加载器。有形机器可读介质400还存储代码406和代码408,代码406适用于传输对与预引导数据相对应的引导数据的请求,代码408适用于接收与预引导数据相对应的引导数据。最后,代码410被存储在有形机器可读介质400上,代码410适用于使用与预引导数据相对应的引导数据引导计算机系统。本领域普通技术人员将意识到本发明的一个示例性实施例希望地允许在客户端侧配置PXE引导参数,诸如操作系统的选择。而且,可以消除服务器侧的配置管理。在本发明的一个示例性实施例中,提供了PXE引导操作系统的动态选择。另外,本发明的一个示例性实施例通过允许同一客户端计算机在不同时间引导不同的PXE操作系统而提供了灵活性。通过这种方式,可以改进制造过程。另外,本发明的一个示例性实施例可以提供客户端计算机系统的自动化和可管理性。这样的示例性实施例可以促进从单一物理硬件上的PXE环境管理虚拟机的操作系统映像(例如,Win7、Vista、XP、Linux等等)。权利要求1.一种使用预引导数据引导计算机系统的方法,该方法包括传输引导请求;响应于该引导请求,接收适用于读取预引导数据的弓I导加载器;传输对与该预引导数据相对应的引导数据的请求;接收与该预引导数据相对应的引导数据;和使用该引导数据引导所述计算机系统。2.如权利要求1所述的方法,其中该预引导数据包括操作系统(OS)标识符。3.如权利要求2所述的方法,其中该引导数据包括由该操作系统标识符所标识的操作系统。4.如权利要求1所述的方法,其中该预引导数据包括在客户端计算机系统上执行特定动作的请求。5.如权利要求1所述的方法,其中该预引导数据包括修改客户端计算机系统的配置文件的请求。6.如权利要求1所述的方法,其中该预引导数据包括重新映像客户端计算机系统的请求。7.如权利要求1所述的方法,其中,在预执行环境(PXE)中从客户端计算机系统读取该预引导数据。8.一种将与预引导数据相对应的引导数据提供给计算机系统的方法,该方法包括从客户端计算机系统接收引导请求;向该客户端计算机系统提供适用于读取预引导信息的引导加载器;从该客户端计算机系统接收与预引导数据相对应的引导数据请求;和将与该预引导数据相对应的弓I导数据提供给该客户端计算机。9.如权利要求8所述的方法,包括使用该引导数据引导该客户端计算机系统。10.如权利要求8所述的方法,其中该预引导数据包括操作系统(OS)标识符。11.如权利要求10所述的方法,其中该引导数据包括由该操作系统标识符所标识的操作系统。12.如权利要求8所述的方法,其中该预引导数据包括在该客户端计算机系统上执行特定动作的请求。13.如权利要求8所述的方法,其中该预引导数据包括修改该客户端计算机系统的配置文件的请求。14.如权利要求8所述的方法,其中该预引导数据包括重新映像该客户端计算机系统的请求。15.一种计算机系统,包括处理器;有形机器可读存储介质,其存储由该处理器执行的有形机器可读指令,该有形机器可读指令包括适用于传输引导请求的代码、适用于响应于该引导请求而接收适用于读取预引导数据的引导加载器的代码、适用于传输对与该预引导数据相对应的引导数据的请求的代码、适用于接收与该预引导数据相对应的引导数据的代码、和适用于使用该引导数据引导计算机系统的代码。全文摘要在此公开的本发明的示例性实施例涉及一种使用预引导数据引导计算机系统的方法。根据本发明的示例性实施例的方法包括传输引导请求;和响应于该引导请求,接收适用于读取预引导数据的引导加载器。示例性方法还可以包括传输对与该预引导数据相对应的引导数据的请求;接收与该预引导数据相对应的引导数据;和使用该引导数据引导计算机系统。文档编号G06F15/00GK102257475SQ200880132436公开日2011年11月23日申请日期2008年12月18日优先权日2008年12月18日发明者S·S·阿扎姆,Z·贝亚巴尼申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1