WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Correcting for changed client machine hardware using a server-based operating system    
United States Patent6209089   
Link to this pagehttp://www.wikipatents.com/6209089.html
Inventor(s)Selitrennikoff; Sean (Bellevue, WA), Barr; Adam D. (Redmond, WA), Lenzmeier; Charles T. (Woodinville, WA)
AbstractMethods and systems for adjusting an operating system configuration according to changes in hardware components of a client computer. The adjusted operating system can boot on the client computer regardless of changes in the hardware configuration of the client computer since it was last connected to a network server. Before the operating system boots, a preliminary connection is established between the client computer and the server. During the preliminary connection, the system identifies hardware components that are new and that must be supported by the operating system for bootup to occur. In particular, the server sends information relating to the previous client hardware configuration to the client computer. The client computer compares its current hardware configuration to the previous hardware configuration information, thereby identifying its new hardware components. Information identifying the new hardware components is sent to the server. The server locates operating system components or device drivers that support the new hardware components and stores them in a specified repository at the server. The operating system, which is now reconfigured to support the current client hardware components, is downloaded to the client computer and boots thereon.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 6209089
Correcting for changed client machine hardware using a server-based
     operating system - US Patent 6209089 Drawing
Correcting for changed client machine hardware using a server-based operating system
Inventor     Selitrennikoff; Sean (Bellevue, WA) , Barr; Adam D. (Redmond, WA) , Lenzmeier; Charles T. (Woodinville, WA)
Owner/Assignee     Microsoft Corporation (Redmond, WA)
Patent assignment
All assignments
Publication Date     March 27, 2001
Application Number     09/133,312
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     August 12, 1998
US Classification     713/2 714/6
Int'l Classification    
Examiner     Beausoleil; Robert
Assistant Examiner     Ziemer; Rita
Attorney/Law Firm     Workman, Nydegger & Seeley
Address
Parent Case    
Priority Data    
USPTO Field of Search     713/2 713/1 714/6 714/35 380/4
Patent Tags     correcting changed client hardware server-based operating
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5974474
Furner et al.

Oct,1999

[0 after 0 votes]
5974547
Klimenko

Oct,1999

[0 after 0 votes]
5867714
Todd et al.

Feb,1999

[0 after 0 votes]
5872956
Beal et al.

Feb,1999

[0 after 0 votes]
5864664
Capps, Jr. et al.

Jan,1999

[0 after 0 votes]
5852713
Shannon

Dec,1998

[0 after 0 votes]
5758165
Shuff

May,1998

[0 after 0 votes]
5675800
Fisher, Jr. et al.

Oct,1997

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed and desired to be secured by United States Letters Patent is:

1. In a system including a client computer, a server computer, and a network infrastructure, in which the server computer provides operating system components to the client computer via the network infrastructure, a method of using the server computer for adjusting the operating system components in a client computer hardware configuration in response to replacement or other change of a hardware component and booting the operating system components on the client computer, the method comprising the following steps:

establishing a connection between the client computer and the server computer over the network infrastructure before booting the operating system components on the client computer, and transmitting from the server computer to the client computer the number of times the client computer has booted its operating system while connected to the server;

transmitting information identifying the replacement hardware component from the client computer to the server computer;

modifying the operating system components in response to the transmitted information before booting the operating system components;

transmitting the operating system components from the server computer to the client computer; and

booting the operating system components on the client computer.

2. A method as defined in claim 1, wherein the replacement hardware component is such that the operating system components could not boot on the second client computer in the absence of the step of modifying the operating system components.

3. A method as defined in claim 1, further comprising, before the step of transmitting information identifying the replacement hardware component, the step of sending from the server computer to the client computer previous hardware information identifying the previous hardware component.

4. A method as defined in claim 3, further comprising the step of determining that the replacement hardware component has replaced the previous hardware component by comparing the previous hardware information to replacement hardware information identifying the replacement hardware component.

