Patent Publication Number: US-8533304-B2

Title: Remotely deploying and automatically customizing workstation images

Description:
This application is a continuation application claiming priority to Ser. No. 11/741,035, filed Apr. 27, 2007, which has been issued as U.S. Pat. No. 8,135,813. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates to a method and system for remotely deploying and automatically customizing workstation images, and more particularly to a technique for automatically customizing remotely deployed operating system images. 
     BACKGROUND 
     Conventional deployment management software is used to remotely deploy various types of workstation images (e.g., operating system images), as well as application packages. Such deployment software cannot, however, be used to customize a workstation image that has been remotely deployed. Image customization includes, for example, designating a unique workstation name, assigned printers, web browser bookmarks, and specific hosts to access for data. When a workstation image is remotely deployed using conventional software, the image is an exact copy of the donor machine from which it was created. Manual effort is required to customize the deployed image so that it is usable for a specific area to which the image was deployed. The manual configuration also requires that the person performing the customization has the proper knowledge and can follow the customization procedure exactly to ensure the system works as required. Such manual intervention is at risk for human error, which can make the resulting system inoperable. In some cases using known deployment techniques, this manual effort involves direct access to the system being customized, thereby requiring a field trip to a remote location, which defeats the purpose of remotely deploying the image. Other known cases require an excessive amount of storage space and development and maintenance effort because separate images are supported for each site. Thus, there exists a need to overcome at least one of the preceding deficiencies and limitations of the related art. 
     SUMMARY OF THE INVENTION 
     In first embodiments, the present invention provides a computer-implemented method of automatically customizing remotely deployed workstation images, the method comprising: 
     receiving, at a first partition coupled to a client workstation, a workstation image deployed from a server computing system, the workstation image originally cloned from a donor workstation and including a pre-defined customization script, the server computing system and the client workstation in communication via a network; 
     booting the client workstation via a remote boot by the server computing system on the network, wherein the client workstation is pre-configured to be booted by the server computing system via the network, the booting the client workstation via the remote boot including receiving a customization parameter by a shared partition coupled to the client workstation, the shared partition having a file system type that is accessible by the server computing system via the remote boot and by the workstation image deployed from the server computing system; and 
     rebooting the client workstation subsequent to the booting the client workstation via the remote boot, wherein the rebooting includes: 
     obtaining the customization parameter from the shared partition by the workstation image, 
     identifying, subsequent to the obtaining, the pre-defined customization script, the identifying including utilizing the customization parameter as an identifier of the pre-defined customization script, and 
     executing the pre-defined customization script, the executing resulting in an automatic and remote customization of the client workstation. 
     In second embodiments, the present invention provides a computer-implemented method of remotely deploying and automatically customizing client workstation images, the method comprising: 
     deploying, by a server computing system, a workstation image to a first partition of a client workstation, the workstation image originally cloned from a donor workstation and including a pre-defined customization script, the server computing system and the client workstation in communication via a network; and 
     remotely booting the client workstation by the server computing system on the network, wherein the client workstation is pre-configured to be booted by the server computing system via the network, the remotely booting including writing a customization parameter to a shared partition coupled to the client workstation, the shared partition having a file system type that is accessible by the server computing system via the remotely booting and by the deployed workstation image, 
     wherein the remotely booting initiates an automatic customization of the client workstation, the customization including one or more subsequent boots of the client workstation, an automatic obtaining of the customization parameter from the shared partition by the deployed workstation image, an automatic identification of the pre-defined customization script provided by the customization parameter, and an automatic execution of the pre-defined customization script. 
     Systems and computer program products corresponding to the above-summarized methods are also described herein. 
     Advantageously, the present invention provides remote deployment and automatic customization of client workstation images that allows a common workstation image to be configured to be used in a number of different environments, thereby saving time and effort during the deployment to all of the different environments. The technique disclosed herein provides for fewer images to support, store and maintain, thus lowering the overall cost of maintenance. Since the deployment and customization process of the present invention is automated, the likelihood for error is reduced. Furthermore, the present invention&#39;s utilization of a shared partition eliminates a need for any communication software to be run on the client workstation being customized, and therefore the present invention avoids compatibility and network communication problems associated with running communication software. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of a system for remotely deploying and automatically customizing workstation images, in accordance with embodiments of the present invention. 
         FIG. 2  is a flow chart of a process of remotely deploying and automatically customizing workstation images using the system of  FIG. 1 , in accordance with embodiments of the present invention. 
         FIG. 3  is a flow chart of a process of customizing a workstation image within the process of  FIG. 2 , in accordance with embodiments of the present invention. 
         FIG. 4  is an example of applying a customization task to a client workstation in the process of  FIG. 3 , in accordance with embodiments of the present invention. 
         FIG. 5A  is an example of a script that writes customization parameter information to a shared partition in the process of  FIG. 3 , in accordance with embodiments of the present invention. 
         FIG. 5B  is an example of a batch file called by the script of  FIG. 5A , in accordance with embodiments of the present invention. 
         FIG. 5C  is an example of contents of the shared partition that is written to by the script of  FIG. 5A , in accordance with embodiments of the present invention. 
         FIG. 6  is an example of a script that accesses a customization parameter in a shared partition and copies the customization parameter to a file in an operating system partition in the process of  FIG. 3 , in accordance with embodiments of the present invention. 
         FIG. 7A  is an example of a script that reads a customization parameter file in an operating system partition and initiates an embedded customization script in the process of  FIG. 3 , in accordance with embodiments of the present invention. 
         FIG. 7B  is an example of an embedded customization script initiated by the script of  FIG. 7A , in accordance with embodiments of the present invention. 
         FIG. 8  is a flow chart of an exemplary process of remotely deploying and customizing a Linux operating system image, in accordance with embodiments of the present invention. 
         FIG. 9  is a block diagram of a computing system that is included in the system of  FIG. 1  and that implements the processes of  FIGS. 2 and 3 , in accordance with embodiments of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     The present invention provides remote deployment and remote and automatic customization of cloned workstation images. The technique disclosed herein allows for configuring a common workstation image to be used in a number of heterogeneous environments. In one embodiment, the present invention provides remote deployment and remote and automatic customization of operating system images. As used herein, a workstation is defined to be an end user&#39;s computing unit in a network. A workstation may be, for example, a terminal or a desktop computer. 
     Deployment and Customization System 
       FIG. 1  is a block diagram of a system for remotely deploying and automatically customizing workstation images, in accordance with embodiments of the present invention. System  100  includes a server computing system  102  (a.k.a. server) and multiple client computing systems  104 ,  106  (a.k.a. client workstations or clients) in communication via a network  108 . Server  102  is coupled to one or more data repositories (e.g., one or more databases or one or more data storage units)  110  that include one or more workstation images (e.g., operating system images) and one or more sets of configuration data for customizing client workstations. In one embodiment, the configuration data includes customization information for one or more operating system images. 
     Client computing system  104  is coupled to a local data storage unit  112  (e.g., local hard disk) that includes an operating system  114  in a partition of local storage  112  and a shared partition  116 . Similarly, client computing system  106  is coupled to local data storage unit  118  (e.g., local hard disk) that includes an operating system  120  in a partition of local storage  118  and a shared partition  122 . Operating systems  114  and  120  may be the same or different operating systems. 
     Server computing system  102  executes deployment manager software  124  and imaging software  126 . Imaging software  126  gathers information from a donor workstation (not shown) to determine the structure of an image (e.g., operating system image) to be deployed to a client computing system, along with how to take the image and how to store the image. Imaging software  126  also deploys the image (i.e., writes out the image) to a client computing system. 
     Deployment manager software  124  includes scripts that use the Pre-boot Execution Environment (PXE) to set up customization files on client computing systems  104  and  106 . Deployment manager software  124  is, for example, Remote Deployment Manager (RDM) software working in conjunction with IBM Director. IBM Director is a suite of software tools that provide tracking of hardware configurations of remote systems and monitor the usage and performance of critical components in the remote systems. RDM facilitates deployment tasks such as initial operating system installation, Basic Input/Output System (BIOS) updates, and disposal of retired systems. IBM Director and RDM operate in a client-server environment and are offered by International Business Machines Corporation of Armonk, N.Y. 
     Shared partition  116  is a file system space of local storage  112  that is accessed (i.e., read from and written to) by both operating system  114  and deployment manager software  124 . Similarly, shared partition  122  is a file system space of local storage  118  that is accessed by both operating system  120  and deployment manager  124 . In one embodiment, shared partitions  116  and  122  are File Allocation Table (FAT) partitions. To provide the aforementioned common access to the shared partitions, deployment manager  124  and operating systems  114  and  120  are required to support the same file system type. In one embodiment, deployment manager  124  and operating systems  114  and  120  support the FAT file system type. 
     In one embodiment, each client computing system of system  100  is identified by a unique serial number. For example, IBM Director identifies each client computing system by the client&#39;s unique serial number. In order to perform the automated customization disclosed herein, each of the multiple client computing systems  104 ,  106  are configured to boot from the network (i.e., configured to be booted by server  102  via network  108 ). In one embodiment, configuring a client computing system to boot from the network is performed by setting “Network” as the first boot device in the client&#39;s BIOS. When a client boots from the network, deployment manager  124  responds by using the Pre-boot Execution Environment (PXE) to boot the client to a Disk Operating System (DOS) operating system environment. It is in this DOS environment in which DOS software tools are available to perform specific functions. One of these DOS software tools is the LCCUSTOM application, which replaces DOS environment variables within a file with values specified in deployment manager  124  by the person administering the deployment of the donor image. The function of LCCUSTOM in the deployment and customization process is described in more detail below. 
     Deployment and Customization Process 
       FIG. 2  is a flow chart of a process of remotely deploying and automatically customizing workstation images using the system of  FIG. 1 , in accordance with embodiments of the present invention. The process of remotely deploying and automatically customizing a workstation image starts at step  200 . In step  202 , imaging software  126  (see  FIG. 1 ) clones a donor workstation to obtain (i.e., capture) a workstation image (i.e., a donor image) which is stored in the images repository  110  (see  FIG. 1 ). 
     In one embodiment, the workstation image obtained in step  202  is an operating system image where the operating system supports the FAT file system type. Therefore, prior to step  202 , a formatted FAT partition (a.k.a. DOS partition) is configured in the original donor workstation image. A text file and a batch file are included within this DOS partition. Furthermore, customization scripts are pre-defined and embedded in the donor workstation image prior to step  202 . 
     For example, in step  202 , imaging software  126  (see  FIG. 1 ) determines the structure of an operating system image residing on a donor workstation and obtains the operating system image. In step  204 , imaging software  126  (see  FIG. 1 ) retrieves the donor image stored in images repository  110  (see  FIG. 1 ) in step  202  and deploys the donor image to one or more client workstations  104 ,  106  (see  FIG. 1 ). 
     As one example, Powerquest DeployCenter® is used to capture and deploy a donor workstation image in steps  202  and  204 . Powerquest DeployCenter® is offered by Symantec Corporation of Cupertino, Calif. In this example, the RDM software utilizes a Deploy Task that is created and configured so that Powerquest DeployCenter® knows which image to deploy to the client workstation. 
     In step  206 , deployment manager  124  (see  FIG. 1 ) retrieves customization information (a.k.a. configuration data) from configurations  110  (see  FIG. 1 ) and sends the customization information to one or more client workstations  104 ,  106  (see  FIG. 1 ). Although not shown in  FIG. 2 , the one or more client workstations  104 ,  106  (see  FIG. 1 ) receive the customization information subsequent to step  206 . 
     In step  208 , a client workstation  104  or  106  (see  FIG. 1 ) boots up, utilizes the customization information received subsequent to step  206 , and customizes itself based on the received customization information. In one embodiment, during the customization process of step  208 , the batch file included in the aforementioned DOS partition configured prior to step  202  is executed, which then triggers execution of the LCCUSTOM application. The execution of the LCCUSTOM application modifies the aforementioned text file with the value specified in the customization task parameters, as described below. The text file is copied and renamed (e.g. renamed as CUSTOM), as described below relative to  FIG. 3 . The process of remotely deploying and automatically customizing client workstation images ends at step  210 . 
       FIG. 3  is a flow chart of a process of customizing a workstation image within the process of  FIG. 2 , in accordance with embodiments of the present invention. It should be noted that in the description of  FIG. 3  and the descriptions of the figures that follow, references to client workstation  104  (see  FIG. 1 ) can be replaced with references to client workstation  106  (see  FIG. 1 ). Similarly, any references to operating system partition  114  and shared partition  116  of  FIG. 1  can be replaced with, respectively, operating system partition  120  and shared partition  122  of  FIG. 1 . 
     The workstation image customization process begins at step  300 . In step  302 , customization information is entered into the configurations repository  110  (see  FIG. 1 ) by, for example, an administrator. The customization information includes the deployment manager customization task (also referred to herein simply as “customization task”). Entering the customization information is also referred to herein as configuring the deployment manager customization task. The customization information entered in step  302  is to be transferred to shared partition  116  (see  FIG. 1 ) and is to be read by operating system partition  114  (see  FIG. 1 ) of client workstation  104  (see  FIG. 1 ). In one embodiment, the customization task is generated as a batch file. As one example, the batch file is a Customize Task created by the RDM software. The Customize Task is executed on a client only after an image has been deployed using the Deploy Task. Customize Task includes User Parameters that allow the user to define the type of customization to be performed on the client. 
     Step  208  of  FIG. 2  utilizes the customization information entered in step  302  to customize a client workstation. In one embodiment, step  302  is completed prior to deployment steps  202  and  204  of the process of  FIG. 2 . 
     In step  304 , deployment manager  124  applies the customization task entered in step  302  to client workstation  104  (see  FIG. 1 ). In one embodiment, step  304  includes assigning the customization task to a particular serial number of the client workstation. Step  304  may be completed prior to deployment steps  202  and  204  of the process of  FIG. 2 . 
     In step  306 , via a remote boot, deployment manager  124  (see  FIG. 1 ) boots the client workstation to which the customization task was assigned in step  304 . Furthermore, in step  306  deployment manager  124  (see  FIG. 1 ) writes to shared partition  116  (see  FIG. 1 ) customization parameter information that includes a customization parameter name (a.k.a. customization parameter) that identifies a pre-defined customization script. In one embodiment, the value of the customization parameter is a name of the pre-defined customization script. In another embodiment, the customization parameter includes a reference to the pre-defined customization script. The pre-defined customization script identified by the customization parameter information is described in more detail below relative to step  312 . 
     As one example, if the deployment manager assigns the customization task to the serial number of client workstation  104  (see  FIG. 1 ) in step  304 , then the deployment manager writes the customization parameter information to shared partition  116  (see  FIG. 1 ) in step  306 . In one embodiment, the deployment manager utilizes the customization task described above relative to step  304  to perform the actions of step  306 . 
     Since client workstation  104  (see  FIG. 1 ) has the network set as the first boot device in the client workstation&#39;s BIOS, deployment manager  124  (see  FIG. 1 ) responds to the reboot of client workstation  104  (see  FIG. 1 ) in step  306  by utilizing an environment to bootstrap the client workstation independent of data storage devices (e.g., hard disks) local to the client workstation and independent of operating systems installed on the client workstation. In one embodiment, deployment manager  124  (see  FIG. 1 ) utilizes a PXE to boot the client workstation to a DOS operating system (i.e., the client workstation downloads an image of a DOS operating system via a PXE boot). The use of the PXE boot also allows client workstation  104  (see  FIG. 1 ) to boot up microcode that permits communication with server  102  (see  FIG. 1 ). This client-server communication permitted by the PXE boot allows server  102  (see  FIG. 1 ) to direct the writing of the customization parameter information to shared partition  116  (see  FIG. 1 ) as long as step  304  assigned the customization task to client workstation  104  (see  FIG. 1 ). After the customization parameter information is written to shared partition  116  (see  FIG. 1 ) by deployment manager  124  (see  FIG. 1 ), server  102  (see  FIG. 1 ) terminates the PXE-based communication with client workstation  104  (see  FIG. 1 ). 
     In one embodiment, a manual intervention at server  102  (see  FIG. 1 ) initiates the step  306  PXE boot. In another embodiment, the PXE boot of step  306  occurs automatically upon a reboot or a powering on of the client workstation after a date and/or time that is scheduled in advance at server  102  (see  FIG. 1 ). 
     In step  308 , client workstation  104  (see  FIG. 1 ) performs its initial reboot subsequent to the boot of step  306 . Instead of the remote boot used in step  306 , the reboot of step  308  is a local boot (i.e., the boot utilizes a data storage device local to the client workstation and/or an installed operating system local to the client workstation). During the reboot of the client workstation in step  308 , an execution of a startup script residing on the client workstation automatically accesses the customization parameter information including the pre-defined customization script name that had been written to shared partition  116  (see  FIG. 1 ) in step  306 . In step  310 , an execution of a script (e.g., the startup script of step  308 ) automatically copies the customization parameter information including the pre-defined customization script name accessed in step  308  to a customization parameter file in operating system partition  114  (see  FIG. 1 ). 
     In one embodiment, the execution of the startup script in steps  308  and  310  mounts the DOS partition and copies the text file (e.g., CUSTOM text file) modified by the LCCUSTOM application to operating system partition  114  (see  FIG. 1 ). The DOS partition is then unmounted and the boot process continues. 
     In step  312 , an execution of a script (e.g., a script separate from the startup script of step  308 ) residing on client workstation  104  (see  FIG. 1 ) automatically reads the customer parameter file of step  310  and automatically initiates execution of a corresponding customization script embedded in operating system partition  114  (see  FIG. 1 ). The execution of the corresponding customization script automatically customizes client workstation  104  (see  FIG. 1 ). In one embodiment, the execution of the corresponding customization script is initiated only after a local boot of the client workstation in step  312  determines the existence of a text file (e.g., the CUSTOM text file) that includes the customization parameter information (e.g., the name of the corresponding customization script) copied in step  310 . 
     The corresponding customization script of step  312  is included in a set of one or more customization scripts that are pre-defined in the operating system of the donor workstation prior to step  202  of  FIG. 2 . Each customization script provides a unique set of configuration parameters to configure any of the multiple client workstations in system  100  (see  FIG. 1 ), thereby allowing a single donor workstation operating system image to be deployed to multiple client workstations while also allowing any number of the client workstations to be configured differently. This set of one or more pre-defined customization scripts are deployed to client workstation  104  (see  FIG. 1 ) in step  204  of  FIG. 2 . The name of the pre-defined customization script that is written to the shared partition in step  306  identifies which of the pre-defined customization scripts is the corresponding customization script initiated in step  312 . 
     In one embodiment, step  312  is performed in response to a local boot of the client workstation that is subsequent to the step  308  reboot. In another embodiment, step  312  is performed in response to the reboot included in step  308 . 
     In step  314 , the customization parameter file to which the customization parameter information was copied in step  310  is deleted. The process of customizing a client workstation image ends at step  316 . 
     In another embodiment, steps  310  and  314  are not included in the customization process of  FIG. 3 , the operating system partition  114  (see  FIG. 1 ) reads the customization parameter information in shared partition  116  (see  FIG. 1 ) without requiring the copying of the customization parameter information into a customization parameter file, and the reading of the customization parameter information is flagged so that subsequent reboots of client workstation  104  (see  FIG. 1 ) avoid initiating further customization using the customization parameter information. 
     EXAMPLES 
       FIGS. 4 ,  5 A- 5 C,  6 ,  7 A- 7 B and  8  include examples of specific scripts, files, screen displays, and detailed method steps that may be used to implement the deployment and customization processes described above. It should be noted that  FIGS. 4 ,  5 A- 5 C,  6 ,  7 A- 7 B and  8  are examples only, and the present invention contemplates other implementations of the deployment and customization process of  FIGS. 2 and 3 . 
       FIG. 4  is an example of a screen display  400  in which a customization task is applied to a client workstation in step  304  of  FIG. 3 . Screen display  400  illustrates the assignment of a customization parameter to a client workstation having serial number 6579A4U-78VRCAD. The customization parameter assignment is associated with a customization task that sets up the client workstation as a “windsor” workstation. 
       FIGS. 5A-5C  depict examples of code used in performing step  306  of  FIG. 3 .  FIG. 5A  is an example of a script  500  that is executed by deployment manager  124  (see  FIG. 1 ) in shared partition  116  (see  FIG. 1 ) during the reboot portion of step  306  (see  FIG. 3 ). The config.var file included in script  500  includes a % CONFIG % variable. 
       FIG. 5B  is an example  550  including a batch file (i.e., linuxcfg.bat) called by script  500  of  FIG. 5A  in step  306  (see  FIG. 3 ). For instance, the batch file exists within shared partition  116  (see  FIG. 1 ). In the example of  FIG. 5B , the batch file is the customization task utilized during step  306  (see  FIG. 3 ) and replaces the % CONFIG % variable in the config.var file. In the example of  FIG. 5B , the LCCUSTOM program provided by Remote Deployment Manager software takes the value of the customization parameter entered in the customization task and replaces the % CONFIG % variable in config.var with the customization parameter value. 
     In one embodiment, the batch file of  FIG. 5B  is initially generated via the creation of the donor workstation image. In another embodiment, the batch file of  FIG. 5B  is copied to the shared partition by the deployment manager software in an action that is separate from step  204  of  FIG. 2 . 
       FIG. 5C  is an example of contents  580  of shared partition  116  (see  FIG. 1 ) that is written to by script  500  of  FIG. 5A  in step  306  of  FIG. 3 . Contents  580  include files located in shared partition  116  (see  FIG. 1 ). The config.var file included in contents  580  includes the variable (i.e., % CONFIG %) that is replaced during step  306  of  FIG. 3 . 
       FIG. 6  is an example of a script  600  whose execution accesses a customization parameter in a shared partition and copies the customization parameter to a file in an operating system partition in steps  308  and  310 , respectively (see  FIG. 3 ). The first line of script  600  corresponds to step  308  (see  FIG. 3 ) and illustrates how shared partition  116  (see  FIG. 1 ) is mounted as a Microsoft® Disk Operating System (MS-DOS®) partition. The −t argument is used to specify the file system type. The if statement of script  600  checks for the existence of a “custom” file that includes the customization parameter information. If the custom file exists, the cat command in script  600  copies the contents of the custom file from shared partition  116  (see  FIG. 1 ) to a customization parameter file on operating system partition  114  (see  FIG. 1 ). In the example of  FIG. 6 , the customization parameter file on partition  114  (see  FIG. 1 ) is also named “custom.” 
       FIG. 7A  is an example of a script  700  that reads a customization parameter file in an operating system partition and initiates an embedded customization script in step  312  of  FIG. 3 . Script  700  is executed as part of the normal boot process of client workstation  104  (see  FIG. 1 ). Script  700  determines whether the customization parameter file (i.e., the “custom” file) exists on operating system partition  114  (see  FIG. 1 ). If the custom file does exist on operating system partition  114  (see  FIG. 1 ), then the content of the custom file is used to execute the corresponding embedded pre-defined customization script. 
       FIG. 7B  is an example  750  illustrating a list of customization scripts embedded in the donor image. This list of embedded customization scripts is included after the is command. Example  750  also includes one particular embedded customization script (i.e., “c 4 ”) initiated by script  700  of  FIG. 7A . In the example of  FIG. 7B , the embedded customization script c 4  modifies the bookmarks viewable in a user&#39;s browser window. 
       FIG. 8  is a flow chart of an exemplary process of remotely deploying and customizing a Linux operating system image, in accordance with embodiments of the present invention. The Linux image deployment and customization process begins at step  800 . In step  802 , a Linux operating system image is cloned with a DOS partition (e.g., shared partition  116  of  FIG. 1 ) containing a config.var file, which includes only a % CONFIG % user variable. In step  804 , one or more custom tasks and one or more customization scripts are generated. These generated custom tasks and customization scripts are for running the deployment process and for configuring the Linux operating system image. In step  806 , the donor workstation image is scanned into deployment manager  124  (see  FIG. 1 ). Steps  802 ,  804  and  806  can be performed in parallel, and their completion is followed by step  808 . 
     In step  808 , a deployment script for the donor workstation is assigned to a client workstation to be built. In the example of  FIG. 8 , the user variable CONFIG is configured to equal WINDSOR. In the example of  FIG. 8 , WINDSOR is the name of a pre-defined customization script embedded in the donor workstation image. Step  808  corresponds to step  304  of  FIG. 3 . 
     In step  810 , the client workstation is rebooted by server  102  (see  FIG. 1 ), causing deployment manager  124  (see  FIG. 1 ) to deploy and customize the Linux operating system image by running LCCUSTOM to substitute the value of % CONFIG % into the config.var file. The config.var file is then copied into a file named CUSTOM in the DOS partition. Step  810  corresponds to step  306  of  FIG. 3 . 
     In step  812 , upon the first reboot of the client workstation after the deployment in step  810 , RC.LOCAL calls another customization script (i.e., SETHOST), which copies CUSTOM from the DOS partition to a Linux operating system partition (e.g., partition  114  of  FIG. 1 ). RC.LOCAL is one of the files called when the Linux operating system starts. Step  812  corresponds to steps  308  and  310  of  FIG. 3 . 
     Upon a boot of the client workstation subsequent to step  812 , a script executed by the client workstation determines in step  814  whether CUSTOM exists in the Linux operating system partition. If step  814  determines that CUSTOM exists, the contents of CUSTOM are used as the name of a script to be executed. In the example of  FIG. 8 , CUSTOM exists and includes WINDSOR. Therefore, the client workstation executes the pre-defined customization script named WINDSOR to customize the client workstation. Step  814  corresponds to step  312  of  FIG. 3 . 
     After the execution of the WINDSOR script in step  814 , CUSTOM is deleted from the Linux operating system partition in an action that corresponds to step  314  of  FIG. 3 . In step  816 , upon reboots of the client workstation subsequent to step  814 , the client workstation&#39;s checks for the existence of CUSTOM do not locate CUSTOM, and therefore no further customization is performed. The example process of  FIG. 8  ends at step  818 . 
     Computing System 
       FIG. 9  is a block diagram of a server computing system  102  and a client computing system  104  that are included in the system of  FIG. 1  and that implement the processes of  FIGS. 2 and 3 , in accordance with embodiments of the present invention. Computing systems  102  and  104  are in communication with each other via network  108 . Server computing system  102  is suitable for storing and/or executing program code of a remote deployment and customization system  914 , and generally comprises a central processing unit (CPU)  902 , a memory  904 , an input/output (I/O) interface  906 , a bus  908 , I/O devices  910  and a storage unit  110 . CPU  902  performs computation and control functions of server computing system  102 . CPU  902  may comprise a single processing unit, or be distributed across one or more processing units in one or more locations (e.g., on a client and server). In one embodiment, steps  202 - 206  of  FIG. 2  and steps  302 - 306  of  FIG. 3  are performed by the execution of logic residing in remote deployment and customization system  914 . 
     Local memory elements of memory  904  are employed during actual execution of the program code for remote deployment and customization system  914 . Cache memory elements of memory  904  provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Further, memory  904  may include other systems not shown in  FIG. 9 , such as an operating system (e.g., Linux) that runs on CPU  902  and provides control of various components within and/or connected to server computing system  102 . 
     Memory  904  may comprise any known type of data storage and/or transmission media, including bulk storage, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), a data cache, a data object, etc. Storage unit  110  is, for example, a magnetic disk drive or an optical disk drive that stores data. Moreover, similar to CPU  902 , memory  904  may reside at a single physical location, comprising one or more types of data storage, or be distributed across a plurality of physical systems in various forms. Further, memory  904  can include data distributed across, for example, a LAN, WAN or storage area network (SAN) (not shown). 
     I/O interface  906  comprises any system for exchanging information to or from an external source. I/O devices  910  comprise any known type of external device, including a display monitor, keyboard, mouse, printer, speakers, handheld device, printer, facsimile, etc. Bus  908  provides a communication link between each of the components in computing unit  102 , and may comprise any type of transmission link, including electrical, optical, wireless, etc. 
     I/O interface  906  also allows server computing system  102  to store and retrieve information (e.g., program instructions or data) from an auxiliary storage device (e.g., storage unit  110 ). The auxiliary storage device may be a non-volatile storage device (e.g., a CD-ROM drive which receives a CD-ROM disk). Server computing system  102  can store and retrieve information from other auxiliary storage devices (not shown), which can include a direct access storage device (DASD) (e.g., hard disk or floppy diskette), a magneto-optical disk drive, a tape drive, or a wireless communication device. 
     Client computing system (i.e., client workstation)  104  is suitable for storing and/or executing program code of a system  1014  for customizing client workstation  104 , and generally comprises a CPU  1002 , a memory  1004 , an I/O interface  1006 , a bus  1008 , I/O devices  1010  and a storage unit  112 , which have functions and features analogous, respectively, to CPU  902 , memory  904 , I/O interface  906 , bus  908 , I/O devices  910  and storage unit  110 , as described above. In one embodiment, step  208  of  FIG. 2  and steps  308 - 314  of  FIG. 3  are performed by the execution of logic residing in customization system  1014 . 
     The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. 
     Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for remote deployment and customization of workstation images for use by or in connection with a computing unit  102  or any instruction execution system to provide and facilitate the capabilities of the present invention. For the purposes of this description, a computer-usable or computer-readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. 
     The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, RAM  904 , ROM, a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read-only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD. 
     The flow diagrams depicted herein are provided by way of example. There may be variations to these diagrams or the steps (or operations) described herein without departing from the spirit of the invention. For instance, in certain cases, the steps may be performed in differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the present invention as recited in the appended claims. 
     While embodiments of the present invention have been described herein for purposes of illustration, many modifications and changes will become apparent to those skilled in the art. Accordingly, the appended claims are intended to encompass all such modifications and changes as fall within the true spirit and scope of this invention.