IP Library Granted Patent US 6,954,852
Granted Patent B2
US 6,954,852 · App. 10/125,265 · Granted Oct 11, 2005

System for and method of network booting of an operating system to a client computer using hibernation

Assignee: Ardence, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 6,954,852
App. No.
10/125,265
Granted
Oct 11, 2005
Kind
B2
Abstract

A system for and method of network booting of an operating system (O/S) on one or more client devices, such as personal computers (PC's), employing a hibernation image. Remote booting of sets of client devices is facilitated by employing virtual disk emulation and, in certain preferred embodiments, broadcasting or multicasting of data residing on a network server which is necessary to appropriately boot and configure the one or more client devices, the data including hibernation, O/S and application files.

Claims (164)

1. A method of of booting an operating system (O/S) to one or more client computers from a server in a network, the server storing a hibernation image and communicating with the one or more client computers through one or more client interfaces, the hibernation image having O/S files for the client computer, the method comprising the steps of:

issuing a first set of one or more requests to the server to download contents of a first set of sectors residing on the server, wherein:

the first set of sectors collectively store a hibernation file which contains the hibernation image; and

the server emulates, in response to the first set of one or more requests, behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the hibernation file are accessed by the server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download, and wherein the request issuing step further comprises the steps of:

generating a second set of one or more requests, to the server, by executing emulation code and client disk access interrupt handler procedures resident on the one or more client computers, to download a second set of sectors that collectively comprise a boot file such that the one or more client computers receive the boot file from the server;

executing the boot file and the client disk access interrupt handler procedures, at each of the one or more client computers, so as to generate a third set of one or more requests to the server, to download a third set of sectors collectively storing an O/S boot file containing O/S drivers, wherein the server emulates behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the third set of sector are accessed by the server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download,

executing the O/S boot file, once the O/S boot file is downloaded from the server, so as to subsequently generate the first set of one or more requests such that the one or more client computers receive, on a sector-by-sector basis from the server, the transmitted contents of the first set of sectors that collectively comprise the hibernation image file;

storing the contents of each of the sectors received from the server on each of the one or more client computers;

resuming operation of the O/S of the one or more client computers in a usable state through the steps, on each client computer, of:

restoring the hibernation image into client memory; and

initializing drivers, data structures and applications associated with the O/S,

locally booting a client computer;

saving one or more initialization files into the client computer's memory;

configuring the client computer to a desired state;

hibernating the configured client computer, thereby generating a hibernation file; and

storing the hibernation file on the server.

2. The method of claim 1 , wherein the emulation code is PXE code residing on each client computer's network interface.

3. A method of booting an operating system (O/S) to one or more client computers from a server in a network, the server storing a hibernation image and communicating with the one or more client computers through one or more client interfaces, the hibernation image having O/S files for the client computer, the method comprising the steps of:

issuing a first set of one or more requests to the server to download contents of a first set of sectors residing on the server, wherein:

the first set of sectors collectively store a hibernation file which contains the hibernation image; and

the server emulates, in response to the first set of one or more requests, behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the hibernation file are accessed by the server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download, and wherein the request issuing step further comprises the steps of:

generating a second set of one or more requests, to the server, by executing emulation code and client disk access interrupt handler procedures resident on the one or more client computers, to download a second set of sectors that collectively comprise a boot file such that the one or more client computers receive the boot file from the server,

executing the boot file and the client disk access interrupt handler procedures, at each of the one or more client computers, so as to generate a third set of one or more requests to the server, to download a third set of sectors collectively storing an O/S boot file containing O/S drivers, wherein the server emulates behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the third set of sector are accessed by the server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download,

executing the O/S boot file, once the O/S boot file is downloaded from the server, so as to subsequently generate the first set of one or more requests such that the one or more client computers receive, on a sector-by-sector basis from the server, the transmitted contents of the first set of sectors that collectively comprise the hibernation image file;

storing the contents of each of the sectors received from the server on each of the one or more client computers;

resuming operation of the O/S of the one or more client computers in a usable state through the steps, on each client computer, of:

restoring the hibernation image into client memory; and

initializing drivers, data structures and applications associated with the O/S,

wherein transmitting the third set of sectors collectively storing an O/S boot file further comprises the steps of:

registering, during an invitation phase, the one or more client computers requesting the O/S boot file download; and

multicasting, on a sector-by-sector basis, sectors to the one or more registered client computers, while designating in round-robin fashion in each round a different registered client from which the server will accept a request for the next sector, until all sectors of the third set of sectors have been multicast.

4. A method of booting an operating system (O/S) to one or more client computers from a server in a network, the server storing a hibernation image and communicating with the one or more client computers through one or more client interfaces, the hibernation image having O/S files for the client computer, the method comprising the steps of:

issuing a first set of one or more requests to the server to download contents of a first set of sectors residing on the server, wherein:

the first set of sectors collectively store a hibernation file which contains the hibernation image; and

the server emulates, in response to the first set of one or more requests, behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the hibernation file are accessed by the server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download, and wherein the request issuing step further comprises the steps of:

generating a second set of one or more requests, to the server, by executing emulation code and client disk access interrupt handler procedures resident on the one or more client computers, to download a second set of sectors that collectively comprise a boot file such that the one or more client computers receive the boot file from the server,

executing the boot file and the client disk access interrupt handler procedures, at each of the one or more client computers, so as to generate a third set of one or more requests to the server, to download a third set of sectors collectively storing an O/S boot file containing O/S drivers, wherein the server emulates behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the third set of sector are accessed by the server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download,

executing the O/S boot file, once the O/S boot file is downloaded from the server, so as to subsequently generate the first set of one or more requests such that the one or more client computers receive, on a sector-by-sector basis from the server, the transmitted contents of the first set of sectors that collectively comprise the hibernation image file;

storing the contents of each of the sectors received from the server on each of the one or more client computers;

resuming operation of the O/S of the one or more client computers in a usable state through the steps, on each client computer, of:

restoring the hibernation image into client memory; and

initializing drivers, data structures and applications associated with the O/S,

wherein transmitting the third set of sectors collectively storing an O/S boot file further comprises the steps of:

registering, during an invitation phase, the one or more client computers requesting the O/S boot file download; and

broadcasting, on a sector-by-sector basis, sectors to the one or more registered client computers, while designating in round-robin fashion in each round a different registered client from which the server will accept a request for the next sector, until all sectors of the third set of sectors have been broadcast.

5. The method of claim 3 , further comprising the step of

each client individually requesting retransmission of any sectors of the third set of sectors not received.

6. A method of booting an operating system (O/S) to one or more client computers from a server in a network, the server storing a hibernation image and communicating with the one or more client computers through one or more client interfaces, the hibernation image having O/S files for the client computer, the method comprising the steps of:

issuing a first set of one or more requests to the server to download contents of a first set of sectors residing on the server, wherein:

the first set of sectors collectively store a hibernation file which contains the hibernation image; and

the server emulates, in response to the first set of one or more requests, behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the hibernation file are accessed by the server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download, and wherein the request issuing step further comprises the steps of:

generating a second set of one or more requests, to the server, by executing emulation code and client disk access interrupt handler procedures resident on the one or more client computers, to download a second set of sectors that collectively comprise a boot file such that the one or more client computers receive the boot file from the server,

executing the boot file and the client disk access interrupt handler procedures, at each of the one or more client computers, so as to generate a third set of one or more requests to the server, to download a third set of sectors collectively storing an O/S boot file containing O/S drivers, wherein the server emulates behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the third set of sector are accessed by the server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download,

executing the O/S boot file, once the O/S boot file is downloaded from the server, so as to subsequently generate the first set of one or more requests such that the one or more client computers receive, on a sector-by-sector basis from the server, the transmitted contents of the first set of sectors that collectively comprise the hibernation image file;

storing the contents of each of the sectors received from the server on each of the one or more client computers;

resuming operation of the O/S of the one or more client computers in a usable state through the steps, on each client computer, of:

restoring the hibernation image into client memory; and

initializing drivers, data structures and applications associated with the O/S,

wherein transmitting the first set of sectors collectively storing the hibernation file further comprises the steps of:

registering, during an invitation phase, the one or more client computers requesting the hibernation file download; and

multicasting, on a sector-by-sector basis, sectors from the server to the one or more registered client computers, while designating in round-robin fashion in each round a different registered client from which the server will accept a request for the next sector, until all sectors of the first set of sectors have been multicast.

7. A method of booting an operating system (O/S) to one or more client computers from a server in a network, the server storing a hibernation image and communicating with the one or more client computers through one or more client interfaces, the hibernation image having O/S files for the client computer, the method comprising the steps of:

issuing a first set of one or more requests to the server to download contents of a first set of sectors residing on the server, wherein:

the first set of sectors collectively store a hibernation file which contains the hibernation image; and

the server emulates, in response to the first set of one or more requests, behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the hibernation file are accessed by the

server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download, and wherein the request issuing step further comprises the steps of:

generating a second set of one or more requests, to the server, by executing emulation code and client disk access interrupt handler procedures resident on the one or more client computers, to download a second set of sectors that collectively comprise a boot file such that the one or more client computers receive the boot file from the server,

executing the boot file and the client disk access interrupt handler procedures, at each of the one or more client computers, so as to generate a third set of one or more requests to the server, to download a third set of sectors collectively storing an O/S boot file containing O/S drivers, wherein the server emulates behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the third set of sector are accessed by the server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download,

executing the O/S boot file, once the O/S boot file is downloaded from the server, so as to subsequently generate the first set of one or more requests such that the one or more client computers receive, on a sector-by-sector basis from the server, the transmitted contents of the first set of sectors that collectively comprise the hibernation image file;

storing the contents of each of the sectors received from the server on each of the one or more client computers;

resuming operation of the O/S of the one or more client computers in a usable state through the steps, on each client computer, of:

restoring the hibernation image into client memory; and

initializing drivers, data structures and applications associated with the O/S,

wherein transmitting the first set of sectors collectively storing the hibernation file further comprises the steps of:

registering, during an invitation phase, the one or more client computers requesting the hibernation file download; and

broadcasting, on a sector-by-sector basis, sectors from the server to the one or more registered client computers, while designating in round-robin fashion in each round a different registered client from which the server will accept a request for the next sector, until all sectors of the first set of sectors have been broadcast.

8. The method of claim 6 , further comprising the step of each client individually acknowledging receipt of each of the sectors collectively storing the hibernation file or requesting retransmission of any sectors of the first set of sectors not received.

9. The method of claim 3 ,

wherein the multicast sectors are multicast to the registered client computers according to a sequence specified in a sector sequence file residing on the server; and

wherein if no sector sequence file resides on the server, the server learns a new sector sequence file by:

selecting a single registered client,

booting the selected client while recording to a sector sequence file an ordered list of sectors requested by the selected client during booting, and

using the learned sector sequence file to multicast the plurality of sectors to the non-selected registered clients.

10. The method of claim 4 ,

wherein the broadcast sectors are broadcast to the registered client computers according to a sequence specified in a sector sequence file residing on the server; and

wherein if no sector sequence file resides on the server, the server learns a new sector sequence file by:

selecting a single registered client,

booting the selected client while recording to a sector sequence file an ordered list of sectors requested by the selected client during booting, and

using the learned sector sequence file to broadcast the plurality of sectors to the non-selected registered clients.

11. The method of claim 1 , wherein the O/S drivers include a network filter driver and a storage driver enabling server emulation.

12. A method of booting an operating system (O/S) to one or more client computers from a server in a network, the server storing a hibernation image and communicating with the one or more client computers through one or more client interfaces, the hibernation image having O/S files for the client computer, the method comprising the steps of:

issuing a first set of one or more requests to the server to download contents of a first set of sectors residing on the server, wherein:

the first set of sectors collectively store a hibernation file which contains the hibernation image; and

the server emulates, in response to the first set of one or more requests, behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the hibernation file are accessed by the server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download, and wherein the request issuing step further comprises the steps of:

generating a second set of one or more requests, to the server, by executing emulation code and client disk access interrupt handler procedures resident on the one or more client computers, to download a second set of sectors that collectively comprise a boot file such that the one or more client computers receive the boot file from the server,

executing the boot file and the client disk access interrupt handler procedures, at each of the one or more client computers, so as to generate a third set of one or more requests to the server, to download a third set of sectors collectively storing an O/S boot file containing O/S drivers, wherein the server emulates behavior of a disk drive on the one or more client computers such that the contents of individual sectors of the third set of sector are accessed by the server in a predetermined manner from a disk drive associated with the server and transmitted, via the network, to the one or more client computers requesting the download,

executing the O/S boot file, once the O/S boot file is downloaded from the server, so as to subsequently generate the first set of one or more requests such that the one or more client computers receive, on a sector-by-sector basis from the server, the transmitted contents of the first set of sectors that collectively comprise the hibernation image file;

storing the contents of each of the sectors received from the server on each of the one or more client computers;

resuming operation of the O/S of the one or more client computers in a usable state through the steps, on each client computer, of:

restoring the hibernation image into client memory; and

initializing drivers, data structures and applications associated with the O/S,

wherein the O/S drivers include a network filter driver and a storage driver enabling server emulation; and

wherein the initializing step further comprises the steps of:

queueing by the storage driver all client read and write requests into previously allocated memory;

reading one or more initialization or system files contained in the hibernation file from client memory;

initializing the network filter driver or any other required drivers to accept client read and write requests; and

dequeueing by the storage driver all client read and write requests.

13. The method of claim 1 , wherein the request issuing step further comprises the step of:

obtaining, from a second server, an address of the hibernation file stored on the first server.

14. The method of claim 13 , wherein the server and second server are the same server or different servers connected to the network.

15. A method of booting an operating system (O/S) to one or more client computers from a network, the network storing a hibernation image on a first server, the hibernation image having O/S files for the client computer, the method comprising the steps of:

issuing a first set of one or more requests, through the execution of emulation code residing on the one or more client computer which handles client disk access operations through an interrupt handler procedure, to the first server to download an emulation code file, wherein the first server emulates behavior of a disk drive on the one or more client computers such that the emulation code file is accessed by the first server from a disk drive associated with the first server and transmitted, via the network, to the one or more client computers requesting the emulation code file;

executing the first boot sector at each of the one or more client computers thereby

issuing a second set of one or more requests to the first server to download contents of a first plurality of sectors residing on the first server, wherein the first plurality of sectors collectively store an O/S boot file, and

allowing the first server to emulate, in response to the second set of one or more requests, behavior of a disk drive on the one or more client computers such that the first plurality of sectors is accessed by the first server from a disk drive associated with the first server and transmitted, via the network, to the one or more client computers requesting the first plurality of sectors;

executing the O/S boot file at each of the one or more client computers thereby

loading an O/S loader,

issuing a third set of one or more requests to the first server to download contents of a second plurality of sectors residing on the first server, wherein the second plurality of sectors collectively store the hibernation image, and

allowing the first server to emulate, in response to the third set of one or more requests, behavior of a disk drive on the one or more client computers such that the second plurality of sectors is accessed by the first server from a disk drive associated with the first server and transmitted, via the network, to the one or more client computers requesting the second plurality of sectors;

storing the contents of each of the sectors received from the first server on each of the one or more client computers;

restoring the hibernation image into memory of each of the one or more client computers; and

resuming operation of the O/S of the one or more client computers in a usable state.

16. Apparatus for booting an operating system (O/S) to one or more client computers from a server in a network, the server storing a hibernation image and communicating with the one or more client computers through one or more client interfaces, the hibernation image having O/S files for the client computer, the apparatus comprising:

one or more client computers each having:

a processor;

a memory, in communication with the processor, for storing executable computer instructions therein;

wherein the processor, in response to the instructions:

issues a first set of one or more requests to the first server to download contents of a first set of sectors residing on the server, wherein:

the first set of sectors collectively store a hibernation file which contains the hibernation image; and

the server emulates, in response to the first set of one or more requests, behavior of a disk drive on the one or more client computers, and wherein the request issuing step further comprises the steps of:

generating a second set of one or more requests, to the server, by executing emulation code and client disk access interrupt handler procedures resident on the one or more client computers, to download a second set of sectors that collectively comprise a boot file,

executing the boot file and the client disk access interrupt handler procedures, at each of the one or more client computers, so as to generate a third set of one or more requests to the server, to download a third set of sectors collectively storing an O/S boot file containing O/S drivers, wherein the server emulates behavior of a disk drive on the one or more client computers,

executing the O/S boot file, once the O/S boot file is downloaded from the server, so as to subsequently generate the first set of one or more requests such that the one or more client computers receive, on a sector-by-sector basis from the server, the transmitted contents of the first set of sectors that collectively comprise the hibernation image file;

stores the contents of each of the sectors received from the server;

resumes operation of the O/S in a usable state through the steps, on each client computer, of:

restoring the hibernation image into client memory; and

initializing drivers, data structures and applications associated with the O/S;

locally boots a client computer;

saves one or more initialization flies into the client computer's memory;

configures the client computer to a desired state;

hibernates the configured client computer, thereby generating a hibernation file; and

stores the hibernation file on the server;

and a server having:

a server processor;

a server memory, in communication with the server processor, for storing executable computer instructions therein;

wherein the server processor, in response to the instructions:

accesses the first set of sectors in a predetermined manner from a disk drive associated with the server;

transmits via the network to the one or more client computers requesting download of the first set of sectors, after a predetermined invitation period, the first set of sectors such that the actual source of the sectors remains transparent to the one or more client computers;

accesses the second set of sectors in a predetermined manner from a disk drive associated with the server;

transmits via the network to the one or more client computers requesting download of the second set of sectors;

accesses the third set of sectors in a predetermined manner from a disk drive associated with the server; and

transmits via the network to the one or more client computers requesting download of the third set of sectors, after a predetermined invitation period, the third set of sectors such that the actual source of the sectors remains transparent to the one or more client computers.

17. The method of claim 6 ,

wherein the multicast sectors are multicast to the registered client computers according to a sequence specified in a sector sequence file residing on the server; and

wherein if no sector sequence file resides on the server, the server learns a new sector sequence file by:

selecting a single registered client,

booting the selected client while recording to a sector sequence file an ordered list of sectors requested by the selected client during booting, and

using the learned sector sequence file to multicast the plurality of sectors to the non-selected registered clients.

18. The method of claim 7 ,

wherein the broadcast sectors are broadcast to the registered client computers according to a sequence specified in a sector sequence file residing on the server; and

wherein if no sector sequence file resides on the server, the server learns a new sector sequence file by:

selecting a single registered client,

booting the selected client while recording to a sector sequence file an ordered list of sectors requested by the selected client during booting, and

using the learned sector sequence file to broadcast the plurality of sectors to the non-selected registered clients.

Assignments (10)
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
NUNC PRO TUNC ASSIGNMENT Recorded Oct 7, 2013
From: ARDENCE, INC.
To: ARDENCE DELAWARE, INC.
Reel/Frame 031357/0033 →
NUNC PRO TUNC ASSIGNMENT Recorded Dec 15, 2011
From: ARDENCE DELAWARE, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 027395/0519 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2005
From: VENTURCOM, INC.
To: ARDENCE, INC.
Reel/Frame 016823/0238 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2002
From: BUROKAS, GINT; BUNCH, KENNY; LUSINSKY, ROBERT; SANDUSKY, MARC; GARELICK, MIKE
To: VENTURCOM, INC.
Reel/Frame 012840/0573 →
Continuity (1)
Related Publication 20030208675A1 · Nov 6, 2003