5. A method as defined in claim 1, wherein the step of transmitting the number of times the client computer has booted the operating system components while being connected to the server computer is comprised of transmitting a server-side boot serial number from the server computer to the client computer, the server-side boot serial number representing the number of times the client computer has booted the operating system components while being connected to the server computer.

6. A method as defined in claim 5, further comprising the steps of:

comparing the server-side boot serial number to a client-side boot serial number, wherein the server-side boot serial number is greater than the client-side boot serial number if the client computer last booted without access to a hard disk at the client computer; and

if the server-side boot serial number is greater than the client-side boot serial number, then disabling a local cache stored on the hard disk before the step of booting the operating system components.

7. A method as defined in claim 1, further comprising the step of transmitting a previous hard disk serial number from the server computer to the client computer the previous hard disk serial number identifying a previous hard disk included in the client computer when the client computer was last connected to the server computer.

8. A method as defined in claim 7, further comprising the steps of:

comparing the previous hard disk serial number to a current hard disk serial number identifying a current hard disk included in the client computer; and

if the previous hard disk serial number is different from the current hard disk serial number, then disabling a local cache stored on the current hard disk before the step of booting the operating system components.

9. A method as defined in claim 1, wherein the step of transmitting information identifying the replacement hardware component comprises the step of transmitting data identifying a replacement motherboard included in the client computer.

10. A method as defined in claim 9, further comprising, before the step of transmitting data identifying the replacement motherboard, the step of comparing the data identifying the replacement motherboard with previous motherboard information identifying a previous motherboard included in the client computer when the client computer was last connected to the server computer, the previous motherboard information having been sent from the server computer to the client computer.

11. A method as defined in claim 1, wherein the step of transmitting information identifying the replacement hardware component comprises the step of transmitting data identifying a replacement network interface card included in the client computer.

12. A method as defined in claim 11, further comprising, before the step of transmitting data identifying the replacement network interface card, the step of comparing the data identifying the replacement network interface card with previous network interface card information identifying a previous network interface card included in the client computer when the client computer was last connected to the server computer, the previous network interface card information having been sent from the server computer to the client computer.

13. In a networked system including a server computer and a network infrastructure over which the server computer can download operating system components to client computers, a method of using the server computer for adjusting the operating system components in response to a change in the hardware configuration that results from a replacement of a first client computer with a second client computer and booting the operating system components on the second client computer, the first client computer having a first hardware component and the second client computer having a corresponding second hardware component that is of a different type than the first hardware component, the method comprising the following steps:

establishing a connection over the network infrastructure between the second client computer and the server computer prior to booting the operating system components on the second client computer, and transmitting a server-side boot serial number from the server computer to the second client computer, the server-side boot serial number representing the number of times the first client computer has booted the operating system components while being connected to the server computer;

determining, by the second client computer, that the second hardware component is of a different type than the first hardware component;

transmitting information identifying the second hardware component from the second client computer to the server computer;

modifying the operating system components in response to the transmitted information before booting the operating system components, the modified operating system components being compatible with the second hardware component;

transmitting the operating system components from the server computer to the second client computer; and

booting the operating system components on the second client computer.

14. A method as defined in claim 13, wherein the second hardware component is such that the operating system components could not boot on the second client computer in the absence of the step of modifying the operating system components.

15. A method as defined in claim 13, wherein the step of modifying the operating system components comprises the steps of:

identifying, by the server computer, software that supports the second hardware component; and

installing the software in an operating system directory located at the server computer and associated with the second client computer.

16. A method as defined in claim 13, further comprising the step of maintaining a local cache at the second client computer, including a copy of the operating system components provided by the server computer.

17. A method as defined in claim 13, further comprising, after the step of booting the operating system components, the step of further modifying the operating system components to support changed hardware components of the second client computer other than the second hardware component.

18. In a system including a client computer, a server computer, and a network infrastructure, in which the server computer provides operating system components to the client computer via the network infrastructure, a method for limiting access to a hard disk on the client computer before the operating system components are booted on the client computer, the method comprising the following steps:

establishing a connection between the client computer and the server computer over the network infrastructure before booting the operating system components on the client computer, the server computer having a repository wherein client information associated with the client computer is stored, the client information including operating system components compatible with the client computer;

transmitting from the server computer to the client computer a server-side boot serial number from the server computer to the client computer, the server-side boot serial number representing the number of times the client computer has booted the operating system components while being connected to the server computer;

recognizing that a hard disk at the client computer does not have a complete copy of the client information;

disabling the hard disk;

downloading the operating system components over the network infrastructure from the server computer to the client computer; and

booting the operating system components on the client computer without the assistance of the hard disk.

19. A method as defined in claim 18, wherein the step of recognizing that the hard disk does not have a complete copy of the client information comprises the step of comparing a hard disk serial number associated with the hard disk to a previous hard disk serial number associated with a previous hard disk included in the client computer when the client computer was last connected to the server computer.

20. A method as defined in claim 18, wherein the step of recognizing that the hard disk does not have a complete copy of the client information comprises the step of recognizing that the client computer has not previously been connected to the server.

21. A method as defined in claim 18, wherein the step of recognizing that the hard disk does not have a complete copy of the client information comprises the step of comparing a server-side boot serial number to a client-side boot serial number, wherein the server-side boot serial number represents the number of times the client computer has booted the operating system components while being connected to the server computer, and wherein the client-side boot serial number is less than the server-side boot serial number if the client computer last booted without access to the hard disk.

22. A method as defined in claim 18, further comprising, after the step of booting the operating system, the steps of:

enabling the hard disk; and

storing a complete copy of the client information on the hard disk.

23. In a system including a client computer, a server computer, and a network infrastructure, in which the server computer provides operating system components to the client computer via the network infrastructure, a method for adjusting the operating system components in response to a change in a client computer hardware configuration and booting the operating system components on the client computer, the method comprising the following steps:

establishing a connection between the client computer and the server computer prior to booting the operating system components on the client computer;

transmitting from the server computer to the client computer the number of times the client computer has booted its operating system while connected to the server;

transferring information between the client computer and the server computer via the connection, wherein the information identifies either current hardware components of the client computer or previous hardware components of the client;

comparing the information identifying the current hardware components with the information identifying the previous hardware components so as to identify any of the current hardware components that have changed since the client computer was last connected to the server computer;

if any of the current hardware components has changed, and if at least one changed hardware component requires a modification of the operating system components before the operating system components can be booted on the client computer, then placing, by the server computer, software components that support the modification in an operating system directory accessible to the client computer; and

booting the operating system components, including any software components, on the client computer.

24. In a server computer interconnected with a client computer via a network infrastructure, a computer program product for implementing a method for adjusting operating system components in response to a change in a client computer hardware configuration and providing the operating system components to the client computer, the computer program product comprising:

a computer-readable medium for carrying computer-executable instructions, wherein said computer-executable instructions comprise:

code means for establishing a connection between the client computer and the server computer, the connection being established prior to booting the operating system components on the client computer;

code means for transmitting from the server computer to the client computer the number of times the client computer has booted its operating system while connected to the server;

code means for transmitting to the client previous hardware information identifying a previous hardware component of the client computer;

code means for receiving from the client computer, prior to booting the operating system components on the client computer, notification that a replacement hardware component of the client computer has replaced the previous hardware component;

code means for modifying operating system components stored in the server computer so as to be compatible with the replacement hardware component; and

code means for initiating transmission of the modified operating system components to the client computer over the network infrastructure so that the modified operating system components can be booted on the client computer.

25. A computer program product as defined in claim 24, wherein the computer-readable medium further carries computer-readable data comprising the previous hardware information.

26. A computer program product as defined in claim 24, wherein the code means for modifying operating system components comprise code means for identifying software that supports the replacement hardware component.

27. A computer program product as defined in claim 26, wherein the code means for modifying operating system components further comprise code means for installing the software in an operating system directory on the computer-readable medium and associated with the client computer.

28. A computer program product as defined in claim 24, wherein the computer-executable instructions further comprise code means for initiating transmission of information stored in a client directory on the computer-readable medium to the client computer, such that a copy of the information can also be stored at the client computer.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. The Field of the Invention

The present invention relates to methods and systems for booting computers over a network using an operating system stored on a server. In particular, the present invention relates to methods and systems for booting computers over a network regardless of changes in the hardware configuration of the computers since the last time the computers were connected to the server.

2. The Prior State of the Art

As computers have become more powerful and less expensive, their acceptance and use in business have continually increased over the years, and are now standard in many industries. The increasing use of computer networks has been a significant factor in employee productivity gains in the economy. Because the price of computers has generally decreased over the years, the purchase price of a computer is now often a relatively small percentage of the total cost of owning and operating a computer in the business setting. Increasingly, from a business standpoint, the total cost of ownership is a significant factor in the number of computers owned by a business and the breadth of activities in which computers are used. Frequently, a major portion of the total cost of ownership includes installation of new computers and new hardware, the cost of software, and general network administration.

Sometimes, as a result of software problems or hardware failure, a client computer may be rendered temporarily or permanently unusable. For example, the hard disk or the motherboard of a client computer is subject to the risk of failure, with the result that the failed hardware must be replaced or an entirely new computer must be substituted for the failed device. The cost of computer failure includes not only the cost of purchasing new hardware or a new computer but also the time required to physically connect the computer to the network and to configure the computer and the server in order to boot the new computer and make it available to a user. Furthermore, a significant amount of time and cost may be spent in reinstalling and configuring programs that had been used on the particular failed computer.

An example of a typical computer network in the prior art is illustrated in FIG. 1. Network 10 includes one or more server computers 12, one or more client computers 14, and a network infrastructure 16 that allows information to pass between the server computers and the client computers. If a computer 14 fails, it is likely that the hardware of a replacement computer is different from the hardware of the failed computer. If so, the operating system as previously configured may be incompatible with the new hardware. As a result, the administrator is ordinarily required to install the proper operating system software or device drivers in order to support the replacement computer. The administrator time spent in configuring the replacement client computer combined with the down time and associated loss in employee productivity from lack of access to the computer significantly contributes to the total cost of owning a computer in the business setting.

The cost and inconvenience of replacing a failed computer or failed hardware is particularly great when the failed hardware is the hard disk. Failure of a hard disk in a network setting such as that illustrated in FIG. 1 may involve the loss of a great deal of potentially valuable information. Furthermore, the cost of the lost data generally includes the employee time required to replace the data.

Certain types of hardware components are increasingly automatically installed and supported by operating systems and associated device drivers. For example, printers, sound cards, video cards and the like may be essentially automatically installed and supported by some operating systems with minimal or no user input. For instance, some operating systems automatically recognize the presence of changed hardware after the operating system boots on the computer and then update or install device drivers accordingly.

The foregoing method of automatically supporting new hardware has previously been inapplicable to hardware that operates during bootup and initial execution of the operating system software. Unless the changed hardware has already been recognized and the operating system software updated accordingly, the computer is unable to boot in the first place. However, without first booting the operating system, the presence and identity of the new hardware components cannot be detected. Thus, in the past, the foregoing two requirements have been mutually exclusive, and new hardware used during the bootup process has been incompatible with methods of automatic hardware recognition and automatic configuration of the operating system. As a result, when a hard drive or a motherboard, for example, is replaced with new hardware, the user has been required to manually reconfigure the operating system. The foregoing problem has been a significant hindrance in the otherwise successful effort of minimizing administrative attention needed to replace networked computers and update hardware.

In view of the foregoing, it would be a great advancement in the art to provide a system for automatically adjusting operating system software for new hardware components, particularly those that must operate during the booting process. Furthermore, it would be a great advantage to provide network systems wherein a replacement computer or replacement hardware may be installed and automatically supported by the servers with minimal or no user or administrator attention. It would be particularly advantageous if such methods would allow a replacement computer or replacement hard disk to automatically obtain the data stored on a previous or failed computer or hard disk. Such methods and systems would significantly reduce the total cost of ownership of computers in the business setting and would reduce the administrative costs of operating computer networks.

SUMMARY AND OBJECTS OF THE INVENTION

The present invention relates to methods and systems for booting client computers over a network using operating system components provided by a server computer. According to the invention, the client computers may be booted and automatically reconfigured regardless of changes made to the hardware components of the client computer since the last time the client computer was connected to the server. When replacement hardware or an entire computer is added to the network, the client computer may be connected to the network and booted with little or no user input. Moreover, the operating system is automatically updated in response to new hardware that must be operated during, the bootup process. According to the invention, the new computer or replacement hardware is treated by the servers just as the previous computer or hardware. Furthermore, if a hard disk has been replaced, the replacement hard disk automatically receives copies of information previously stored on the original hard disk. One result of the methods of the invention is that the new or modified computer is configured identically to the original computer from the point of view of the user.

According to the invention, a preliminary connection is established between the client computer and a server computer before the bootup operation is initiated. The preliminary connection is used to ensure that the operating system is properly configured and the appropriate device drivers for the critical hardware components are installed before bootup occurs.

In the preliminary connection, a globally unique identifier ("GUID") associated with the computer is transmitted from the client computer to the server. The transmitted globally unique identifier is used by the server to determine whether the particular client computer has previously accessed the network. If the server determines that the client computer is new to the network, the preliminary connection is used to ask the user whether the client computer is a new computer or a replacement computer for a previous computer. In the case where the client computer is a replacement computer, the user is prompted to identify the previous computer. In response to the information provided by the user, the server computer locates a GUID/server assignment repository containing information associating client computers with server computers. The server computer then replaces the previous computer's GUID in the GUID/server assignment repository with the replacement computer's GUID, thereby recognizing the new computer as a replacement.

During the preliminary connection, information relating to the previous hardware configuration of the client computer is transmitted from the server to the client computer. In particular, the transmitted information may relate to "critical" hardware components of the client computer, which must be properly supported in order to boot the operating system. Depending on the operating system used in the network environment, the critical hardware components may include the network interface card, the hard disk, and the motherboard.

The client computer receives the transmitted information and compares the current hardware configuration of the client computer to the previous hardware configuration. If critical hardware components of a new type are identified, and if the operating system is not yet configured to support the new critical hardware, the server installs the appropriate operating system components or device drivers. This is done, for example, by locating the appropriate operating system components or device drivers and copying them into a client operating system directory located at the server that serves the client computer. The updated operating system components and device drivers are thereby made available for transfer to the client computer.

In one implementation of the invention, the preliminary connection is used to determine whether the hard disk is a replacement, or whether the information that was contained in the hard disk of the client computer has been otherwise lost since the last time the client was connected to the server. If the hard disk information is not current, the hard disk may then be disabled during the balance of the booting process.

When the appropriate software is copied to the client operating system directory, bootup of the client computer proceeds by transmitting operating system components from the operating system directory to the client computer. These operating system components are compatible with the new hardware on the client computer such that the client computer boots with little or no user assistance. In addition, if the hard disk is new or otherwise has experienced a data loss, a backup copy of the lost data may be transferred from a storage location at the server computer to the client computer. In this manner, the client computer automatically and reliably obtains a copy of data files, application programs, and other information that were stored at the client computer when it was last connected to the server.

The invention is an advancement in the art by significantly reducing the administrative time and expense required in operating and owning computers and computer networks. When new hardware or new or replacement computers are connected to the network, the network automatically recognizes the new devices and adjusts the operating system in response thereto. If the computer fails, the replacement computer may be substituted therefor and may be operational almost immediately with minimal setup, configuration, or network adjustment.

Additional objects and advantages of the invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by the practice of the invention. The objects and advantages of the invention may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other objects and features of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

In order that the manner in which the above-recited and other advantages and objects of the invention are obtained, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:

FIG. 1 is a schematic diagram of a network of the prior art including client computers and server computers.

FIG. 2A is a schematic diagram of a network according to the invention, in which an entire computer or selected hardware components thereof may be replaced.

FIG. 2B is a schematic diagram of the network of FIG. 2A, further illustrating the manner in which operating system components are provided to the client computer by the server.

FIG. 3 is a schematic diagram of a server computer of the network of FIG. 2A, illustrating selected data structures and hardware components.

FIG. 4 is a schematic diagram of a client computer of the network of FIG. 2A, depicting selected data structures and hardware components.

FIG. 5 is a flow diagram generally depicting selected steps of a method of the invention for recognizing new hardware components and adjusting the operating system before booting the operating system on the client computer.

FIG. 6 is a schematic diagram illustrating a client computer repeatedly connected to the network without a hardware reconfiguration.

FIG. 7 is a schematic diagram illustrating the replacement of an original client computer with a replacement computers wherein the hardware of the original client computer and the hardware of the replacement client computer are of the same type.

FIG. 8 is a schematic diagram illustrating the replacement of an original client computer with a replacement computer, wherein the hardware of the original client computer and the hardware of the replacement client computer are of different types.

FIG. 9 is a schematic diagram showing the replacement of selected hardware components of a client computer with replacement hardware components.

FIGS. 10A-10C include a flow diagram illustrating the steps of one embodiment of a method for recognizing new hardware components and booting an operating system on the client computer over a network.

FIG. 11 is a flow diagram illustrating a sub-routine of the method of FIGS. 10A-10C, wherein the server computer recognizes a client computer as being a new or replacement client computer.

FIG. 12 is a flow diagram illustrating a sub-routine of the method of FIGS. 10A-10C, wherein the operating system is reconfigured for a new motherboard.

FIG. 13 is a flow diagram depicting a sub-routine of the method of FIGS. 10A-10C, wherein the operating system is reconfigured for a new network interface card.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The invention is described below by using diagrams to illustrate either the structure or processing of embodiments used to implement the system and method of the present invention. Using the diagrams in this manner to present the invention should not be construed as limiting of its scope. The embodiments of the present invention may comprise a special purpose or general purpose computer comprising various computer hardware, as discussed in greater detail below.

Embodiments within the scope of the present invention also include computer-readable media having computer-executable instructions or data fields stored thereon. Such computer-readable media can be any available media which can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired executable instructions or data fields and which can accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer-readable media. Executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions.

Although not required, the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by computers in network environments. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like.

The present invention relates to methods and systems for booting a client computer over a network regardless of changes in the hardware configuration of the client computer since the last time it was connected to the server. In situations wherein critical hardware components (those that operate during bootup and initial execution of the operating system) are replaced, the server recognizes the presence of such hardware components and compensates for their presence. In cases involving the replacement of an entire client computer, the server recognizes the new computer as a replacement for the original client computer and adjusts the operating system accordingly.

In order to compensate for a new computer or new or replacement hardware, a preliminary connection is established between the client computer and the server computer before the operating system boots on the client computer. The client computer and the server computer communicate to determine whether one or more critical hardware components have been changed in the client computer since the last time it was connected to the server. If new critical hardware components are included in the client computer, the server computer identifies operating system software or device drivers that are required to support the new critical hardware. The identified operating system software or device drivers are used to update the operating system associated with the client computer. Depending on the nature of the operating system and the particular changed critical hardware components, the hard disk of the client computer may be disabled during the boot process. The operating system is then downloaded over the network and boots on the client computer.

As used herein, the term "critical hardware component" is defined as any hardware component of the client computer that must be appropriately supported by device drivers or other operating system components before or during a successful boot of the operating system on the client computer. Although specific examples of critical hardware components are presented herein, the invention is not limited thereto. In particular, the identity of the critical hardware components depends largely on the operating system used with the client computer.

The term "operating system components" refers to data fields, data structures, or computer files containing operating system software, device drivers, information relating to the hardware configuration of the client computer, and the like. According to the invention, "modification" or "modifying" operating system components may include replacing, adding, removing, updating, reconfiguring, or otherwise changing one or more individual operating system components.

FIGS. 2A and 2B illustrate a network system 20 including one or more server computers 22, one or more client computers 24, and a network infrastructure 28 that establishes communication between the client computers and the server computers. Network infrastructure 28 may include cabling, transport mechanisms, routers, and other devices that establish logical connections among servers 22 and client computers 24, and other networked devices. Selected examples of replacing client computers or critical hardware components thereof are presented in FIG. 2A. In response to any of the replacement scenarios presented in FIG. 2A, servers 22 and client computers 24 are together capable of identifying the changed hardware components and modifying the operating system components with little or no user assistance.

In a first scenario, client computer 24a and the critical hardware 26a included therein remain unchanged during multiple booting operations. In a second scenario, client computer 24b, including critical hardware 26b, is replaced in its entirety with replacement client computer 24b' including critical hardware 26b'. In this case, critical hardware 26b and replacement critical hardware 26b' are of a similar or identical type. In a third scenario, client computer 24c, including critical hardware 26c, is replaced with replacement computer 24d, including critical hardware 26d. In this case, replacement critical hardware 26d is of a different type than original critical hardware 26c. In a fourth scenario, one or more critical hardware components 26e of client computer 24e are replaced with one or more critical hardware components 26f. In this case, replacement critical hardware 26f is of a different type than original critical hardware 26e.

In one implementation of the invention, each client computer 24 is assigned to one of the servers 22. Accordingly, when a client computer 24 is used in the network environment, a communication link or another logical connection is established between the client computer and the associated server. As seen in FIG. 2B, for example, client computer 24a could be assigned to server 22b. In this case, whenever client computer 24a is operated in the environment of network 20, it communicates with server 22b over network infrastructure 28. Furthermore, in this implementation, a first copy 18 of the operating system is stored at server computer 22b and a second copy 30 is stored in a client-side cache 32. During normal operation of client computer 24a in the environment of network 20, the client computer is booted over the network infrastructure 28. In other words, the first copy 18 of the operating system is sent to the client computer 24a over network infrastructure 28. The dual copies of the operating system provide flexibility to the client computers 24 of network 20. If the assigned server 22b fails or is otherwise unavailable, the second copy 30 of the operating system may be used to locally boot the client computer 24a. Likewise, in case of loss of data from the hard disk on which the second copy 30 of the operating system is stored, client computer 24a can boot over the network without the assistance of the hard disk.

The invention is further described herein by making reference to specific examples of booting an operating system on a client computer after critical hardware components have been replaced. It should be understood that the examples disclosed herein are representative, and are not intended to limit the scope of the invention. The invention is not limited to any particular operating systems, network architectures, communication protocols, or replaced hardware components.

FIGS. 3 and 4 illustrate examples of a server computer 22 and a client computer 24, respectively. For purposes of illustration, it is assumed that client computer 24 of FIG. 4 is assigned to server 22 of FIG. 3. Accordingly, server 22 of FIG. 3 provides the operating system components that are booted on client computer 24 of FIG. 4 and further provides the network processing resources needed to operate client computer 24 in the network environment.

In this embodiment, server 22 includes a server network card 34, such as those that are commonly used in the art to transmit data between server 22 and other computers or devices in the network. In addition, server 22 includes a processor 36 and various memory locations for storing device drivers, other operating system components and files, and other data associated with the client computers. Server computer 22 includes client directories 38, each of which is associated with one of the client computers that is assigned to the server computer. It is further assumed that the client directory 38 that is illustrated in detail in FIG. 3 is associated with client computer 24 of FIG. 4.

Client directory 38 contains several data files and executable files that are configured and updated to correspond with the critical hardware components included in client computer 24 during the most recent network connection of the client computer. It is noted that the s